H&M Capabilities

Naftiko 0.5 capability definitions for H&M - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

Retrieves payroll summary from ADP.

naftiko: "0.5"
info:
  label: "ADP Payroll Summary"
  description: "Retrieves payroll summary from ADP."
  tags:
    - hr
    - payroll
    - adp
capability:
  exposes:
    - type: mcp
      namespace: hr-payroll
      port: 8080
      tools:
        - name: get-payroll-summary
          description: "Get payroll summary."
          inputParameters:
            - name: pay_period
              in: body
              type: string
              description: "Pay period."
          call: "adp.get-payroll"
          with:
            pay_period: "{{pay_period}}"
          outputParameters:
            - name: total_gross
              type: string
              mapping: "$.payrollSummary.totalGross"
            - name: total_net
              type: string
              mapping: "$.payrollSummary.totalNet"
  consumes:
    - type: http
      namespace: adp
      baseUri: "https://api.adp.com/hr/v2"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: payroll
          path: "/payroll-outputs?payPeriod={{pay_period}}"
          inputParameters:
            - name: pay_period
              in: query
          operations:
            - name: get-payroll
              method: GET

Retrieves fashion collection calendar entries from Airtable by season.

naftiko: "0.5"
info:
  label: "Airtable Collection Calendar Lookup"
  description: "Retrieves fashion collection calendar entries from Airtable by season."
  tags:
    - product
    - airtable
capability:
  exposes:
    - type: mcp
      namespace: airtable-collections
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves fashion collection calendar entries from Airtable by season."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "airtable-collections.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: airtable-collections
      baseUri: "https://api.airtable.com/v0/appHM"
      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 templates in Google Sheets, and submits via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Annual Budget Planning Pipeline"
  description: "Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits via Microsoft Teams."
  tags:
    - finance
    - sap
    - snowflake
    - google-sheets
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: annual-budget-planning-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits via Microsoft Teams."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "sap.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "snowflake.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "google-sheets.execute-step-3"
              with:
                data: "{{step-2.result}}"
            - name: step-4
              type: call
              call: "microsoft-teams.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://api.sap.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://api.snowflake.com/v1"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: google-sheets
      baseUri: "https://api.googlesheets.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: microsoft-teams
      baseUri: "https://api.microsoftteams.com/v1"
      authentication:
        type: bearer
        token: "$secrets.microsoft_teams_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Retrieves fashion collection project status from Asana.

naftiko: "0.5"
info:
  label: "Asana Collection Project Lookup"
  description: "Retrieves fashion collection project status from Asana."
  tags:
    - project-management
    - asana
capability:
  exposes:
    - type: mcp
      namespace: asana-collections
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves fashion collection project status from Asana."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "asana-collections.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: asana-collections
      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 latest build status for an Azure DevOps pipeline.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Status"
  description: "Retrieves latest build status for an Azure DevOps pipeline."
  tags:
    - devops
    - ci-cd
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: cicd-status
      port: 8080
      tools:
        - name: get-build-status
          description: "Get latest build status."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "Azure DevOps project."
            - name: pipeline_id
              in: body
              type: string
              description: "Pipeline ID."
          call: "azdo.get-builds"
          with:
            project: "{{project_name}}"
            definition_id: "{{pipeline_id}}"
          outputParameters:
            - name: build_number
              type: string
              mapping: "$.value[0].buildNumber"
            - name: result
              type: string
              mapping: "$.value[0].result"
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://dev.azure.com/hm"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azdo_pat"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: definition_id
              in: query
          operations:
            - name: get-builds
              method: GET

Archives documents from SharePoint to Box.

naftiko: "0.5"
info:
  label: "Box Document Archive"
  description: "Archives documents from SharePoint to Box."
  tags:
    - document-management
    - archival
    - sharepoint
    - box
capability:
  exposes:
    - type: mcp
      namespace: doc-archival
      port: 8080
      tools:
        - name: archive-to-box
          description: "Archive a SharePoint document to Box."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "SharePoint site ID."
            - name: file_path
              in: body
              type: string
              description: "File path."
            - name: box_folder_id
              in: body
              type: string
              description: "Box folder ID."
          steps:
            - name: get-file
              type: call
              call: "sharepoint.get-file-content"
              with:
                site_id: "{{site_id}}"
                file_path: "{{file_path}}"
            - name: upload-to-box
              type: call
              call: "box.upload-file"
              with:
                folder_id: "{{box_folder_id}}"
                file_name: "{{file_path}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file-content
              method: GET
    - 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

Creates collaboration record in Salesforce, generates contract via DocuSign, tracks deliverables in Asana, and announces via Instagram.

naftiko: "0.5"
info:
  label: "Brand Collaboration Pipeline"
  description: "Creates collaboration record in Salesforce, generates contract via DocuSign, tracks deliverables in Asana, and announces via Instagram."
  tags:
    - partnerships
    - salesforce
    - docusign
    - asana
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: brand-collaboration-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Creates collaboration record in Salesforce, generates contract via DocuSign, tracks deliverables in Asana, and announces via 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: "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: "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: 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: 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

Tracks garment recycling and reuse metrics from SAP, calculates circularity scores, and publishes to the sustainability Confluence space.

naftiko: "0.5"
info:
  label: "Circular Fashion Garment Tracker"
  description: "Tracks garment recycling and reuse metrics from SAP, calculates circularity scores, and publishes to the sustainability Confluence space."
  tags:
    - sustainability
    - circular-fashion
    - sap
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: circular-fashion
      port: 8080
      tools:
        - name: track-circularity
          description: "Track garment circularity metrics and publish report."
          inputParameters:
            - name: collection
              in: body
              type: string
              description: "Collection name."
            - name: period
              in: body
              type: string
              description: "Reporting period."
          steps:
            - name: get-circularity
              type: call
              call: "sap.get-circularity-metrics"
              with:
                collection: "{{collection}}"
                period: "{{period}}"
            - name: publish-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "ESG"
                title: "Circularity Report: {{collection}} - {{period}}"
                body: "Recycled materials: {{get-circularity.recycled_pct}}%. Garments collected: {{get-circularity.garments_collected}}. Reused: {{get-circularity.reused_count}}. Recycled: {{get-circularity.recycled_count}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_CIRCULARITY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: circularity
          path: "/CircularityMetricSet(Collection='{{collection}}',Period='{{period}}')"
          inputParameters:
            - name: collection
              in: path
            - name: period
              in: path
          operations:
            - name: get-circularity-metrics
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://hm.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Tracks garment lifecycle in SAP, logs recycling data in Snowflake, generates sustainability report in Google Sheets, and publishes to Confluence.

naftiko: "0.5"
info:
  label: "Circular Fashion Tracking Pipeline"
  description: "Tracks garment lifecycle in SAP, logs recycling data in Snowflake, generates sustainability report in Google Sheets, and publishes to Confluence."
  tags:
    - sustainability
    - sap
    - snowflake
    - google-sheets
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: circular-fashion-tracking-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Tracks garment lifecycle in SAP, logs recycling data in Snowflake, generates sustainability report in Google Sheets, 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: "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: "confluence.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: confluence
      baseUri: "https://api.confluence.com/v1"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Checks Cloudflare zone performance for H&M web properties.

naftiko: "0.5"
info:
  label: "Cloudflare Web Performance Monitor"
  description: "Checks Cloudflare zone performance for H&M web properties."
  tags:
    - performance
    - cdn
    - cloudflare
capability:
  exposes:
    - type: mcp
      namespace: web-performance
      port: 8080
      tools:
        - name: check-cdn-performance
          description: "Check CDN performance."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "Cloudflare zone ID."
          call: "cloudflare.get-zone-analytics"
          with:
            zone_id: "{{zone_id}}"
          outputParameters:
            - name: cache_hit_rate
              type: string
              mapping: "$.result.totals.requests.cached"
            - name: total_requests
              type: integer
              mapping: "$.result.totals.requests.all"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: analytics
          path: "/zones/{{zone_id}}/analytics/dashboard"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-zone-analytics
              method: GET

Creates a Confluence knowledge base page.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Publisher"
  description: "Creates a Confluence knowledge base page."
  tags:
    - knowledge-management
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: knowledge-base
      port: 8080
      tools:
        - name: publish-kb-article
          description: "Publish a Confluence page."
          inputParameters:
            - name: space_key
              in: body
              type: string
              description: "Space key."
            - name: title
              in: body
              type: string
              description: "Title."
            - name: content
              in: body
              type: string
              description: "Content."
          call: "confluence.create-page"
          with:
            space_key: "{{space_key}}"
            title: "{{title}}"
            body: "{{content}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://hm.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Retrieves content from SharePoint, translates via Azure, uploads to Google Drive, and notifies via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Content Localization Pipeline"
  description: "Retrieves content from SharePoint, translates via Azure, uploads to Google Drive, and notifies via Microsoft Teams."
  tags:
    - localization
    - sharepoint
    - microsoft-azure
    - google-drive
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: content-localization-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Retrieves content from SharePoint, translates via Azure, uploads to Google Drive, and notifies via Microsoft Teams."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "sharepoint.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "microsoft-azure.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "google-drive.execute-step-3"
              with:
                data: "{{step-2.result}}"
            - name: step-4
              type: call
              call: "microsoft-teams.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://api.sharepoint.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: microsoft-azure
      baseUri: "https://api.microsoftazure.com/v1"
      authentication:
        type: bearer
        token: "$secrets.microsoft_azure_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: google-drive
      baseUri: "https://api.googledrive.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: microsoft-teams
      baseUri: "https://api.microsoftteams.com/v1"
      authentication:
        type: bearer
        token: "$secrets.microsoft_teams_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Queries expiring contracts from Salesforce, creates Jira tasks, sends reminders via Microsoft Outlook, and logs in Google Sheets.

naftiko: "0.5"
info:
  label: "Contract Renewal Pipeline"
  description: "Queries expiring contracts from Salesforce, creates Jira tasks, sends reminders via Microsoft Outlook, and logs in Google Sheets."
  tags:
    - legal
    - salesforce
    - jira
    - microsoft-outlook
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: contract-renewal-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Queries expiring contracts from Salesforce, creates Jira tasks, sends reminders via Microsoft Outlook, and logs in Google Sheets."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "jira.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "microsoft-outlook.execute-step-3"
              with:
                data: "{{step-2.result}}"
            - name: step-4
              type: call
              call: "google-sheets.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://api.salesforce.com/v1"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://api.jira.com/v1"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: microsoft-outlook
      baseUri: "https://api.microsoftoutlook.com/v1"
      authentication:
        type: bearer
        token: "$secrets.microsoft_outlook_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: google-sheets
      baseUri: "https://api.googlesheets.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

When a customer complaint arrives via Zendesk, retrieves order details from SAP, creates a Salesforce case, and notifies customer service in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Customer Complaint Handler"
  description: "When a customer complaint arrives via Zendesk, retrieves order details from SAP, creates a Salesforce case, and notifies customer service in Microsoft Teams."
  tags:
    - customer-service
    - zendesk
    - sap
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: complaint-handling
      port: 8080
      tools:
        - name: handle-complaint
          description: "Process a customer complaint."
          inputParameters:
            - name: ticket_id
              in: body
              type: string
              description: "Zendesk ticket ID."
            - name: order_number
              in: body
              type: string
              description: "SAP order number."
          steps:
            - name: get-ticket
              type: call
              call: "zendesk.get-ticket"
              with:
                ticket_id: "{{ticket_id}}"
            - name: get-order
              type: call
              call: "sap.get-order"
              with:
                order_number: "{{order_number}}"
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Complaint: {{get-ticket.subject}}"
                description: "Zendesk #{{ticket_id}}: {{get-ticket.description}}. Order: {{order_number}}."
            - name: notify-cs
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "customer-service"
                text: "Complaint for order {{order_number}}: {{get-ticket.subject}}. SF Case: {{create-case.CaseNumber}}."
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://hm.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets/{{ticket_id}}"
          inputParameters:
            - name: ticket_id
              in: path
          operations:
            - name: get-ticket
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: orders
          path: "/SalesOrderSet('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://hm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Collects feedback from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence.

naftiko: "0.5"
info:
  label: "Customer Feedback Pipeline"
  description: "Collects feedback from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence."
  tags:
    - feedback
    - zendesk
    - azure-machine-learning
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: customer-feedback-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Collects feedback from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "zendesk.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "azure-machine-learning.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "snowflake.execute-step-3"
              with:
                data: "{{step-2.result}}"
            - name: step-4
              type: call
              call: "confluence.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://api.zendesk.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: azure-machine-learning
      baseUri: "https://api.azuremachinelearning.com/v1"
      authentication:
        type: bearer
        token: "$secrets.azure_machine_learning_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://api.snowflake.com/v1"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://api.confluence.com/v1"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Enrolls customer in Salesforce, creates Stripe customer record, triggers welcome email via MailChimp, and logs in Snowflake.

naftiko: "0.5"
info:
  label: "Customer Loyalty Enrollment Pipeline"
  description: "Enrolls customer in Salesforce, creates Stripe customer record, triggers welcome email via MailChimp, 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 customer in Salesforce, creates Stripe customer record, triggers welcome email via MailChimp, 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 in Zendesk, initiates refund via Stripe, updates inventory in SAP, and logs in Snowflake.

naftiko: "0.5"
info:
  label: "Customer Returns Pipeline"
  description: "Processes return in Zendesk, initiates refund via Stripe, updates inventory in SAP, 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 in Zendesk, initiates refund via Stripe, updates inventory in SAP, 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

Builds segments in Snowflake, syncs to Salesforce, creates campaigns in MailChimp, and tracks in Google Analytics.

naftiko: "0.5"
info:
  label: "Customer Segment Targeting Pipeline"
  description: "Builds segments in Snowflake, syncs to Salesforce, creates campaigns in MailChimp, and tracks in Google Analytics."
  tags:
    - marketing
    - snowflake
    - salesforce
    - mailchimp
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: customer-segment-targeting-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Builds segments in Snowflake, syncs to Salesforce, creates campaigns in MailChimp, 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: "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-analytics.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-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

Audits data in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack.

naftiko: "0.5"
info:
  label: "Data Privacy Compliance Pipeline"
  description: "Audits data in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack."
  tags:
    - compliance
    - snowflake
    - google-sheets
    - sharepoint
    - slack
capability:
  exposes:
    - type: mcp
      namespace: data-privacy-compliance-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Audits data in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "google-sheets.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "sharepoint.execute-step-3"
              with:
                data: "{{step-2.result}}"
            - name: step-4
              type: call
              call: "slack.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://api.snowflake.com/v1"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: google-sheets
      baseUri: "https://api.googlesheets.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://api.sharepoint.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://api.slack.com/v1"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Retrieves service health from Datadog.

naftiko: "0.5"
info:
  label: "Datadog Service Health Check"
  description: "Retrieves service health from Datadog."
  tags:
    - it-operations
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: infra-monitoring
      port: 8080
      tools:
        - name: get-service-health
          description: "Get Datadog metrics."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "Service name."
          call: "datadog.get-metrics"
          with:
            service: "{{service_name}}"
          outputParameters:
            - name: cpu_usage
              type: string
              mapping: "$.series[0].pointlist[-1][1]"
            - name: error_rate
              type: string
              mapping: "$.series[1].pointlist[-1][1]"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        headerName: "DD-API-KEY"
      resources:
        - name: metrics
          path: "/query?query=avg:system.cpu.user{service:{{service}}}"
          inputParameters:
            - name: service
              in: path
          operations:
            - name: get-metrics
              method: GET

Creates campaign in HubSpot, sets up Facebook ads, tracks in Google Analytics, and reports in Google Sheets.

naftiko: "0.5"
info:
  label: "Digital Marketing Campaign Pipeline"
  description: "Creates campaign in HubSpot, sets up Facebook ads, tracks in Google Analytics, and reports in Google Sheets."
  tags:
    - marketing
    - hubspot
    - facebook
    - google-analytics
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: digital-marketing-campaign-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Creates campaign in HubSpot, sets up Facebook ads, tracks in Google Analytics, and reports 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 the status of a DocuSign supplier contract envelope by ID.

naftiko: "0.5"
info:
  label: "DocuSign Supplier Contract Lookup"
  description: "Retrieves the status of a DocuSign supplier contract envelope by ID."
  tags:
    - legal
    - docusign
capability:
  exposes:
    - type: mcp
      namespace: docusign-contracts
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves the status of a DocuSign supplier contract envelope by ID."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "docusign-contracts.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: docusign-contracts
      baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/hm"
      authentication:
        type: bearer
        token: "$secrets.docusign_token"
      resources:
        - name: data
          path: "/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-data
              method: GET

Retrieves APM metrics from Dynatrace for the H&M e-commerce platform.

naftiko: "0.5"
info:
  label: "Dynatrace E-Commerce APM"
  description: "Retrieves APM metrics from Dynatrace for the H&M e-commerce platform."
  tags:
    - it-operations
    - apm
    - dynatrace
capability:
  exposes:
    - type: mcp
      namespace: ecommerce-apm
      port: 8080
      tools:
        - name: get-ecommerce-health
          description: "Get Dynatrace APM metrics for e-commerce."
          inputParameters:
            - name: service_id
              in: body
              type: string
              description: "Dynatrace service entity ID."
          call: "dynatrace.get-metrics"
          with:
            entity_id: "{{service_id}}"
          outputParameters:
            - name: response_time_ms
              type: number
              mapping: "$.result[0].data[0].values[0]"
            - name: error_rate_pct
              type: number
              mapping: "$.result[1].data[0].values[0]"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://hm.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: metrics
          path: "/metrics/query?metricSelector=builtin:service.response.time&entitySelector=entityId({{entity_id}})"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-metrics
              method: GET

When a new online order is placed, validates inventory in SAP, creates a fulfillment task in ServiceNow, updates the Salesforce customer record, and notifies the warehouse team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "E-Commerce Order Fulfillment Orchestrator"
  description: "When a new online order is placed, validates inventory in SAP, creates a fulfillment task in ServiceNow, updates the Salesforce customer record, and notifies the warehouse team in Microsoft Teams."
  tags:
    - e-commerce
    - fulfillment
    - sap
    - servicenow
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: order-fulfillment
      port: 8080
      tools:
        - name: fulfill-order
          description: "Orchestrate order fulfillment across SAP, ServiceNow, Salesforce, and Teams."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The e-commerce order ID."
            - name: customer_id
              in: body
              type: string
              description: "The Salesforce customer ID."
          steps:
            - name: get-order
              type: call
              call: "sap.get-sales-order"
              with:
                order_id: "{{order_id}}"
            - name: check-inventory
              type: call
              call: "sap.check-inventory"
              with:
                items: "{{get-order.line_items}}"
            - name: create-fulfillment
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_fulfillment_tasks"
                short_description: "Fulfill order {{order_id}}"
                description: "Items: {{get-order.item_count}}. Warehouse: {{check-inventory.assigned_warehouse}}. Ship by: {{get-order.promised_date}}."
            - name: update-customer
              type: call
              call: "salesforce.update-contact"
              with:
                contact_id: "{{customer_id}}"
                last_order_date: "{{get-order.order_date}}"
            - name: notify-warehouse
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "warehouse-ops"
                text: "New order {{order_id}}: {{get-order.item_count}} items. Warehouse: {{check-inventory.assigned_warehouse}}. ServiceNow: {{create-fulfillment.number}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: orders
          path: "/SalesOrderSet('{{order_id}}')"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-sales-order
              method: GET
        - name: inventory
          path: "/InventoryCheckSet"
          operations:
            - name: check-inventory
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://hm.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://hm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: update-contact
              method: PATCH
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Detects abandoned carts in BigCommerce, sends recovery emails via MailChimp, logs in Snowflake, and tracks in Google Analytics.

naftiko: "0.5"
info:
  label: "E-Commerce Cart Abandonment Pipeline"
  description: "Detects abandoned carts in BigCommerce, sends recovery emails via MailChimp, logs in Snowflake, and tracks in Google Analytics."
  tags:
    - e-commerce
    - bigcommerce
    - mailchimp
    - snowflake
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: ecommerce-cart-abandonment-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Detects abandoned carts in BigCommerce, sends recovery emails via MailChimp, 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

Provisions Workday profile, creates Azure AD account, assigns Slack channels, and sends welcome via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Employee Onboarding Enhancement Pipeline"
  description: "Provisions Workday profile, creates Azure AD account, assigns Slack channels, and sends welcome via Microsoft Outlook."
  tags:
    - hr
    - workday
    - azure-active-directory
    - slack
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: employee-onboarding-enhancement-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Provisions Workday profile, creates Azure AD account, assigns Slack channels, 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: "slack.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: 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: 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

On new hire in Workday, opens ServiceNow ticket, provisions SharePoint folder, sends Teams welcome.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire in Workday, opens ServiceNow ticket, provisions SharePoint folder, sends Teams welcome."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Orchestrate new employee onboarding."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
          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: "Onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_site"
                folder_path: "Onboarding/{{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 H&M, {{get-employee.first_name}}! Ticket: {{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://hm.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

Analyzes supplier data from SAP Ariba, scores alternatives in Snowflake, updates procurement in SAP, and reports via Google Sheets.

naftiko: "0.5"
info:
  label: "Fabric Sourcing Optimization Pipeline"
  description: "Analyzes supplier data from SAP Ariba, scores alternatives in Snowflake, updates procurement in SAP, and reports via Google Sheets."
  tags:
    - sourcing
    - sap-ariba
    - snowflake
    - sap
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: fabric-sourcing-optimization-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Analyzes supplier data from SAP Ariba, scores alternatives in Snowflake, updates procurement in SAP, and reports via Google Sheets."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "sap-ariba.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: "sap.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-ariba
      baseUri: "https://api.sapariba.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_ariba_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: sap
      baseUri: "https://api.sap.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: google-sheets
      baseUri: "https://api.googlesheets.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Pulls social media data from Instagram, analyzes trends via Azure ML, stores in Snowflake, and publishes insights to Confluence.

naftiko: "0.5"
info:
  label: "Fashion Trend Analysis Pipeline"
  description: "Pulls social media data from Instagram, analyzes trends via Azure ML, stores in Snowflake, and publishes insights to Confluence."
  tags:
    - trends
    - instagram
    - azure-machine-learning
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: fashion-trend-analysis-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Pulls social media data from Instagram, analyzes trends via Azure ML, stores in Snowflake, and publishes insights 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: "instagram.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: 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: 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

Retrieves a Figma fashion design mockup by file key.

naftiko: "0.5"
info:
  label: "Figma Fashion Design Lookup"
  description: "Retrieves a Figma fashion design mockup by file key."
  tags:
    - design
    - figma
capability:
  exposes:
    - type: mcp
      namespace: figma-fashion
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves a Figma fashion design mockup by file key."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "figma-fashion.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: figma-fashion
      baseUri: "https://api.figma.com/v1"
      authentication:
        type: bearer
        token: "$secrets.figma_token"
      resources:
        - name: data
          path: "/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-data
              method: GET

Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Financial Close Pipeline"
  description: "Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams."
  tags:
    - finance
    - sap
    - power-bi
    - box
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: financial-close-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "sap.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "power-bi.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "box.execute-step-3"
              with:
                data: "{{step-2.result}}"
            - name: step-4
              type: call
              call: "microsoft-teams.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://api.sap.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/v1"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: microsoft-teams
      baseUri: "https://api.microsoftteams.com/v1"
      authentication:
        type: bearer
        token: "$secrets.microsoft_teams_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Retrieves quality test results from SAP, creates inspection report in Confluence, updates compliance tracker in Airtable, and notifies quality team via Slack.

naftiko: "0.5"
info:
  label: "Garment Quality Inspection Pipeline"
  description: "Retrieves quality test results from SAP, creates inspection report in Confluence, updates compliance tracker in Airtable, and notifies quality team via Slack."
  tags:
    - quality
    - sap
    - confluence
    - airtable
    - slack
capability:
  exposes:
    - type: mcp
      namespace: garment-quality-inspection-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Retrieves quality test results from SAP, creates inspection report in Confluence, updates compliance tracker in Airtable, and notifies quality team 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

Processes an online return by retrieving order from SAP, creating a ServiceNow task for warehouse processing, issuing a refund via Salesforce, and notifying the customer via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Garment Return Processor"
  description: "Processes an online return by retrieving order from SAP, creating a ServiceNow task for warehouse processing, issuing a refund via Salesforce, and notifying the customer via Microsoft Outlook."
  tags:
    - e-commerce
    - returns
    - sap
    - servicenow
    - salesforce
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: returns-processing
      port: 8080
      tools:
        - name: process-return
          description: "Process an online garment return."
          inputParameters:
            - name: order_number
              in: body
              type: string
              description: "Original order number."
            - name: return_reason
              in: body
              type: string
              description: "Reason for return."
            - name: customer_email
              in: body
              type: string
              description: "Customer email."
          steps:
            - name: get-order
              type: call
              call: "sap.get-order"
              with:
                order_number: "{{order_number}}"
            - name: create-return-task
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_return_tasks"
                short_description: "Return: order {{order_number}}"
                description: "Reason: {{return_reason}}. Items: {{get-order.item_count}}. Value: {{get-order.total_amount}}."
            - name: initiate-refund
              type: call
              call: "salesforce.create-refund"
              with:
                order_ref: "{{order_number}}"
                amount: "{{get-order.total_amount}}"
            - name: notify-customer
              type: call
              call: "outlook.send-email"
              with:
                to: "{{customer_email}}"
                subject: "H&M Return Confirmation - Order {{order_number}}"
                body: "Your return for order {{order_number}} has been processed. Refund of {{get-order.total_amount}} will be issued within 5-10 business days."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: orders
          path: "/SalesOrderSet('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hm.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://hm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: refunds
          path: "/sobjects/Refund__c"
          operations:
            - name: create-refund
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0/me"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/sendMail"
          operations:
            - name: send-email
              method: POST

Pulls material composition from SAP, calculates sustainability impact, and updates the product record with a Conscious Choice rating.

naftiko: "0.5"
info:
  label: "Garment Sustainability Score Calculator"
  description: "Pulls material composition from SAP, calculates sustainability impact, and updates the product record with a Conscious Choice rating."
  tags:
    - sustainability
    - product
    - sap
capability:
  exposes:
    - type: mcp
      namespace: sustainability-scoring
      port: 8080
      tools:
        - name: calculate-sustainability-score
          description: "Calculate sustainability score for a garment."
          inputParameters:
            - name: article_number
              in: body
              type: string
              description: "The article number."
          call: "sap.get-sustainability-score"
          with:
            article_id: "{{article_number}}"
          outputParameters:
            - name: overall_score
              type: string
              mapping: "$.d.OverallScore"
            - name: recycled_pct
              type: string
              mapping: "$.d.RecycledContentPct"
            - name: water_usage
              type: string
              mapping: "$.d.WaterUsageLiters"
            - name: conscious_choice
              type: boolean
              mapping: "$.d.ConsciousChoice"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_SUSTAINABILITY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: scores
          path: "/SustainabilityScoreSet('{{article_id}}')"
          inputParameters:
            - name: article_id
              in: path
          operations:
            - name: get-sustainability-score
              method: GET

Updates pricing in SAP, syncs to BigCommerce, logs changes 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 changes 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 changes 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 e-commerce performance metrics from Google Analytics.

naftiko: "0.5"
info:
  label: "Google Analytics E-Commerce Performance"
  description: "Retrieves e-commerce performance metrics from Google Analytics."
  tags:
    - e-commerce
    - analytics
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: ecommerce-analytics
      port: 8080
      tools:
        - name: get-ecommerce-metrics
          description: "Get e-commerce metrics from Google Analytics."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "GA property ID."
          call: "ga.get-ecommerce"
          with:
            property_id: "{{property_id}}"
          outputParameters:
            - name: revenue
              type: string
              mapping: "$.rows[0].metricValues[0].value"
            - name: transactions
              type: integer
              mapping: "$.rows[0].metricValues[1].value"
            - name: conversion_rate
              type: string
              mapping: "$.rows[0].metricValues[2].value"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: get-ecommerce
              method: POST

Uploads design assets to Google Drive.

naftiko: "0.5"
info:
  label: "Google Drive Design Asset Upload"
  description: "Uploads design assets to Google Drive."
  tags:
    - document-management
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: gdrive-assets
      port: 8080
      tools:
        - name: upload-asset
          description: "Upload a design asset."
          inputParameters:
            - name: folder_id
              in: body
              type: string
              description: "Google Drive folder ID."
            - name: file_name
              in: body
              type: string
              description: "File name."
            - name: content
              in: body
              type: string
              description: "File content."
          call: "gdrive.upload-file"
          with:
            folder_id: "{{folder_id}}"
            name: "{{file_name}}"
            content: "{{content}}"
          outputParameters:
            - name: file_id
              type: string
              mapping: "$.id"
            - name: web_view_link
              type: string
              mapping: "$.webViewLink"
  consumes:
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/upload/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files?uploadType=multipart"
          operations:
            - name: upload-file
              method: POST

Retrieves search performance data from Google Search Console for H&M properties.

naftiko: "0.5"
info:
  label: "Google Search Console SEO Lookup"
  description: "Retrieves search performance data from Google Search Console for H&M properties."
  tags:
    - seo
    - google-search-console
capability:
  exposes:
    - type: mcp
      namespace: gsc-seo
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves search performance data from Google Search Console for H&M 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 search performance from Google Search Console for H&M web properties.

naftiko: "0.5"
info:
  label: "Google Search Console SEO Tracker"
  description: "Retrieves search performance from Google Search Console for H&M web properties."
  tags:
    - marketing
    - seo
    - google-search-console
capability:
  exposes:
    - type: mcp
      namespace: seo-tracking
      port: 8080
      tools:
        - name: get-search-performance
          description: "Get search performance data."
          inputParameters:
            - name: site_url
              in: body
              type: string
              description: "Site URL."
          call: "gsc.get-search-analytics"
          with:
            site_url: "{{site_url}}"
          outputParameters:
            - name: total_clicks
              type: integer
              mapping: "$.rows[0].clicks"
            - name: total_impressions
              type: integer
              mapping: "$.rows[0].impressions"
  consumes:
    - type: http
      namespace: gsc
      baseUri: "https://www.googleapis.com/webmasters/v3"
      authentication:
        type: bearer
        token: "$secrets.google_search_console_token"
      resources:
        - name: search-analytics
          path: "/sites/{{site_url}}/searchAnalytics/query"
          inputParameters:
            - name: site_url
              in: path
          operations:
            - name: get-search-analytics
              method: POST

Pulls store KPIs from SAP and writes to Google Sheets.

naftiko: "0.5"
info:
  label: "Google Sheets Store KPI Dashboard"
  description: "Pulls store KPIs from SAP and writes to Google Sheets."
  tags:
    - reporting
    - google-sheets
    - sap
capability:
  exposes:
    - type: mcp
      namespace: sheets-kpis
      port: 8080
      tools:
        - name: sync-store-kpis
          description: "Sync SAP store KPIs to Google Sheets."
          inputParameters:
            - name: spreadsheet_id
              in: body
              type: string
              description: "Google Sheets ID."
            - name: store_code
              in: body
              type: string
              description: "Store code."
          steps:
            - name: get-kpis
              type: call
              call: "sap.get-store-kpis"
              with:
                store: "{{store_code}}"
            - name: update-sheet
              type: call
              call: "gsheets.update-values"
              with:
                spreadsheet_id: "{{spreadsheet_id}}"
                range: "KPIs!A2:D2"
                values:
                  - - "{{store_code}}"
                    - "{{get-kpis.revenue}}"
                    - "{{get-kpis.footfall}}"
                    - "{{get-kpis.conversion_rate}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_STORE_KPI_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: kpis
          path: "/StoreKPISet('{{store}}')"
          inputParameters:
            - name: store
              in: path
          operations:
            - name: get-store-kpis
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: update-values
              method: PUT

Publishes a GTM container version for H&M web properties.

naftiko: "0.5"
info:
  label: "Google Tag Manager Container Publish"
  description: "Publishes a GTM container version for H&M web properties."
  tags:
    - marketing
    - analytics
    - google-tag-manager
capability:
  exposes:
    - type: mcp
      namespace: tag-management
      port: 8080
      tools:
        - name: publish-gtm-container
          description: "Publish a GTM container."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "GTM account ID."
            - name: container_id
              in: body
              type: string
              description: "GTM container ID."
            - name: version_id
              in: body
              type: string
              description: "Version to publish."
          call: "gtm.publish-version"
          with:
            account_id: "{{account_id}}"
            container_id: "{{container_id}}"
            version_id: "{{version_id}}"
  consumes:
    - type: http
      namespace: gtm
      baseUri: "https://www.googleapis.com/tagmanager/v2"
      authentication:
        type: bearer
        token: "$secrets.gtm_token"
      resources:
        - name: versions
          path: "/accounts/{{account_id}}/containers/{{container_id}}/versions/{{version_id}}:publish"
          inputParameters:
            - name: account_id
              in: path
            - name: container_id
              in: path
            - name: version_id
              in: path
          operations:
            - name: publish-version
              method: POST

Captures a lead in HubSpot, enriches with Salesforce data, and notifies the marketing team.

naftiko: "0.5"
info:
  label: "HubSpot Customer Lead Capture"
  description: "Captures a lead in HubSpot, enriches with Salesforce data, and notifies the marketing team."
  tags:
    - marketing
    - lead-management
    - hubspot
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: lead-capture
      port: 8080
      tools:
        - name: capture-lead
          description: "Capture and enrich a customer lead."
          inputParameters:
            - name: lead_email
              in: body
              type: string
              description: "Lead email."
            - name: source
              in: body
              type: string
              description: "Lead source."
          steps:
            - name: create-contact
              type: call
              call: "hubspot.create-contact"
              with:
                email: "{{lead_email}}"
                lead_source: "{{source}}"
            - name: search-sf
              type: call
              call: "salesforce.search-contact"
              with:
                email: "{{lead_email}}"
            - name: notify-marketing
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "marketing-leads"
                text: "New lead: {{lead_email}} from {{source}}. HubSpot: {{create-contact.id}}."
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/objects/contacts"
          operations:
            - name: create-contact
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://hm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: search
          path: "/parameterizedSearch/?q={{email}}&sobject=Contact"
          inputParameters:
            - name: email
              in: query
          operations:
            - name: search-contact
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Creates campaign in HubSpot, generates contract via DocuSign, tracks deliverables in Asana, and monitors Instagram metrics.

naftiko: "0.5"
info:
  label: "Influencer Campaign Pipeline"
  description: "Creates campaign in HubSpot, generates contract via DocuSign, tracks deliverables in Asana, and monitors Instagram metrics."
  tags:
    - marketing
    - hubspot
    - docusign
    - asana
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: influencer-campaign-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Creates campaign in HubSpot, generates contract via DocuSign, tracks deliverables in Asana, and monitors Instagram metrics."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "hubspot.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "docusign.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "asana.execute-step-3"
              with:
                data: "{{step-2.result}}"
            - name: step-4
              type: call
              call: "instagram.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubspot.com/v1"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: docusign
      baseUri: "https://api.docusign.com/v1"
      authentication:
        type: bearer
        token: "$secrets.docusign_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: asana
      baseUri: "https://api.asana.com/v1"
      authentication:
        type: bearer
        token: "$secrets.asana_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: instagram
      baseUri: "https://api.instagram.com/v1"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Retrieves engagement metrics for an H&M Instagram fashion post.

naftiko: "0.5"
info:
  label: "Instagram Fashion Metrics Lookup"
  description: "Retrieves engagement metrics for an H&M Instagram fashion post."
  tags:
    - social-media
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: instagram-fashion
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves engagement metrics for an H&M Instagram fashion post."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "instagram-fashion.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: instagram-fashion
      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 Datadog alert, creates ServiceNow incident, pages on-call via Slack, and opens Zoom bridge.

naftiko: "0.5"
info:
  label: "IT Incident Response Pipeline"
  description: "On Datadog alert, creates ServiceNow incident, pages on-call via Slack, and opens Zoom bridge."
  tags:
    - incident
    - datadog
    - servicenow
    - slack
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: it-incident-response-pipeline
      port: 8080
      tools:
        - name: execute
          description: "On Datadog alert, creates ServiceNow incident, pages on-call 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: "datadog.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: datadog
      baseUri: "https://api.datadog.com/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_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 project status from Jira.

naftiko: "0.5"
info:
  label: "Jira Project Tracker"
  description: "Retrieves project status from Jira."
  tags:
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: project-tracking
      port: 8080
      tools:
        - name: get-project-status
          description: "Get Jira project status."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
          call: "jira.get-project"
          with:
            project_key: "{{project_key}}"
          outputParameters:
            - name: total_issues
              type: integer
              mapping: "$.total"
            - name: open_issues
              type: integer
              mapping: "$.open_count"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://hm.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search?jql=project={{project_key}}"
          inputParameters:
            - name: project_key
              in: path
          operations:
            - name: get-project
              method: GET

Publishes a branded post to the H&M LinkedIn page.

naftiko: "0.5"
info:
  label: "LinkedIn Brand Post Publisher"
  description: "Publishes a branded post to the H&M LinkedIn page."
  tags:
    - marketing
    - social-media
    - linkedin
capability:
  exposes:
    - type: mcp
      namespace: linkedin-publishing
      port: 8080
      tools:
        - name: publish-linkedin-post
          description: "Publish a LinkedIn post."
          inputParameters:
            - name: post_text
              in: body
              type: string
              description: "Post content."
          call: "linkedin.create-post"
          with:
            author: "urn:li:organization:hm"
            text: "{{post_text}}"
  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

Pulls new collection data from SAP and sends a newsletter via MailChimp.

naftiko: "0.5"
info:
  label: "MailChimp Fashion Newsletter"
  description: "Pulls new collection data from SAP and sends a newsletter via MailChimp."
  tags:
    - marketing
    - newsletter
    - mailchimp
    - sap
capability:
  exposes:
    - type: mcp
      namespace: fashion-newsletter
      port: 8080
      tools:
        - name: send-collection-newsletter
          description: "Send a new collection newsletter."
          inputParameters:
            - name: list_id
              in: body
              type: string
              description: "MailChimp list ID."
            - name: collection
              in: body
              type: string
              description: "Collection name."
          steps:
            - name: get-collection
              type: call
              call: "sap.get-collection-highlights"
              with:
                collection: "{{collection}}"
            - name: create-campaign
              type: call
              call: "mailchimp.create-campaign"
              with:
                list_id: "{{list_id}}"
                subject: "New Collection: {{collection}} | H&M"
                body: "Discover {{get-collection.item_count}} new styles! Featured: {{get-collection.hero_product}}."
            - name: send-campaign
              type: call
              call: "mailchimp.send-campaign"
              with:
                campaign_id: "{{create-campaign.id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_COLLECTION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: collections
          path: "/CollectionHighlightSet('{{collection}}')"
          inputParameters:
            - name: collection
              in: path
          operations:
            - name: get-collection-highlights
              method: GET
    - 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
        - name: campaign-actions
          path: "/campaigns/{{campaign_id}}/actions/send"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: send-campaign
              method: POST

Pulls sales velocity from SAP, analyzes markdown candidates using Azure Machine Learning, and publishes pricing recommendations to Confluence.

naftiko: "0.5"
info:
  label: "Markdown Pricing Optimizer"
  description: "Pulls sales velocity from SAP, analyzes markdown candidates using Azure Machine Learning, and publishes pricing recommendations to Confluence."
  tags:
    - retail
    - pricing
    - sap
    - azure-machine-learning
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: markdown-optimization
      port: 8080
      tools:
        - name: optimize-markdowns
          description: "Generate markdown pricing recommendations."
          inputParameters:
            - name: category
              in: body
              type: string
              description: "Product category."
            - name: season
              in: body
              type: string
              description: "Season code."
          steps:
            - name: get-velocity
              type: call
              call: "sap.get-sales-velocity"
              with:
                category: "{{category}}"
                season: "{{season}}"
            - name: run-model
              type: call
              call: "azml.run-inference"
              with:
                model_name: "markdown_optimizer"
                input_data: "{{get-velocity.data}}"
            - name: publish-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "MERCH"
                title: "Markdown Recommendations: {{category}} - {{season}}"
                body: "Articles to mark down: {{run-model.markdown_count}}. Projected sell-through improvement: {{run-model.improvement_pct}}%."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_VELOCITY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: velocity
          path: "/VelocitySet(Category='{{category}}',Season='{{season}}')"
          inputParameters:
            - name: category
              in: path
            - name: season
              in: path
          operations:
            - name: get-sales-velocity
              method: GET
    - type: http
      namespace: azml
      baseUri: "https://hm-ml.azureml.ms/score"
      authentication:
        type: bearer
        token: "$secrets.azml_token"
      resources:
        - name: inference
          path: "/{{model_name}}"
          inputParameters:
            - name: model_name
              in: path
          operations:
            - name: run-inference
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://hm.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Sends a formatted email via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Microsoft Outlook Email Sender"
  description: "Sends a formatted email via Microsoft Outlook."
  tags:
    - communications
    - email
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: email-sending
      port: 8080
      tools:
        - name: send-email
          description: "Send an email via Outlook."
          inputParameters:
            - name: to_address
              in: body
              type: string
              description: "Recipient email."
            - name: subject
              in: body
              type: string
              description: "Subject."
            - name: body_text
              in: body
              type: string
              description: "Body."
          call: "outlook.send-mail"
          with:
            to: "{{to_address}}"
            subject: "{{subject}}"
            body: "{{body_text}}"
  consumes:
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0/me"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/sendMail"
          operations:
            - name: send-mail
              method: POST

Sends a formatted message to a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notifier"
  description: "Sends a formatted message to a Microsoft Teams channel."
  tags:
    - communications
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: team-notifications
      port: 8080
      tools:
        - name: send-channel-notification
          description: "Send a Teams channel message."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "Teams channel ID."
            - name: message_text
              in: body
              type: string
              description: "Message text."
          call: "msteams.send-channel-message"
          with:
            channel_id: "{{channel_id}}"
            text: "{{message_text}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

On collection launch, updates SAP product catalog, publishes to BigCommerce, promotes on Instagram, and notifies stores via Microsoft Teams.

naftiko: "0.5"
info:
  label: "New Collection Launch Pipeline"
  description: "On collection launch, updates SAP product catalog, publishes to BigCommerce, promotes on Instagram, and notifies stores via Microsoft Teams."
  tags:
    - fashion
    - sap
    - bigcommerce
    - instagram
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: new-collection-launch-pipeline
      port: 8080
      tools:
        - name: execute
          description: "On collection launch, updates SAP product catalog, publishes to BigCommerce, promotes on Instagram, and notifies stores 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: "instagram.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: 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: 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 New Relic performance data for the H&M e-commerce application.

naftiko: "0.5"
info:
  label: "New Relic E-Commerce Monitor"
  description: "Retrieves New Relic performance data for the H&M e-commerce application."
  tags:
    - it-operations
    - monitoring
    - new-relic
capability:
  exposes:
    - type: mcp
      namespace: newrelic-monitoring
      port: 8080
      tools:
        - name: get-newrelic-metrics
          description: "Get New Relic metrics."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "New Relic app ID."
          call: "newrelic.get-app-metrics"
          with:
            app_id: "{{app_id}}"
          outputParameters:
            - name: response_time
              type: number
              mapping: "$.application_summary.response_time"
            - name: throughput
              type: number
              mapping: "$.application_summary.throughput"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apiKey
        key: "$secrets.newrelic_api_key"
        headerName: "Api-Key"
      resources:
        - name: applications
          path: "/applications/{{app_id}}.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-app-metrics
              method: GET

Retrieves e-commerce platform health metrics from New Relic.

naftiko: "0.5"
info:
  label: "New Relic E-Commerce Health Lookup"
  description: "Retrieves e-commerce platform health metrics 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 metrics 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

Syncs inventory from SAP to BigCommerce, updates Google Sheets tracker, refreshes Tableau dashboard, and notifies stores via Slack.

naftiko: "0.5"
info:
  label: "Omnichannel Inventory Sync Pipeline"
  description: "Syncs inventory from SAP to BigCommerce, updates Google Sheets tracker, refreshes Tableau dashboard, and notifies stores via Slack."
  tags:
    - inventory
    - sap
    - bigcommerce
    - google-sheets
    - tableau
    - slack
capability:
  exposes:
    - type: mcp
      namespace: omnichannel-inventory-sync-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Syncs inventory from SAP to BigCommerce, updates Google Sheets tracker, refreshes Tableau dashboard, and notifies stores 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: "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: "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: 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
    - type: http
      namespace: tableau
      baseUri: "https://api.tableau.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://api.slack.com/v1"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Validates inventory in SAP, creates shipment, updates BigCommerce order status, and sends confirmation via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Online Order Fulfillment Pipeline"
  description: "Validates inventory in SAP, creates shipment, updates BigCommerce order status, and sends confirmation via Microsoft Outlook."
  tags:
    - fulfillment
    - sap
    - bigcommerce
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: online-order-fulfillment-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Validates inventory in SAP, creates shipment, updates BigCommerce order status, and sends confirmation 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: "bigcommerce.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: "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: 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: 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 Power BI fashion KPI dashboard refresh status.

naftiko: "0.5"
info:
  label: "Power BI Fashion KPI Report"
  description: "Retrieves Power BI fashion KPI dashboard refresh status."
  tags:
    - analytics
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: powerbi-fashion
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves Power BI fashion KPI dashboard refresh status."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "powerbi-fashion.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: powerbi-fashion
      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 a product from the SAP product catalog by article number, returning name, category, price, color, and sustainability rating.

naftiko: "0.5"
info:
  label: "Product Catalog Lookup"
  description: "Retrieves a product from the SAP product catalog by article number, returning name, category, price, color, and sustainability rating."
  tags:
    - retail
    - product
    - sap
capability:
  exposes:
    - type: mcp
      namespace: product-catalog
      port: 8080
      tools:
        - name: get-product
          description: "Look up an H&M product by article number."
          inputParameters:
            - name: article_number
              in: body
              type: string
              description: "The SAP article number."
          call: "sap.get-article"
          with:
            article_id: "{{article_number}}"
          outputParameters:
            - name: product_name
              type: string
              mapping: "$.d.ArticleName"
            - name: category
              type: string
              mapping: "$.d.Category"
            - name: price
              type: string
              mapping: "$.d.RetailPrice"
            - name: sustainability_rating
              type: string
              mapping: "$.d.SustainabilityRating"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_ARTICLE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: articles
          path: "/ArticleSet('{{article_id}}')"
          inputParameters:
            - name: article_id
              in: path
          operations:
            - name: get-article
              method: GET

Creates task in Asana, uploads assets to Google Drive, publishes to BigCommerce, and updates Airtable tracker.

naftiko: "0.5"
info:
  label: "Product Photography Pipeline"
  description: "Creates task in Asana, uploads assets to Google Drive, publishes to BigCommerce, and updates Airtable tracker."
  tags:
    - creative
    - asana
    - google-drive
    - bigcommerce
    - airtable
capability:
  exposes:
    - type: mcp
      namespace: product-photography-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Creates task in Asana, uploads assets to Google Drive, publishes to BigCommerce, and updates Airtable tracker."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "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

Triggers a Qlik Sense reload for retail analytics and notifies the team.

naftiko: "0.5"
info:
  label: "Qlik Sense Retail Dashboard Refresh"
  description: "Triggers a Qlik Sense reload for retail analytics and notifies the team."
  tags:
    - analytics
    - qlik-sense
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: analytics-refresh
      port: 8080
      tools:
        - name: refresh-qlik-dashboard
          description: "Trigger Qlik Sense reload."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "Qlik Sense app ID."
          steps:
            - name: trigger-reload
              type: call
              call: "qlik.reload-app"
              with:
                app_id: "{{app_id}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "retail-analytics"
                text: "Qlik dashboard {{app_id}} reloaded. ID: {{trigger-reload.reloadId}}."
  consumes:
    - type: http
      namespace: qlik
      baseUri: "https://hm.us.qlikcloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.qlik_token"
      resources:
        - name: reloads
          path: "/reloads"
          operations:
            - name: reload-app
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves a customer account from Salesforce.

naftiko: "0.5"
info:
  label: "Salesforce Customer Account Lookup"
  description: "Retrieves a customer account from Salesforce."
  tags:
    - crm
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: crm-accounts
      port: 8080
      tools:
        - name: get-customer-account
          description: "Look up a Salesforce customer account."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "Salesforce account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.Name"
            - name: segment
              type: string
              mapping: "$.Customer_Segment__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hm.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET

Retrieves a Salesforce customer order by ID, returning order status, total, and shipping details.

naftiko: "0.5"
info:
  label: "Salesforce Customer Order Lookup"
  description: "Retrieves a Salesforce customer order by ID, returning order status, total, and shipping details."
  tags:
    - sales
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sf-orders
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves a Salesforce customer order by ID, returning order status, total, and shipping details."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "sf-orders.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: sf-orders
      baseUri: "https://hm.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 procurement request status from SAP Ariba by request ID.

naftiko: "0.5"
info:
  label: "SAP Ariba Procurement Lookup"
  description: "Retrieves procurement request status from SAP Ariba by request ID."
  tags:
    - procurement
    - sap-ariba
capability:
  exposes:
    - type: mcp
      namespace: sap-ariba
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves procurement request status from SAP Ariba by request ID."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "sap-ariba.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: sap-ariba
      baseUri: "https://api.ariba.com/v2"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: data
          path: "/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-data
              method: GET

Retrieves supplier sourcing data from SAP Ariba for garment manufacturing partners.

naftiko: "0.5"
info:
  label: "SAP Ariba Supplier Sourcing"
  description: "Retrieves supplier sourcing data from SAP Ariba for garment manufacturing partners."
  tags:
    - procurement
    - supply-chain
    - sap-ariba
capability:
  exposes:
    - type: mcp
      namespace: supplier-sourcing
      port: 8080
      tools:
        - name: get-supplier-sourcing
          description: "Get supplier sourcing data from Ariba."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "SAP Ariba supplier ID."
          call: "ariba.get-supplier"
          with:
            supplier_id: "{{supplier_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.supplierName"
            - name: country
              type: string
              mapping: "$.country"
            - name: sustainability_cert
              type: string
              mapping: "$.sustainabilityCertification"
            - name: capacity_utilization
              type: string
              mapping: "$.capacityUtilization"
  consumes:
    - type: http
      namespace: ariba
      baseUri: "https://openapi.ariba.com/api/supplier-management/v2"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: suppliers
          path: "/suppliers/{{supplier_id}}"
          inputParameters:
            - name: supplier_id
              in: path
          operations:
            - name: get-supplier
              method: GET

Queries SAP BW for sales analytics by region and product category.

naftiko: "0.5"
info:
  label: "SAP BW Sales Analytics"
  description: "Queries SAP BW for sales analytics by region and product category."
  tags:
    - analytics
    - sap-bw
    - sales
capability:
  exposes:
    - type: mcp
      namespace: sales-analytics
      port: 8080
      tools:
        - name: get-sales-analytics
          description: "Get sales analytics from SAP BW."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "Sales region."
            - name: category
              in: body
              type: string
              description: "Product category."
          call: "sapbw.get-sales"
          with:
            region: "{{region}}"
            category: "{{category}}"
          outputParameters:
            - name: revenue
              type: string
              mapping: "$.d.Revenue"
            - name: units_sold
              type: integer
              mapping: "$.d.UnitsSold"
            - name: yoy_growth
              type: string
              mapping: "$.d.YoYGrowth"
  consumes:
    - type: http
      namespace: sapbw
      baseUri: "https://hm-bw.sap.com/sap/opu/odata/sap/ZRT_SALES_BW_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_bw_user"
        password: "$secrets.sap_bw_password"
      resources:
        - name: sales
          path: "/SalesAnalyticsSet(Region='{{region}}',Category='{{category}}')"
          inputParameters:
            - name: region
              in: path
            - name: category
              in: path
          operations:
            - name: get-sales
              method: GET

Retrieves a Concur expense report and creates a Jira approval task.

naftiko: "0.5"
info:
  label: "SAP Concur Travel Expense Processor"
  description: "Retrieves a Concur expense report and creates a Jira approval task."
  tags:
    - finance
    - travel
    - sap-concur
    - jira
capability:
  exposes:
    - type: mcp
      namespace: travel-expenses
      port: 8080
      tools:
        - name: process-expense-report
          description: "Validate Concur expense report."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "Concur report ID."
          steps:
            - name: get-report
              type: call
              call: "concur.get-expense-report"
              with:
                report_id: "{{report_id}}"
            - name: create-approval
              type: call
              call: "jira.create-issue"
              with:
                project_key: "FIN"
                summary: "Expense: {{get-report.employee_name}} - {{get-report.total_amount}}"
                issue_type: "Task"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-expense-report
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://hm.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

Retrieves real-time inventory data from SAP HANA for H&M stores.

naftiko: "0.5"
info:
  label: "SAP HANA Inventory Lookup"
  description: "Retrieves real-time inventory data from SAP HANA for H&M stores."
  tags:
    - inventory
    - sap-hana
capability:
  exposes:
    - type: mcp
      namespace: sap-hana-inv
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves real-time inventory data from SAP HANA for H&M stores."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "sap-hana-inv.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: sap-hana-inv
      baseUri: "https://hm-hana.sap.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_hana_token"
      resources:
        - name: data
          path: "/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-data
              method: GET

Queries SAP HANA for retail analytics by store and category.

naftiko: "0.5"
info:
  label: "SAP HANA Retail Analytics"
  description: "Queries SAP HANA for retail analytics by store and category."
  tags:
    - analytics
    - sap-hana
    - retail
capability:
  exposes:
    - type: mcp
      namespace: retail-analytics
      port: 8080
      tools:
        - name: query-retail-analytics
          description: "Query SAP HANA for retail performance."
          inputParameters:
            - name: store_code
              in: body
              type: string
              description: "Store code."
            - name: category
              in: body
              type: string
              description: "Product category."
          call: "saphana.query-retail"
          with:
            store: "{{store_code}}"
            category: "{{category}}"
          outputParameters:
            - name: revenue
              type: string
              mapping: "$.d.Revenue"
            - name: units_sold
              type: integer
              mapping: "$.d.UnitsSold"
            - name: avg_basket_size
              type: string
              mapping: "$.d.AvgBasketSize"
  consumes:
    - type: http
      namespace: saphana
      baseUri: "https://hm-hana.sap.com/sap/opu/odata/sap/ZRT_ANALYTICS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: retail
          path: "/RetailAnalyticsSet(Store='{{store}}',Category='{{category}}')"
          inputParameters:
            - name: store
              in: path
            - name: category
              in: path
          operations:
            - name: query-retail
              method: GET

Looks up a SAP purchase order and returns status, vendor, total value, and delivery date.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP purchase order and returns status, vendor, total value, and delivery date."
  tags:
    - procurement
    - sap
    - supply-chain
capability:
  exposes:
    - type: mcp
      namespace: erp-procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP purchase order."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
            - name: delivery_date
              type: string
              mapping: "$.d.DeliveryDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-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

Calculates markdowns in Snowflake, updates pricing in SAP, syncs to BigCommerce, and notifies stores via Slack.

naftiko: "0.5"
info:
  label: "Seasonal Markdown Pipeline"
  description: "Calculates markdowns in Snowflake, updates pricing in SAP, syncs to BigCommerce, and notifies stores via Slack."
  tags:
    - pricing
    - snowflake
    - sap
    - bigcommerce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: seasonal-markdown-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Calculates markdowns in Snowflake, updates pricing in SAP, syncs to BigCommerce, and notifies stores 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: "sap.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: "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: 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: slack
      baseUri: "https://api.slack.com/v1"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Detects issues via Cloudflare, creates Jira tickets, alerts security team via Slack, and triggers Azure DevOps patches.

naftiko: "0.5"
info:
  label: "Security Vulnerability Pipeline"
  description: "Detects issues via Cloudflare, creates Jira tickets, alerts security team via Slack, and triggers Azure DevOps patches."
  tags:
    - security
    - cloudflare
    - jira
    - slack
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: security-vulnerability-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Detects issues via Cloudflare, creates Jira tickets, alerts security team via Slack, and triggers Azure DevOps patches."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "cloudflare.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: cloudflare
      baseUri: "https://api.cloudflare.com/v1"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://api.jira.com/v1"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://api.slack.com/v1"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: azure-devops
      baseUri: "https://api.azuredevops.com/v1"
      authentication:
        type: bearer
        token: "$secrets.azure_devops_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Pulls search data from Google Search Console, identifies opportunities, updates BigCommerce, and reports via Google Sheets.

naftiko: "0.5"
info:
  label: "SEO Optimization Pipeline"
  description: "Pulls search data from Google Search Console, identifies opportunities, 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 search data from Google Search Console, identifies opportunities, 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.

naftiko: "0.5"
info:
  label: "ServiceNow Ticket Status"
  description: "Retrieves a ServiceNow incident by number."
  tags:
    - it-service
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: itsm-tickets
      port: 8080
      tools:
        - name: get-ticket-status
          description: "Look up a ServiceNow incident."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "ServiceNow incident number."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result[0].state"
            - name: priority
              type: string
              mapping: "$.result[0].priority"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://hm.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: path
          operations:
            - name: get-incident
              method: GET

Retrieves a document from SharePoint.

naftiko: "0.5"
info:
  label: "SharePoint Document Retrieval"
  description: "Retrieves a document from SharePoint."
  tags:
    - document-management
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: doc-management
      port: 8080
      tools:
        - name: get-document
          description: "Retrieve a SharePoint document."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "SharePoint site ID."
            - name: file_path
              in: body
              type: string
              description: "File path."
          call: "sharepoint.get-file"
          with:
            site_id: "{{site_id}}"
            file_path: "{{file_path}}"
          outputParameters:
            - name: download_url
              type: string
              mapping: "$.['@microsoft.graph.downloadUrl']"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET

Sends a message to a Slack store operations channel.

naftiko: "0.5"
info:
  label: "Slack Store Ops Message Sender"
  description: "Sends a message to a Slack store operations channel."
  tags:
    - communications
    - slack
capability:
  exposes:
    - type: mcp
      namespace: slack-storeops
      port: 8080
      tools:
        - name: get-data
          description: "Sends a message to a Slack store operations channel."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "slack-storeops.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: slack-storeops
      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

Executes a query against Snowflake to retrieve retail sales analytics by region and product category.

naftiko: "0.5"
info:
  label: "Snowflake Retail Analytics Query"
  description: "Executes a query against Snowflake to retrieve retail sales analytics by region and product category."
  tags:
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: snowflake-retail
      port: 8080
      tools:
        - name: get-data
          description: "Executes a query against Snowflake to retrieve retail sales analytics by region and product category."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "snowflake-retail.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-retail
      baseUri: "https://hm.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

Creates a social media campaign across Instagram, Facebook, and LinkedIn via HubSpot with product assets from SharePoint.

naftiko: "0.5"
info:
  label: "Social Media Campaign Publisher"
  description: "Creates a social media campaign across Instagram, Facebook, and LinkedIn via HubSpot with product assets from SharePoint."
  tags:
    - marketing
    - social-media
    - hubspot
    - sharepoint
    - instagram
    - facebook
    - linkedin
capability:
  exposes:
    - type: mcp
      namespace: social-campaigns
      port: 8080
      tools:
        - name: publish-social-campaign
          description: "Publish a social media campaign with product assets."
          inputParameters:
            - name: article_number
              in: body
              type: string
              description: "Product article number."
            - name: campaign_message
              in: body
              type: string
              description: "Campaign message."
          steps:
            - name: get-assets
              type: call
              call: "sharepoint.get-folder"
              with:
                site_id: "marketing_site"
                folder_path: "ProductAssets/{{article_number}}"
            - name: create-broadcast
              type: call
              call: "hubspot.create-broadcast"
              with:
                content: "{{campaign_message}}"
                channels: ["instagram", "facebook", "linkedin"]
                media_url: "{{get-assets.items[0].webUrl}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}:/children"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: get-folder
              method: GET
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: broadcasts
          path: "/broadcast/v1/broadcasts"
          operations:
            - name: create-broadcast
              method: POST

Syncs calendar from Airtable, creates posts in HubSpot, schedules on Instagram and Facebook, and tracks in Google Sheets.

naftiko: "0.5"
info:
  label: "Social Media Content Calendar Pipeline"
  description: "Syncs calendar from Airtable, creates posts in HubSpot, schedules on Instagram and Facebook, and tracks in Google Sheets."
  tags:
    - social-media
    - airtable
    - hubspot
    - instagram
    - facebook
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: social-media-content-calendar-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Syncs calendar from Airtable, creates posts in HubSpot, schedules on Instagram and Facebook, 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: "airtable.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: "instagram.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: 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: hubspot
      baseUri: "https://api.hubspot.com/v1"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: instagram
      baseUri: "https://api.instagram.com/v1"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: facebook
      baseUri: "https://api.facebook.com/v1"
      authentication:
        type: bearer
        token: "$secrets.facebook_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: google-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

Pulls real-time inventory from SAP for a store, pushes to Power BI, and alerts the merchandising team if stock is low.

naftiko: "0.5"
info:
  label: "Store Inventory Monitor"
  description: "Pulls real-time inventory from SAP for a store, pushes to Power BI, and alerts the merchandising team if stock is low."
  tags:
    - retail
    - inventory
    - sap
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: store-inventory
      port: 8080
      tools:
        - name: monitor-store-inventory
          description: "Monitor store inventory and alert on low stock."
          inputParameters:
            - name: store_code
              in: body
              type: string
              description: "The store code."
          steps:
            - name: get-inventory
              type: call
              call: "sap.get-store-inventory"
              with:
                store: "{{store_code}}"
            - name: push-to-bi
              type: call
              call: "powerbi.push-rows"
              with:
                dataset_id: "store_inventory_ds"
                table_name: "Inventory"
                rows:
                  - store: "{{store_code}}"
                    total_skus: "{{get-inventory.total_skus}}"
                    low_stock_count: "{{get-inventory.low_stock_count}}"
            - name: alert-merch
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "merchandising"
                text: "Store {{store_code}}: {{get-inventory.low_stock_count}} SKUs below threshold."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_STORE_INV_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: inventory
          path: "/StoreInventorySet('{{store}}')"
          inputParameters:
            - name: store
              in: path
          operations:
            - name: get-store-inventory
              method: GET
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/tables/{{table_name}}/rows"
          inputParameters:
            - name: dataset_id
              in: path
            - name: table_name
              in: path
          operations:
            - name: push-rows
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Checks store stock in SAP, creates replenishment order, notifies logistics via Slack, and updates Google Sheets tracker.

naftiko: "0.5"
info:
  label: "Store Inventory Replenishment Pipeline"
  description: "Checks store stock in SAP, creates replenishment order, notifies logistics via Slack, and updates Google Sheets tracker."
  tags:
    - inventory
    - sap
    - slack
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: store-inventory-replenishment-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Checks store stock in SAP, creates replenishment order, notifies logistics via Slack, and updates Google Sheets tracker."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "sap.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "slack.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: 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

Creates store record in SAP, provisions POS systems via ServiceNow, publishes on Google Maps, and notifies regional managers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Store Opening Orchestrator"
  description: "Creates store record in SAP, provisions POS systems via ServiceNow, publishes on Google Maps, and notifies regional managers via Microsoft Teams."
  tags:
    - retail
    - sap
    - servicenow
    - google-maps
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: store-opening-orchestrator
      port: 8080
      tools:
        - name: execute
          description: "Creates store record in SAP, provisions POS systems via ServiceNow, publishes on Google Maps, and notifies regional managers 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: "servicenow.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "google-maps.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: 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: google-maps
      baseUri: "https://api.googlemaps.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_maps_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

Pulls store data from SAP, analyzes in Snowflake, generates Power BI reports, and shares via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Store Performance Review Pipeline"
  description: "Pulls store data from SAP, analyzes in Snowflake, generates Power BI reports, and shares via Microsoft Teams."
  tags:
    - retail
    - sap
    - snowflake
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: store-performance-review-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Pulls store data from SAP, analyzes in Snowflake, generates Power BI reports, 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: "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: "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: 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: 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 Stripe payment intent by ID for H&M online orders.

naftiko: "0.5"
info:
  label: "Stripe E-Commerce Payment Lookup"
  description: "Retrieves a Stripe payment intent by ID for H&M online orders."
  tags:
    - payments
    - stripe
capability:
  exposes:
    - type: mcp
      namespace: stripe-payments
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves a Stripe payment intent by ID for H&M online 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

Matches a SAP invoice against a PO, creates a Jira approval task, and notifies finance in Teams.

naftiko: "0.5"
info:
  label: "Supplier Invoice Processor"
  description: "Matches a SAP invoice against a PO, creates a Jira approval task, and notifies finance in Teams."
  tags:
    - finance
    - invoicing
    - sap
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: invoice-processing
      port: 8080
      tools:
        - name: process-invoice
          description: "Match invoice to PO and route for approval."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "SAP invoice number."
            - name: po_number
              in: body
              type: string
              description: "Related PO number."
          steps:
            - name: get-invoice
              type: call
              call: "sap.get-invoice"
              with:
                invoice_number: "{{invoice_number}}"
            - name: create-approval
              type: call
              call: "jira.create-issue"
              with:
                project_key: "FIN"
                summary: "Invoice variance: {{invoice_number}} vs PO {{po_number}}"
                issue_type: "Task"
            - name: notify-finance
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "finance-approvals"
                text: "Invoice {{invoice_number}} requires approval. Jira: {{create-approval.key}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/API_SUPPLIER_INVOICE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: invoices
          path: "/A_SupplierInvoice('{{invoice_number}}')"
          inputParameters:
            - name: invoice_number
              in: path
          operations:
            - name: get-invoice
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://hm.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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Aggregates delivery data from SAP, calculates scores in Snowflake, generates scorecards in Google Sheets, and distributes via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Supplier Performance Pipeline"
  description: "Aggregates delivery data from SAP, calculates scores in Snowflake, generates scorecards in Google Sheets, 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 delivery data from SAP, calculates scores in Snowflake, generates scorecards in Google Sheets, 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

Detects disruption in SAP, creates ServiceNow incident, notifies procurement via Slack, and updates risk tracker in Google Sheets.

naftiko: "0.5"
info:
  label: "Supply Chain Disruption Pipeline"
  description: "Detects disruption in SAP, creates ServiceNow incident, notifies procurement via Slack, and updates risk tracker in Google Sheets."
  tags:
    - supply-chain
    - sap
    - servicenow
    - slack
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-disruption-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Detects disruption in SAP, creates ServiceNow incident, notifies procurement via Slack, and updates risk tracker 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: "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

Tracks garment shipments from factory to distribution center using SAP, updates delivery status, and alerts logistics in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Supply Chain Shipment Tracker"
  description: "Tracks garment shipments from factory to distribution center using SAP, updates delivery status, and alerts logistics in Microsoft Teams."
  tags:
    - supply-chain
    - logistics
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: shipment-tracking
      port: 8080
      tools:
        - name: track-shipment
          description: "Track a garment shipment and notify logistics."
          inputParameters:
            - name: shipment_id
              in: body
              type: string
              description: "SAP shipment ID."
          steps:
            - name: get-shipment
              type: call
              call: "sap.get-shipment"
              with:
                shipment_id: "{{shipment_id}}"
            - name: notify-logistics
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "logistics-tracking"
                text: "Shipment {{shipment_id}}: Status {{get-shipment.status}}. ETA: {{get-shipment.eta}}. Origin: {{get-shipment.origin}}. Destination: {{get-shipment.destination}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZSC_SHIPMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: shipments
          path: "/ShipmentSet('{{shipment_id}}')"
          inputParameters:
            - name: shipment_id
              in: path
          operations:
            - name: get-shipment
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Collects supplier sustainability data from SAP Ariba, stores in Snowflake, generates reports in Google Sheets, and publishes to Confluence.

naftiko: "0.5"
info:
  label: "Sustainability Audit Pipeline"
  description: "Collects supplier sustainability data from SAP Ariba, stores in Snowflake, generates reports in Google Sheets, and publishes to Confluence."
  tags:
    - sustainability
    - sap-ariba
    - snowflake
    - google-sheets
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: sustainability-audit-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Collects supplier sustainability data from SAP Ariba, stores in Snowflake, generates reports in Google Sheets, 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: "sap-ariba.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: "confluence.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: sap-ariba
      baseUri: "https://api.sapariba.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_ariba_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: confluence
      baseUri: "https://api.confluence.com/v1"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Pulls supplier sustainability scores from SAP, validates against H&M standards, and publishes a compliance report to Confluence.

naftiko: "0.5"
info:
  label: "Sustainability Supply Chain Tracker"
  description: "Pulls supplier sustainability scores from SAP, validates against H&M standards, and publishes a compliance report to Confluence."
  tags:
    - sustainability
    - supply-chain
    - sap
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: sustainability-tracking
      port: 8080
      tools:
        - name: track-supplier-sustainability
          description: "Track supplier sustainability compliance."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "The SAP supplier ID."
          steps:
            - name: get-scores
              type: call
              call: "sap.get-sustainability-scores"
              with:
                supplier_id: "{{supplier_id}}"
            - name: publish-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "ESG"
                title: "Sustainability: {{get-scores.supplier_name}}"
                body: "Overall score: {{get-scores.overall_score}}. Water: {{get-scores.water_score}}. Carbon: {{get-scores.carbon_score}}. Labor: {{get-scores.labor_score}}. Chemicals: {{get-scores.chemical_score}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hm-s4.sap.com/sap/opu/odata/sap/ZSC_SUSTAINABILITY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: scores
          path: "/SustainabilityScoreSet('{{supplier_id}}')"
          inputParameters:
            - name: supplier_id
              in: path
          operations:
            - name: get-sustainability-scores
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://hm.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Retrieves a Tableau store performance dashboard view.

naftiko: "0.5"
info:
  label: "Tableau Store Performance Lookup"
  description: "Retrieves a Tableau store performance dashboard view."
  tags:
    - analytics
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: tableau-stores
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves a Tableau store performance dashboard view."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "tableau-stores.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: tableau-stores
      baseUri: "https://tableau.hm.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

Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies managers via Slack.

naftiko: "0.5"
info:
  label: "Talent Acquisition Pipeline"
  description: "Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies managers via Slack."
  tags:
    - recruiting
    - linkedin
    - workday
    - zoom
    - slack
capability:
  exposes:
    - type: mcp
      namespace: talent-acquisition-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies managers via Slack."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "linkedin.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "workday.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "zoom.execute-step-3"
              with:
                data: "{{step-2.result}}"
            - name: step-4
              type: call
              call: "slack.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v1"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://api.workday.com/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://api.slack.com/v1"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Queries the Teradata data warehouse for historical retail sales by region.

naftiko: "0.5"
info:
  label: "Teradata Retail Data Warehouse Query"
  description: "Queries the Teradata data warehouse for historical retail sales by region."
  tags:
    - analytics
    - data-warehouse
    - teradata
capability:
  exposes:
    - type: mcp
      namespace: retail-dwh
      port: 8080
      tools:
        - name: query-retail-history
          description: "Query Teradata for historical retail data."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "Sales region."
            - name: period
              in: body
              type: string
              description: "Analysis period."
          call: "teradata.query-retail"
          with:
            region: "{{region}}"
            period: "{{period}}"
          outputParameters:
            - name: total_revenue
              type: string
              mapping: "$.results.total_revenue"
            - name: store_count
              type: integer
              mapping: "$.results.store_count"
  consumes:
    - type: http
      namespace: teradata
      baseUri: "https://hm-td.teradata.com/api/query/v1"
      authentication:
        type: bearer
        token: "$secrets.teradata_token"
      resources:
        - name: queries
          path: "/execute"
          operations:
            - name: query-retail
              method: POST

Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack.

naftiko: "0.5"
info:
  label: "Training Compliance Pipeline"
  description: "Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack."
  tags:
    - training
    - pluralsight
    - workday
    - google-sheets
    - slack
capability:
  exposes:
    - type: mcp
      namespace: training-compliance-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "pluralsight.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "workday.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "google-sheets.execute-step-3"
              with:
                data: "{{step-2.result}}"
            - name: step-4
              type: call
              call: "slack.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: pluralsight
      baseUri: "https://api.pluralsight.com/v1"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://api.workday.com/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: google-sheets
      baseUri: "https://api.googlesheets.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://api.slack.com/v1"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Creates vendor in SAP, sets up shared 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 shared 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 shared 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

Aggregates sales from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack.

naftiko: "0.5"
info:
  label: "Weekly Sales Digest Pipeline"
  description: "Aggregates sales from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack."
  tags:
    - sales
    - snowflake
    - power-bi
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: weekly-sales-digest-pipeline
      port: 8080
      tools:
        - name: execute
          description: "Aggregates sales from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: context
              in: body
              type: string
              description: "Additional context parameter."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-step-1"
              with:
                input: "{{input_id}}"
                context: "{{context}}"
            - name: step-2
              type: call
              call: "power-bi.execute-step-2"
              with:
                data: "{{step-1.result}}"
            - name: step-3
              type: call
              call: "confluence.execute-step-3"
              with:
                data: "{{step-2.result}}"
            - name: step-4
              type: call
              call: "slack.execute-step-4"
              with:
                data: "{{step-3.result}}"
                id: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://api.snowflake.com/v1"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://api.confluence.com/v1"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://api.slack.com/v1"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: resources
          path: "/{{id}}"
          operations:
            - name: execute
              method: POST

Retrieves headcount data from Workday by department.

naftiko: "0.5"
info:
  label: "Workday Headcount Report"
  description: "Retrieves headcount data from Workday by department."
  tags:
    - hr
    - workforce
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-reporting
      port: 8080
      tools:
        - name: get-headcount
          description: "Get headcount metrics from Workday."
          inputParameters:
            - name: department_id
              in: body
              type: string
              description: "Workday department ID."
          call: "workday.get-headcount"
          with:
            department_id: "{{department_id}}"
          outputParameters:
            - name: employee_count
              type: integer
              mapping: "$.total_count"
            - name: open_positions
              type: integer
              mapping: "$.open_positions"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: headcount
          path: "/departments/{{department_id}}/headcount"
          inputParameters:
            - name: department_id
              in: path
          operations:
            - name: get-headcount
              method: GET

Retrieves retail employee details from Workday by employee ID.

naftiko: "0.5"
info:
  label: "Workday Retail Employee Lookup"
  description: "Retrieves retail employee details from Workday by employee ID."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: workday-retail
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves retail employee details from Workday by employee ID."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "workday-retail.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: workday-retail
      baseUri: "https://wd5-impl-services1.workday.com/ccx/service/hm"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: data
          path: "/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-data
              method: GET

Retrieves a Zendesk customer support ticket by ID, returning status and resolution.

naftiko: "0.5"
info:
  label: "Zendesk Customer Support Lookup"
  description: "Retrieves a Zendesk customer support ticket by ID, returning status and resolution."
  tags:
    - support
    - zendesk
capability:
  exposes:
    - type: mcp
      namespace: zendesk-support
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves a Zendesk customer support ticket by ID, returning status and resolution."
          inputParameters:
            - name: query_id
              in: body
              type: string
              description: "The lookup identifier."
          call: "zendesk-support.get-data"
          with:
            id: "{{query_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: zendesk-support
      baseUri: "https://hm.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: data
          path: "/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-data
              method: GET

Creates a Zoom meeting and sends invites via Outlook.

naftiko: "0.5"
info:
  label: "Zoom Meeting Scheduler"
  description: "Creates a Zoom meeting and sends invites via Outlook."
  tags:
    - communications
    - meetings
    - zoom
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: meeting-scheduler
      port: 8080
      tools:
        - name: schedule-meeting
          description: "Create Zoom meeting and send invites."
          inputParameters:
            - name: topic
              in: body
              type: string
              description: "Meeting topic."
            - name: start_time
              in: body
              type: string
              description: "Start time."
            - name: attendee_emails
              in: body
              type: array
              description: "Attendee emails."
          steps:
            - name: create-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                topic: "{{topic}}"
                start_time: "{{start_time}}"
            - name: send-invite
              type: call
              call: "outlook.send-email"
              with:
                to: "{{attendee_emails}}"
                subject: "Meeting: {{topic}}"
                body: "Join: {{create-meeting.join_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: meetings
          path: "/users/me/meetings"
          operations:
            - name: create-meeting
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0/me"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/sendMail"
          operations:
            - name: send-email
              method: POST