Sephora Capabilities

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

Sort
Expand

Detects abandoned carts in SAP Commerce Cloud, enriches with customer data from Salesforce, and sends a personalized recovery email via Salesforce Marketing Cloud.

naftiko: "0.5"
info:
  label: "Abandoned Cart Recovery Pipeline"
  description: "Detects abandoned carts in SAP Commerce Cloud, enriches with customer data from Salesforce, and sends a personalized recovery email via Salesforce Marketing Cloud."
  tags:
    - e-commerce
    - marketing
    - sap-commerce-cloud
    - salesforce
    - salesforce-marketing-cloud
capability:
  exposes:
    - type: mcp
      namespace: cart-recovery
      port: 8080
      tools:
        - name: recover-abandoned-cart
          description: "Given a cart ID and customer ID, enrich and send recovery email."
          inputParameters:
            - name: cart_id
              in: body
              type: string
              description: "The abandoned cart ID."
            - name: customer_id
              in: body
              type: string
              description: "The Salesforce customer ID."
          steps:
            - name: get-cart
              type: call
              call: "sapcc.get-cart"
              with:
                cart_id: "{{cart_id}}"
            - name: get-customer
              type: call
              call: "salesforce.get-customer"
              with:
                customer_id: "{{customer_id}}"
            - name: send-recovery-email
              type: call
              call: "sfmc.send-triggered-email"
              with:
                template_id: "abandoned_cart_recovery"
                subscriber_key: "{{customer_id}}"
                data: "customer_name={{get-customer.name}},cart_total={{get-cart.total}},top_item={{get-cart.items[0].name}},loyalty_tier={{get-customer.loyalty_tier}}"
  consumes:
    - type: http
      namespace: sapcc
      baseUri: "https://api.sephora.com/sap-commerce/v2"
      authentication:
        type: bearer
        token: "$secrets.sapcc_token"
      resources:
        - name: carts
          path: "/carts/{{cart_id}}"
          inputParameters:
            - name: cart_id
              in: path
          operations:
            - name: get-cart
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: customers
          path: "/sobjects/Account/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
    - type: http
      namespace: sfmc
      baseUri: "https://sephora.rest.marketingcloudapis.com/messaging/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: triggered-emails
          path: "/messageDefinitionSends/{{template_id}}/send"
          inputParameters:
            - name: template_id
              in: path
          operations:
            - name: send-triggered-email
              method: POST

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:
    - ci-cd
    - engineering
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: devops-ci
      port: 8080
      tools:
        - name: get-build-status
          description: "Look up latest Azure DevOps build."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "Project name."
            - name: pipeline_id
              in: body
              type: string
              description: "Pipeline ID."
          call: "azdevops.get-latest-build"
          with:
            project: "{{project}}"
            pipeline_id: "{{pipeline_id}}"
  consumes:
    - type: http
      namespace: azdevops
      baseUri: "https://dev.azure.com/sephora"
      authentication:
        type: basic
        username: "$secrets.azdevops_user"
        password: "$secrets.azdevops_pat"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: pipeline_id
              in: path
          operations:
            - name: get-latest-build
              method: GET

Retrieves a secret from Azure Key Vault.

naftiko: "0.5"
info:
  label: "Azure Key Vault Secret Retrieval"
  description: "Retrieves a secret from Azure Key Vault."
  tags: [security, credentials, azure-key-vault]
capability:
  exposes:
    - type: mcp
      namespace: secret-mgmt
      port: 8080
      tools:
        - name: get-secret
          description: "Retrieve a secret from Azure Key Vault."
          inputParameters:
            - name: secret_name
              in: body
              type: string
              description: "Secret name."
          call: "keyvault.get-secret"
          with:
            secret_name: "{{secret_name}}"
  consumes:
    - type: http
      namespace: keyvault
      baseUri: "https://sephora-vault.vault.azure.net"
      authentication:
        type: bearer
        token: "$secrets.azure_keyvault_token"
      resources:
        - name: secrets
          path: "/secrets/{{secret_name}}?api-version=7.4"
          inputParameters:
            - name: secret_name
              in: path
          operations:
            - name: get-secret
              method: GET

Orchestrates beauty advisor performance pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Beauty Advisor Performance Pipeline"
  description: "Orchestrates beauty advisor performance pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - beauty
    - sephora
    - jira
    - teams
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: beauty
      port: 8080
      tools:
        - name: beauty-advisor-performance-pipeline
          description: "Orchestrates beauty advisor performance pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "jira.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/beauty"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/beauty"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/beauty"
          operations:
            - name: execute-3
              method: POST

Orchestrates beauty box subscription pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Beauty Box Subscription Pipeline"
  description: "Orchestrates beauty box subscription pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - beauty
    - sephora
    - jira
    - teams
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: beauty
      port: 8080
      tools:
        - name: beauty-box-subscription-pipeline
          description: "Orchestrates beauty box subscription pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "jira.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/beauty"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/beauty"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/beauty"
          operations:
            - name: execute-3
              method: POST

Orchestrates beauty class enrollment pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Beauty Class Enrollment Pipeline"
  description: "Orchestrates beauty class enrollment pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - beauty
    - sephora
    - sephora
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: beauty
      port: 8080
      tools:
        - name: beauty-class-enrollment-pipeline
          description: "Orchestrates beauty class enrollment pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sephora.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: sephora-resource
          path: "/api/beauty"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/beauty"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/beauty"
          operations:
            - name: execute-3
              method: POST

Retrieves beauty class schedule lookup data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Beauty Class Schedule Lookup"
  description: "Retrieves beauty class schedule lookup data from the Sephora beauty retail systems."
  tags:
    - beauty
    - sephora
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: beauty
      port: 8080
      tools:
        - name: beauty-class-schedule-lookup
          description: "Retrieves beauty class schedule lookup data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.beauty-class-schedule-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/beauty/class/schedule/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: beauty-class-schedule-lookup
              method: GET

Retrieves beauty insider points lookup data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Beauty Insider Points Lookup"
  description: "Retrieves beauty insider points lookup data from the Sephora beauty retail systems."
  tags:
    - beauty
    - sephora
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: beauty
      port: 8080
      tools:
        - name: beauty-insider-points-lookup
          description: "Retrieves beauty insider points lookup data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.beauty-insider-points-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/beauty/insider/points/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: beauty-insider-points-lookup
              method: GET

Orchestrates beauty insider tier evaluation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Beauty Insider Tier Evaluation Pipeline"
  description: "Orchestrates beauty insider tier evaluation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - beauty
    - sephora
    - sephora
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: beauty
      port: 8080
      tools:
        - name: beauty-insider-tier-evaluation-pipeline
          description: "Orchestrates beauty insider tier evaluation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sephora.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: sephora-resource
          path: "/api/beauty"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/beauty"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/beauty"
          operations:
            - name: execute-3
              method: POST

Orchestrates beauty tech innovation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Beauty Tech Innovation Pipeline"
  description: "Orchestrates beauty tech innovation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - beauty
    - sephora
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: beauty
      port: 8080
      tools:
        - name: beauty-tech-innovation-pipeline
          description: "Orchestrates beauty tech innovation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/beauty"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/beauty"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/beauty"
          operations:
            - name: execute-3
              method: POST

Orchestrates beauty trend analysis pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Beauty Trend Analysis Pipeline"
  description: "Orchestrates beauty trend analysis pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - beauty
    - sephora
    - jira
    - teams
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: beauty
      port: 8080
      tools:
        - name: beauty-trend-analysis-pipeline
          description: "Orchestrates beauty trend analysis pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "jira.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/beauty"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/beauty"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/beauty"
          operations:
            - name: execute-3
              method: POST

Orchestrates brand launch coordination pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Brand Launch Coordination Pipeline"
  description: "Orchestrates brand launch coordination pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - brand
    - sephora
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: brand
      port: 8080
      tools:
        - name: brand-launch-coordination-pipeline
          description: "Orchestrates brand launch coordination pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/brand"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/brand"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/brand"
          operations:
            - name: execute-3
              method: POST

Retrieves brand page catalog lookup data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Brand Page Catalog Lookup"
  description: "Retrieves brand page catalog lookup data from the Sephora beauty retail systems."
  tags:
    - brand
    - sephora
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: brand
      port: 8080
      tools:
        - name: brand-page-catalog-lookup
          description: "Retrieves brand page catalog lookup data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.brand-page-catalog-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/brand/page/catalog/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: brand-page-catalog-lookup
              method: GET

Orchestrates brand performance reporting pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Brand Performance Reporting Pipeline"
  description: "Orchestrates brand performance reporting pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - brand
    - sephora
    - datadog
    - sephora
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: brand
      port: 8080
      tools:
        - name: brand-performance-reporting-pipeline
          description: "Orchestrates brand performance reporting pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sephora.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/brand"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: sephora-resource
          path: "/api/brand"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/brand"
          operations:
            - name: execute-3
              method: POST

Queries Cloudflare CDN performance for Sephora web properties.

naftiko: "0.5"
info:
  label: "Cloudflare CDN Performance"
  description: "Queries Cloudflare CDN performance for Sephora web properties."
  tags: [infrastructure, cdn, cloudflare]
capability:
  exposes:
    - type: mcp
      namespace: cdn
      port: 8080
      tools:
        - name: get-cdn-performance
          description: "Retrieve Cloudflare zone analytics."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "Cloudflare zone ID."
          call: "cloudflare.get-zone-analytics"
          with:
            zone_id: "{{zone_id}}"
  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

Searches Confluence for retail operations and brand documentation.

naftiko: "0.5"
info:
  label: "Confluence Documentation Search"
  description: "Searches Confluence for retail operations and brand documentation."
  tags:
    - documentation
    - knowledge-management
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: knowledge
      port: 8080
      tools:
        - name: search-docs
          description: "Search Confluence for documentation."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search keyword."
          call: "confluence.search"
          with:
            query: "{{query}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://sephora.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/search?cql=type=page AND text~\"{{query}}\""
          inputParameters:
            - name: query
              in: path
          operations:
            - name: search
              method: GET

Orchestrates customer accessibility pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Accessibility Pipeline"
  description: "Orchestrates customer accessibility pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - sephora
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-accessibility-pipeline
          description: "Orchestrates customer accessibility pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Retrieves customer beauty profile lookup data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Customer Beauty Profile Lookup"
  description: "Retrieves customer beauty profile lookup data from the Sephora beauty retail systems."
  tags:
    - customer
    - sephora
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-beauty-profile-lookup
          description: "Retrieves customer beauty profile lookup data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.customer-beauty-profile-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/customer/beauty/profile/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: customer-beauty-profile-lookup
              method: GET

Orchestrates customer birthday reward pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Birthday Reward Pipeline"
  description: "Orchestrates customer birthday reward pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - sephora
    - slack
    - jira
    - teams
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-birthday-reward-pipeline
          description: "Orchestrates customer birthday reward pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer cross sell pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Cross Sell Pipeline"
  description: "Orchestrates customer cross sell pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - sephora
    - sendgrid
    - shopify
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-cross-sell-pipeline
          description: "Orchestrates customer cross sell pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sendgrid.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "shopify.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://sephora.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: shopify-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer data enrichment pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Data Enrichment Pipeline"
  description: "Orchestrates customer data enrichment pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - sephora
    - sephora
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-data-enrichment-pipeline
          description: "Orchestrates customer data enrichment pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sephora.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: sephora-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer gifting experience pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Gifting Experience Pipeline"
  description: "Orchestrates customer gifting experience pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - sephora
    - slack
    - jira
    - teams
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-gifting-experience-pipeline
          description: "Orchestrates customer gifting experience pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer loyalty program analytics pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Loyalty Program Analytics Pipeline"
  description: "Orchestrates customer loyalty program analytics pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - sephora
    - sendgrid
    - shopify
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-loyalty-program-analytics-pipeline
          description: "Orchestrates customer loyalty program analytics pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sendgrid.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "shopify.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://sephora.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: shopify-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

When a Beauty Insider member reaches a reward threshold in Salesforce, updates their tier, sends a personalized reward email via Salesforce Marketing Cloud, and notifies the loyalty program team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Customer Loyalty Reward Orchestrator"
  description: "When a Beauty Insider member reaches a reward threshold in Salesforce, updates their tier, sends a personalized reward email via Salesforce Marketing Cloud, and notifies the loyalty program team via Microsoft Teams."
  tags:
    - loyalty
    - customer-engagement
    - salesforce
    - salesforce-marketing-cloud
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: loyalty-rewards
      port: 8080
      tools:
        - name: process-loyalty-reward
          description: "Given a customer ID and new tier, update Salesforce, send reward email, and notify the team."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Salesforce customer record ID."
            - name: new_tier
              in: body
              type: string
              description: "The new Beauty Insider tier (Insider, VIB, Rouge)."
            - name: points_balance
              in: body
              type: number
              description: "Current points balance."
          steps:
            - name: get-customer
              type: call
              call: "salesforce.get-customer"
              with:
                customer_id: "{{customer_id}}"
            - name: update-tier
              type: call
              call: "salesforce.update-customer-tier"
              with:
                customer_id: "{{customer_id}}"
                new_tier: "{{new_tier}}"
            - name: send-reward-email
              type: call
              call: "sfmc.send-triggered-email"
              with:
                template_id: "loyalty_tier_upgrade"
                subscriber_key: "{{customer_id}}"
                data: "customer_name={{get-customer.name}},old_tier={{get-customer.loyalty_tier}},new_tier={{new_tier}},points={{points_balance}}"
            - name: notify-loyalty-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "loyalty_program"
                text: "Loyalty Upgrade: {{get-customer.name}} moved from {{get-customer.loyalty_tier}} to {{new_tier}}. Points: {{points_balance}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: customers
          path: "/sobjects/Account/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
            - name: update-customer-tier
              method: PATCH
    - type: http
      namespace: sfmc
      baseUri: "https://sephora.rest.marketingcloudapis.com/messaging/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: triggered-emails
          path: "/messageDefinitionSends/{{template_id}}/send"
          inputParameters:
            - name: template_id
              in: path
          operations:
            - name: send-triggered-email
              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

Orchestrates customer replenishment reminder pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Replenishment Reminder Pipeline"
  description: "Orchestrates customer replenishment reminder pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - sephora
    - slack
    - jira
    - teams
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-replenishment-reminder-pipeline
          description: "Orchestrates customer replenishment reminder pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

When a product return is initiated in SAP Commerce Cloud, updates the customer record in Salesforce, creates a ServiceNow logistics task, and sends a return confirmation email via Salesforce Marketing Cloud.

naftiko: "0.5"
info:
  label: "Customer Return Processing Pipeline"
  description: "When a product return is initiated in SAP Commerce Cloud, updates the customer record in Salesforce, creates a ServiceNow logistics task, and sends a return confirmation email via Salesforce Marketing Cloud."
  tags:
    - e-commerce
    - returns
    - sap-commerce-cloud
    - salesforce
    - servicenow
    - salesforce-marketing-cloud
capability:
  exposes:
    - type: mcp
      namespace: returns
      port: 8080
      tools:
        - name: process-return
          description: "Given an order ID and return reason, process the return across systems."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The order ID."
            - name: customer_id
              in: body
              type: string
              description: "The Salesforce customer ID."
            - name: return_reason
              in: body
              type: string
              description: "The return reason."
          steps:
            - name: get-order
              type: call
              call: "sapcc.get-order"
              with:
                order_id: "{{order_id}}"
            - name: update-customer
              type: call
              call: "salesforce.log-return"
              with:
                customer_id: "{{customer_id}}"
                order_id: "{{order_id}}"
                reason: "{{return_reason}}"
                amount: "{{get-order.total}}"
            - name: create-logistics-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Return Processing: Order {{order_id}}"
                assigned_group: "Returns_Logistics"
                description: "Order {{order_id}}. Amount: {{get-order.total}}. Reason: {{return_reason}}."
            - name: send-confirmation
              type: call
              call: "sfmc.send-triggered-email"
              with:
                template_id: "return_confirmation"
                subscriber_key: "{{customer_id}}"
                data: "order_id={{order_id}},return_reason={{return_reason}},refund_amount={{get-order.total}}"
  consumes:
    - type: http
      namespace: sapcc
      baseUri: "https://api.sephora.com/sap-commerce/v2"
      authentication:
        type: bearer
        token: "$secrets.sapcc_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: returns
          path: "/sobjects/Return__c"
          operations:
            - name: log-return
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: sfmc
      baseUri: "https://sephora.rest.marketingcloudapis.com/messaging/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: triggered-emails
          path: "/messageDefinitionSends/{{template_id}}/send"
          inputParameters:
            - name: template_id
              in: path
          operations:
            - name: send-triggered-email
              method: POST

Orchestrates customer review moderation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Review Moderation Pipeline"
  description: "Orchestrates customer review moderation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - sephora
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-review-moderation-pipeline
          description: "Orchestrates customer review moderation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer skincare consultation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Skincare Consultation Pipeline"
  description: "Orchestrates customer skincare consultation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - sephora
    - shopify
    - datadog
    - sephora
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-skincare-consultation-pipeline
          description: "Orchestrates customer skincare consultation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "shopify.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sephora.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://sephora.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: shopify-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: sephora-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer win back pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Win Back Pipeline"
  description: "Orchestrates customer win back pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - sephora
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-win-back-pipeline
          description: "Orchestrates customer win back pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/customer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/customer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/customer"
          operations:
            - name: execute-3
              method: POST

Queries Datadog for e-commerce application performance metrics.

naftiko: "0.5"
info:
  label: "Datadog Application Performance Monitor"
  description: "Queries Datadog for e-commerce application performance metrics."
  tags:
    - monitoring
    - performance
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: apm
      port: 8080
      tools:
        - name: get-app-performance
          description: "Query Datadog for app performance."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The Datadog service name."
          call: "datadog.get-service-metrics"
          with:
            service_name: "{{service_name}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: services
          path: "/service_dependencies?service={{service_name}}"
          inputParameters:
            - name: service_name
              in: path
          operations:
            - name: get-service-metrics
              method: GET

Orchestrates digital content creation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Digital Content Creation Pipeline"
  description: "Orchestrates digital content creation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - digital
    - sephora
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: digital
      port: 8080
      tools:
        - name: digital-content-creation-pipeline
          description: "Orchestrates digital content creation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/digital"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/digital"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/digital"
          operations:
            - name: execute-3
              method: POST

Retrieves DocuSign envelope status for brand partnership agreements.

naftiko: "0.5"
info:
  label: "DocuSign Agreement Status"
  description: "Retrieves DocuSign envelope status for brand partnership agreements."
  tags: [legal, document-signing, docusign]
capability:
  exposes:
    - type: mcp
      namespace: doc-signing
      port: 8080
      tools:
        - name: get-envelope-status
          description: "Look up a DocuSign envelope."
          inputParameters:
            - name: envelope_id
              in: body
              type: string
              description: "DocuSign envelope ID."
          call: "docusign.get-envelope"
          with:
            envelope_id: "{{envelope_id}}"
  consumes:
    - type: http
      namespace: docusign
      baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/$secrets.docusign_account_id"
      authentication:
        type: bearer
        token: "$secrets.docusign_token"
      resources:
        - name: envelopes
          path: "/envelopes/{{envelope_id}}"
          inputParameters:
            - name: envelope_id
              in: path
          operations:
            - name: get-envelope
              method: GET

Retrieves an e-commerce order status from SAP Commerce Cloud, returning order state, shipping status, and estimated delivery date.

naftiko: "0.5"
info:
  label: "E-Commerce Order Status Lookup"
  description: "Retrieves an e-commerce order status from SAP Commerce Cloud, returning order state, shipping status, and estimated delivery date."
  tags:
    - e-commerce
    - orders
    - sap-commerce-cloud
capability:
  exposes:
    - type: mcp
      namespace: ecommerce-orders
      port: 8080
      tools:
        - name: get-order-status
          description: "Look up an order in SAP Commerce Cloud."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The order ID."
          call: "sapcc.get-order"
          with:
            order_id: "{{order_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: shipping_status
              type: string
              mapping: "$.deliveryStatus"
            - name: estimated_delivery
              type: string
              mapping: "$.estimatedDeliveryDate"
            - name: total
              type: number
              mapping: "$.totalPrice.value"
  consumes:
    - type: http
      namespace: sapcc
      baseUri: "https://api.sephora.com/sap-commerce/v2"
      authentication:
        type: bearer
        token: "$secrets.sapcc_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET

Retrieves email campaign performance metrics from Salesforce Marketing Cloud, including open rates, click rates, and conversion metrics.

naftiko: "0.5"
info:
  label: "Email Campaign Performance Tracker"
  description: "Retrieves email campaign performance metrics from Salesforce Marketing Cloud, including open rates, click rates, and conversion metrics."
  tags:
    - marketing
    - email
    - salesforce-marketing-cloud
capability:
  exposes:
    - type: mcp
      namespace: email-performance
      port: 8080
      tools:
        - name: get-campaign-performance
          description: "Retrieve SFMC email campaign performance metrics."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The SFMC campaign ID."
          call: "sfmc.get-campaign-metrics"
          with:
            campaign_id: "{{campaign_id}}"
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://sephora.rest.marketingcloudapis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: campaigns
          path: "/campaigns/{{campaign_id}}/metrics"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-metrics
              method: GET

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Given a Workday employee ID and start date, orchestrate onboarding."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD."
            - name: department
              in: body
              type: string
              description: "The department."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "new_hires"
                text: "Welcome to Sephora, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Documents: {{provision-folder.url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.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: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves expense reports from SAP Concur, validates against Workday cost center, and opens a ServiceNow task.

naftiko: "0.5"
info:
  label: "Expense Report Review Pipeline"
  description: "Retrieves expense reports from SAP Concur, validates against Workday cost center, and opens a ServiceNow task."
  tags:
    - finance
    - expense
    - sap-concur
    - workday
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: expense-review
      port: 8080
      tools:
        - name: review-expense-report
          description: "Validate and flag expense exceptions."
          inputParameters:
            - name: expense_report_id
              in: body
              type: string
              description: "Concur report ID."
            - name: employee_id
              in: body
              type: string
              description: "Workday employee ID."
          steps:
            - name: get-expense-report
              type: call
              call: "concur.get-expense-report"
              with:
                report_id: "{{expense_report_id}}"
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: open-review-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Expense review: {{get-expense-report.report_name}} — {{get-employee.full_name}}"
                assigned_group: "Finance_Audit"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://www.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-expense-report
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

Retrieves Facebook Ads campaign performance metrics for the Sephora marketing team.

naftiko: "0.5"
info:
  label: "Facebook Ads Campaign Performance"
  description: "Retrieves Facebook Ads campaign performance metrics for the Sephora marketing team."
  tags:
    - marketing
    - advertising
    - facebook
capability:
  exposes:
    - type: mcp
      namespace: paid-media
      port: 8080
      tools:
        - name: get-fb-campaign-performance
          description: "Retrieve Facebook Ads campaign metrics."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The Facebook campaign ID."
          call: "facebook.get-campaign-insights"
          with:
            campaign_id: "{{campaign_id}}"
  consumes:
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_token"
      resources:
        - name: insights
          path: "/{{campaign_id}}/insights?fields=impressions,clicks,spend,actions"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-insights
              method: GET

Retrieves Figma file metadata for beauty product design assets.

naftiko: "0.5"
info:
  label: "Figma Design File Viewer"
  description: "Retrieves Figma file metadata for beauty product design assets."
  tags: [design, ux, figma]
capability:
  exposes:
    - type: mcp
      namespace: design
      port: 8080
      tools:
        - name: get-figma-file
          description: "Retrieve Figma file metadata."
          inputParameters:
            - name: file_key
              in: body
              type: string
              description: "Figma file key."
          call: "figma.get-file"
          with:
            file_key: "{{file_key}}"
  consumes:
    - type: http
      namespace: figma
      baseUri: "https://api.figma.com/v1"
      authentication:
        type: bearer
        token: "$secrets.figma_token"
      resources:
        - name: files
          path: "/files/{{file_key}}"
          inputParameters:
            - name: file_key
              in: path
          operations:
            - name: get-file
              method: GET

Retrieves fragrance profile matcher data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Fragrance Profile Matcher"
  description: "Retrieves fragrance profile matcher data from the Sephora beauty retail systems."
  tags:
    - fragrance
    - sephora
    - matcher
capability:
  exposes:
    - type: mcp
      namespace: fragrance
      port: 8080
      tools:
        - name: fragrance-profile-matcher
          description: "Retrieves fragrance profile matcher data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.fragrance-profile-matcher"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/fragrance/profile/matcher/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: fragrance-profile-matcher
              method: GET

Retrieves gift set availability check data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Gift Set Availability Check"
  description: "Retrieves gift set availability check data from the Sephora beauty retail systems."
  tags:
    - gift
    - sephora
    - check
capability:
  exposes:
    - type: mcp
      namespace: gift
      port: 8080
      tools:
        - name: gift-set-availability-check
          description: "Retrieves gift set availability check data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.gift-set-availability-check"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/gift/set/availability/check/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: gift-set-availability-check
              method: GET

Retrieves GitHub pull request status.

naftiko: "0.5"
info:
  label: "GitHub Pull Request Status"
  description: "Retrieves GitHub pull request status."
  tags:
    - engineering
    - ci-cd
    - github
capability:
  exposes:
    - type: mcp
      namespace: engineering-ci
      port: 8080
      tools:
        - name: get-pr-status
          description: "Look up a GitHub pull request."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "The repo in owner/repo format."
            - name: pr_number
              in: body
              type: string
              description: "The PR number."
          call: "github.get-pull-request"
          with:
            repo: "{{repo}}"
            pr_number: "{{pr_number}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com/repos"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: pull-requests
          path: "/{{repo}}/pulls/{{pr_number}}"
          inputParameters:
            - name: repo
              in: path
            - name: pr_number
              in: path
          operations:
            - name: get-pull-request
              method: GET

Retrieves latest GitLab CI pipeline status.

naftiko: "0.5"
info:
  label: "GitLab CI Pipeline Status"
  description: "Retrieves latest GitLab CI pipeline status."
  tags: [ci-cd, engineering, gitlab]
capability:
  exposes:
    - type: mcp
      namespace: gitlab-ci
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Look up latest GitLab pipeline."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "GitLab project ID."
          call: "gitlab.get-latest-pipeline"
          with:
            project_id: "{{project_id}}"
  consumes:
    - type: http
      namespace: gitlab
      baseUri: "https://gitlab.sephora.com/api/v4"
      authentication:
        type: bearer
        token: "$secrets.gitlab_token"
      resources:
        - name: pipelines
          path: "/projects/{{project_id}}/pipelines?per_page=1"
          inputParameters:
            - name: project_id
              in: path
          operations:
            - name: get-latest-pipeline
              method: GET

Retrieves Google Ads campaign performance metrics for the digital marketing team.

naftiko: "0.5"
info:
  label: "Google Ads Campaign Performance"
  description: "Retrieves Google Ads campaign performance metrics for the digital marketing team."
  tags:
    - marketing
    - advertising
    - google-ads
capability:
  exposes:
    - type: mcp
      namespace: google-ads
      port: 8080
      tools:
        - name: get-campaign-performance
          description: "Retrieve Google Ads campaign metrics."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Google Ads customer ID."
            - name: campaign_id
              in: body
              type: string
              description: "The campaign ID."
          call: "googleads.get-campaign-metrics"
          with:
            customer_id: "{{customer_id}}"
            campaign_id: "{{campaign_id}}"
  consumes:
    - type: http
      namespace: googleads
      baseUri: "https://googleads.googleapis.com/v15"
      authentication:
        type: bearer
        token: "$secrets.google_ads_token"
      resources:
        - name: campaigns
          path: "/customers/{{customer_id}}/googleAds:searchStream"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-campaign-metrics
              method: POST

Retrieves e-commerce funnel analytics from Google Analytics for the Sephora website.

naftiko: "0.5"
info:
  label: "Google Analytics E-Commerce Funnel"
  description: "Retrieves e-commerce funnel analytics from Google Analytics for the Sephora website."
  tags:
    - marketing
    - analytics
    - google-analytics
    - e-commerce
capability:
  exposes:
    - type: mcp
      namespace: web-analytics
      port: 8080
      tools:
        - name: get-ecommerce-funnel
          description: "Retrieve e-commerce funnel metrics."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "Google Analytics property ID."
            - name: start_date
              in: body
              type: string
              description: "Start date."
            - name: end_date
              in: body
              type: string
              description: "End date."
          call: "ga.run-report"
          with:
            property_id: "{{property_id}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              method: POST

Orchestrates influencer partnership pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Influencer Partnership Pipeline"
  description: "Orchestrates influencer partnership pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - influencer
    - sephora
    - sendgrid
    - shopify
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: influencer
      port: 8080
      tools:
        - name: influencer-partnership-pipeline
          description: "Orchestrates influencer partnership pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sendgrid.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "shopify.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/influencer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://sephora.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: shopify-resource
          path: "/api/influencer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/influencer"
          operations:
            - name: execute-3
              method: POST

Checks Informatica data integration job status for retail data pipelines.

naftiko: "0.5"
info:
  label: "Informatica Data Integration Monitor"
  description: "Checks Informatica data integration job status for retail data pipelines."
  tags: [data-engineering, etl, informatica]
capability:
  exposes:
    - type: mcp
      namespace: data-integration
      port: 8080
      tools:
        - name: get-job-status
          description: "Check Informatica job status."
          inputParameters:
            - name: job_id
              in: body
              type: string
              description: "Informatica job ID."
          call: "informatica.get-job"
          with:
            job_id: "{{job_id}}"
  consumes:
    - type: http
      namespace: informatica
      baseUri: "https://dm-us.informaticacloud.com/saas/api/v2"
      authentication:
        type: bearer
        token: "$secrets.informatica_token"
      resources:
        - name: jobs
          path: "/job/{{job_id}}"
          inputParameters:
            - name: job_id
              in: path
          operations:
            - name: get-job
              method: GET

Retrieves engagement metrics for Sephora Instagram posts.

naftiko: "0.5"
info:
  label: "Instagram Beauty Content Tracker"
  description: "Retrieves engagement metrics for Sephora Instagram posts."
  tags:
    - marketing
    - social-media
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: social-media
      port: 8080
      tools:
        - name: get-instagram-engagement
          description: "Retrieve engagement metrics for an Instagram post."
          inputParameters:
            - name: post_id
              in: body
              type: string
              description: "The Instagram media ID."
          call: "instagram.get-media-insights"
          with:
            post_id: "{{post_id}}"
  consumes:
    - type: http
      namespace: instagram
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: media-insights
          path: "/{{post_id}}/insights?metric=likes,comments,reach"
          inputParameters:
            - name: post_id
              in: path
          operations:
            - name: get-media-insights
              method: GET

Orchestrates inventory allocation optimization pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Inventory Allocation Optimization Pipeline"
  description: "Orchestrates inventory allocation optimization pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - inventory
    - sephora
    - teams
    - sendgrid
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: inventory
      port: 8080
      tools:
        - name: inventory-allocation-optimization-pipeline
          description: "Orchestrates inventory allocation optimization pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sendgrid.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "shopify.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/inventory"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/inventory"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://sephora.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: shopify-resource
          path: "/api/inventory"
          operations:
            - name: execute-3
              method: POST

Checks SAP inventory levels for beauty products, compares against reorder points, creates a SAP purchase requisition when stock is low, and notifies the supply chain team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Inventory Replenishment Alert Pipeline"
  description: "Checks SAP inventory levels for beauty products, compares against reorder points, creates a SAP purchase requisition when stock is low, and notifies the supply chain team via Microsoft Teams."
  tags:
    - supply-chain
    - inventory
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: inventory-replenish
      port: 8080
      tools:
        - name: check-and-reorder
          description: "Given a material number and plant, check stock levels and create a requisition if low."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: plant
              in: body
              type: string
              description: "The SAP plant (store or DC) code."
          steps:
            - name: get-stock
              type: call
              call: "sap.get-material-stock"
              with:
                material_number: "{{material_number}}"
                plant: "{{plant}}"
            - name: create-requisition
              type: call
              call: "sap.create-requisition"
              with:
                material_number: "{{material_number}}"
                plant: "{{plant}}"
                quantity: "{{get-stock.reorder_quantity}}"
            - name: notify-supply-chain
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "supply_chain_ops"
                text: "Inventory Alert: {{material_number}} at {{plant}}. Current stock: {{get-stock.available_quantity}}. Reorder point: {{get-stock.reorder_point}}. Requisition: {{create-requisition.req_number}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sephora-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: material-stock
          path: "/A_MatlStkInAcctMod(Material='{{material_number}}',Plant='{{plant}}')"
          inputParameters:
            - name: material_number
              in: path
            - name: plant
              in: path
          operations:
            - name: get-material-stock
              method: GET
        - name: requisitions
          path: "/A_PurchaseRequisition"
          operations:
            - name: create-requisition
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Fetches active sprint details from Jira.

naftiko: "0.5"
info:
  label: "Jira Sprint Tracker"
  description: "Fetches active sprint details from Jira."
  tags:
    - engineering
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: engineering-pm
      port: 8080
      tools:
        - name: get-sprint-status
          description: "Retrieve active sprint for a Jira board."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID."
          call: "jira.get-active-sprint"
          with:
            board_id: "{{board_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint?state=active"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-active-sprint
              method: GET

Generates release notes from Jira issues and publishes to Confluence.

naftiko: "0.5"
info:
  label: "Jira to Confluence Release Notes"
  description: "Generates release notes from Jira issues and publishes to Confluence."
  tags:
    - engineering
    - release-management
    - jira
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: release-mgmt
      port: 8080
      tools:
        - name: generate-release-notes
          description: "Fetch Jira issues and publish release notes."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
            - name: version_name
              in: body
              type: string
              description: "Release version."
          steps:
            - name: get-issues
              type: call
              call: "jira.search-issues"
              with:
                jql: "project = {{project_key}} AND fixVersion = '{{version_name}}' AND status = Done"
            - name: create-notes
              type: call
              call: "confluence.create-page"
              with:
                space_key: "ENG"
                title: "Release Notes: {{project_key}} {{version_name}}"
                body: "Release {{version_name}}. Issues: {{get-issues.total}}."
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "engineering_releases"
                text: "Release notes: {{project_key}} {{version_name}}. URL: {{create-notes.url}}."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search?jql={{jql}}"
          inputParameters:
            - name: jql
              in: path
          operations:
            - name: search-issues
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://sephora.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              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 LinkedIn job posting status.

naftiko: "0.5"
info:
  label: "LinkedIn Recruitment Status"
  description: "Retrieves LinkedIn job posting status."
  tags:
    - recruitment
    - linkedin
capability:
  exposes:
    - type: mcp
      namespace: recruitment
      port: 8080
      tools:
        - name: get-job-posting-status
          description: "Look up a LinkedIn job posting."
          inputParameters:
            - name: job_posting_id
              in: body
              type: string
              description: "The LinkedIn job posting ID."
          call: "linkedin.get-job-posting"
          with:
            job_posting_id: "{{job_posting_id}}"
  consumes:
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: job-postings
          path: "/jobPostings/{{job_posting_id}}"
          inputParameters:
            - name: job_posting_id
              in: path
          operations:
            - name: get-job-posting
              method: GET

Retrieves a Looker dashboard for retail performance analytics.

naftiko: "0.5"
info:
  label: "Looker Retail Analytics Dashboard"
  description: "Retrieves a Looker dashboard for retail performance analytics."
  tags: [analytics, retail, looker]
capability:
  exposes:
    - type: mcp
      namespace: looker-analytics
      port: 8080
      tools:
        - name: get-retail-dashboard
          description: "Retrieve a Looker retail dashboard."
          inputParameters:
            - name: dashboard_id
              in: body
              type: string
              description: "Looker dashboard ID."
          call: "looker.get-dashboard"
          with:
            dashboard_id: "{{dashboard_id}}"
  consumes:
    - type: http
      namespace: looker
      baseUri: "https://sephora.looker.com/api/4.0"
      authentication:
        type: bearer
        token: "$secrets.looker_token"
      resources:
        - name: dashboards
          path: "/dashboards/{{dashboard_id}}"
          inputParameters:
            - name: dashboard_id
              in: path
          operations:
            - name: get-dashboard
              method: GET

Creates a marketing campaign in Salesforce Marketing Cloud, sets up Google Analytics tracking, configures Google Tag Manager events, and notifies the marketing team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Marketing Campaign Launch Pipeline"
  description: "Creates a marketing campaign in Salesforce Marketing Cloud, sets up Google Analytics tracking, configures Google Tag Manager events, and notifies the marketing team via Microsoft Teams."
  tags:
    - marketing
    - campaigns
    - salesforce-marketing-cloud
    - google-analytics
    - google-tag-manager
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: marketing-campaigns
      port: 8080
      tools:
        - name: launch-campaign
          description: "Given campaign details, create in SFMC, configure analytics, and notify the team."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "The campaign name."
            - name: target_segment
              in: body
              type: string
              description: "The target audience segment."
            - name: launch_date
              in: body
              type: string
              description: "The campaign launch date."
            - name: utm_campaign
              in: body
              type: string
              description: "The UTM campaign parameter."
          steps:
            - name: create-campaign
              type: call
              call: "sfmc.create-campaign"
              with:
                name: "{{campaign_name}}"
                segment: "{{target_segment}}"
                launch_date: "{{launch_date}}"
            - name: setup-gtm-tag
              type: call
              call: "gtm.create-tag"
              with:
                tag_name: "campaign_{{utm_campaign}}"
                trigger_type: "pageview"
                utm_campaign: "{{utm_campaign}}"
            - name: notify-marketing
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "marketing_campaigns"
                text: "Campaign Launched: {{campaign_name}} targeting {{target_segment}}. Launch: {{launch_date}}. UTM: {{utm_campaign}}. SFMC ID: {{create-campaign.campaign_id}}."
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://sephora.rest.marketingcloudapis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: gtm
      baseUri: "https://www.googleapis.com/tagmanager/v2"
      authentication:
        type: bearer
        token: "$secrets.google_tagmanager_token"
      resources:
        - name: tags
          path: "/accounts/$secrets.gtm_account_id/containers/$secrets.gtm_container_id/workspaces/default/tags"
          operations:
            - name: create-tag
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Sends a message to a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notifier"
  description: "Sends a message to a Microsoft Teams channel."
  tags:
    - communications
    - messaging
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: comms
      port: 8080
      tools:
        - name: send-teams-notification
          description: "Send a message to a Teams channel."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "The Teams channel ID."
            - name: message
              in: body
              type: string
              description: "The message text."
          call: "msteams.send-message"
          with:
            channel_id: "{{channel_id}}"
            text: "{{message}}"
  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-message
              method: POST

Queries New Relic for e-commerce application performance.

naftiko: "0.5"
info:
  label: "New Relic Application Performance"
  description: "Queries New Relic for e-commerce application performance."
  tags: [monitoring, performance, new-relic]
capability:
  exposes:
    - type: mcp
      namespace: apm-detailed
      port: 8080
      tools:
        - name: get-app-performance
          description: "Check New Relic APM metrics."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "New Relic app ID."
          call: "newrelic.get-app"
          with:
            app_id: "{{app_id}}"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apiKey
        key: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications/{{app_id}}.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-app
              method: GET

Retrieves Palo Alto firewall rules for security auditing.

naftiko: "0.5"
info:
  label: "Palo Alto Firewall Audit"
  description: "Retrieves Palo Alto firewall rules for security auditing."
  tags: [security, firewall, palo-alto-networks]
capability:
  exposes:
    - type: mcp
      namespace: security-audit
      port: 8080
      tools:
        - name: audit-firewall-rules
          description: "Query Palo Alto for firewall rules."
          inputParameters:
            - name: device_group
              in: body
              type: string
              description: "Device group."
          call: "paloalto.get-security-rules"
          with:
            device_group: "{{device_group}}"
  consumes:
    - type: http
      namespace: paloalto
      baseUri: "https://panorama.sephora.com/restapi/v10.2"
      authentication:
        type: apiKey
        key: "$secrets.paloalto_api_key"
      resources:
        - name: security-rules
          path: "/Policies/SecurityRules?location=device-group&device-group={{device_group}}"
          inputParameters:
            - name: device_group
              in: path
          operations:
            - name: get-security-rules
              method: GET

Orchestrates personalized product discovery pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Personalized Product Discovery Pipeline"
  description: "Orchestrates personalized product discovery pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - personalized
    - sephora
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: personalized
      port: 8080
      tools:
        - name: personalized-product-discovery-pipeline
          description: "Orchestrates personalized product discovery pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/personalized"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/personalized"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/personalized"
          operations:
            - name: execute-3
              method: POST

Fetches customer purchase history from Salesforce, runs a recommendation model in Azure Machine Learning, and delivers personalized recommendations via Salesforce Marketing Cloud email.

naftiko: "0.5"
info:
  label: "Personalized Product Recommendation Pipeline"
  description: "Fetches customer purchase history from Salesforce, runs a recommendation model in Azure Machine Learning, and delivers personalized recommendations via Salesforce Marketing Cloud email."
  tags:
    - personalization
    - machine-learning
    - salesforce
    - azure-machine-learning
    - salesforce-marketing-cloud
capability:
  exposes:
    - type: mcp
      namespace: recommendations
      port: 8080
      tools:
        - name: send-personalized-recs
          description: "Given a customer ID, fetch history, run recommendations, and send personalized email."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Salesforce customer ID."
          steps:
            - name: get-purchase-history
              type: call
              call: "salesforce.get-purchase-history"
              with:
                customer_id: "{{customer_id}}"
            - name: get-recommendations
              type: call
              call: "azureml.recommend"
              with:
                customer_id: "{{customer_id}}"
                recent_products: "{{get-purchase-history.recent_skus}}"
            - name: send-rec-email
              type: call
              call: "sfmc.send-triggered-email"
              with:
                template_id: "personalized_recommendations"
                subscriber_key: "{{customer_id}}"
                data: "product_1={{get-recommendations.items[0].name}},product_2={{get-recommendations.items[1].name}},product_3={{get-recommendations.items[2].name}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: purchase-history
          path: "/sobjects/Account/{{customer_id}}/Purchase_History__r"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-purchase-history
              method: GET
    - type: http
      namespace: azureml
      baseUri: "https://sephora-recs.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_ml_token"
      resources:
        - name: scoring
          path: "/score"
          operations:
            - name: recommend
              method: POST
    - type: http
      namespace: sfmc
      baseUri: "https://sephora.rest.marketingcloudapis.com/messaging/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: triggered-emails
          path: "/messageDefinitionSends/{{template_id}}/send"
          inputParameters:
            - name: template_id
              in: path
          operations:
            - name: send-triggered-email
              method: POST

Triggers Postman collection test runs for e-commerce API testing.

naftiko: "0.5"
info:
  label: "Postman API Test Runner"
  description: "Triggers Postman collection test runs for e-commerce API testing."
  tags: [engineering, testing, postman]
capability:
  exposes:
    - type: mcp
      namespace: api-testing
      port: 8080
      tools:
        - name: run-api-tests
          description: "Trigger a Postman collection run."
          inputParameters:
            - name: collection_id
              in: body
              type: string
              description: "Postman collection ID."
          call: "postman.run-collection"
          with:
            collection_id: "{{collection_id}}"
  consumes:
    - type: http
      namespace: postman
      baseUri: "https://api.getpostman.com"
      authentication:
        type: apiKey
        key: "$secrets.postman_api_key"
      resources:
        - name: monitors
          path: "/monitors/{{collection_id}}/run"
          inputParameters:
            - name: collection_id
              in: path
          operations:
            - name: run-collection
              method: POST

Triggers a Power BI dataset refresh for the retail operations dashboard.

naftiko: "0.5"
info:
  label: "Power BI Retail Dashboard Refresh"
  description: "Triggers a Power BI dataset refresh for the retail operations dashboard."
  tags:
    - analytics
    - retail
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: retail-analytics
      port: 8080
      tools:
        - name: refresh-retail-dashboard
          description: "Trigger a Power BI dataset refresh."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

When a purchase requisition exceeds threshold, routes for approval via Workday and notifies via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Procurement Approval Pipeline"
  description: "When a purchase requisition exceeds threshold, routes for approval via Workday and notifies via Microsoft Teams."
  tags:
    - procurement
    - approval
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: procurement-approval
      port: 8080
      tools:
        - name: route-requisition-approval
          description: "Route a requisition for manager approval."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The requisition ID."
            - name: requestor_employee_id
              in: body
              type: string
              description: "Workday employee ID."
            - name: spend_amount
              in: body
              type: number
              description: "The spend amount."
          steps:
            - name: get-requestor
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{requestor_employee_id}}"
            - name: get-manager
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{get-requestor.manager_id}}"
            - name: notify-approver
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "procurement_approvals"
                text: "Approval Required: Requisition {{requisition_id}} from {{get-requestor.full_name}} for ${{spend_amount}}."
  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: 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 product allergen check data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Product Allergen Check"
  description: "Retrieves product allergen check data from the Sephora beauty retail systems."
  tags:
    - product
    - sephora
    - check
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-allergen-check
          description: "Retrieves product allergen check data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.product-allergen-check"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/product/allergen/check/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: product-allergen-check
              method: GET

Retrieves product clean beauty certification data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Product Clean Beauty Certification"
  description: "Retrieves product clean beauty certification data from the Sephora beauty retail systems."
  tags:
    - product
    - sephora
    - certification
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-clean-beauty-certification
          description: "Retrieves product clean beauty certification data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.product-clean-beauty-certification"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/product/clean/beauty/certification/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: product-clean-beauty-certification
              method: GET

Orchestrates product exclusivity management pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Product Exclusivity Management Pipeline"
  description: "Orchestrates product exclusivity management pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - product
    - sephora
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-exclusivity-management-pipeline
          description: "Orchestrates product exclusivity management pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/product"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/product"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/product"
          operations:
            - name: execute-3
              method: POST

Retrieves product ingredient list data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Product Ingredient List"
  description: "Retrieves product ingredient list data from the Sephora beauty retail systems."
  tags:
    - product
    - sephora
    - list
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-ingredient-list
          description: "Retrieves product ingredient list data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.product-ingredient-list"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/product/ingredient/list/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: product-ingredient-list
              method: GET

Orchestrates product lifecycle management pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Product Lifecycle Management Pipeline"
  description: "Orchestrates product lifecycle management pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - product
    - sephora
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-lifecycle-management-pipeline
          description: "Orchestrates product lifecycle management pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/product"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/product"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/product"
          operations:
            - name: execute-3
              method: POST

Fetches new product reviews from SAP Commerce Cloud, runs sentiment analysis via Azure Machine Learning, updates Salesforce product ratings, and alerts the brand team via Microsoft Teams for negative sentiment spikes.

naftiko: "0.5"
info:
  label: "Product Review Sentiment Pipeline"
  description: "Fetches new product reviews from SAP Commerce Cloud, runs sentiment analysis via Azure Machine Learning, updates Salesforce product ratings, and alerts the brand team via Microsoft Teams for negative sentiment spikes."
  tags:
    - marketing
    - sentiment-analysis
    - sap-commerce-cloud
    - azure-machine-learning
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: review-sentiment
      port: 8080
      tools:
        - name: analyze-product-reviews
          description: "Given a product ID, fetch reviews, run sentiment analysis, update ratings, and alert on negative trends."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "The product ID."
            - name: brand_name
              in: body
              type: string
              description: "The brand name."
          steps:
            - name: get-reviews
              type: call
              call: "sapcc.get-product-reviews"
              with:
                product_id: "{{product_id}}"
            - name: analyze-sentiment
              type: call
              call: "azureml.score-sentiment"
              with:
                reviews: "{{get-reviews.review_texts}}"
            - name: update-ratings
              type: call
              call: "salesforce.update-product-sentiment"
              with:
                product_id: "{{product_id}}"
                avg_sentiment: "{{analyze-sentiment.avg_score}}"
                negative_pct: "{{analyze-sentiment.negative_pct}}"
            - name: alert-brand-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "brand_management"
                text: "Review Sentiment Alert: {{brand_name}} product {{product_id}}. Avg sentiment: {{analyze-sentiment.avg_score}}. Negative: {{analyze-sentiment.negative_pct}}%. Reviews analyzed: {{get-reviews.count}}."
  consumes:
    - type: http
      namespace: sapcc
      baseUri: "https://api.sephora.com/sap-commerce/v2"
      authentication:
        type: bearer
        token: "$secrets.sapcc_token"
      resources:
        - name: reviews
          path: "/products/{{product_id}}/reviews"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: get-product-reviews
              method: GET
    - type: http
      namespace: azureml
      baseUri: "https://sephora-sentiment.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_ml_token"
      resources:
        - name: scoring
          path: "/score"
          operations:
            - name: score-sentiment
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: products
          path: "/sobjects/Product__c/{{product_id}}"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: update-product-sentiment
              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

Orchestrates product safety compliance pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Product Safety Compliance Pipeline"
  description: "Orchestrates product safety compliance pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - product
    - sephora
    - slack
    - jira
    - teams
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-safety-compliance-pipeline
          description: "Orchestrates product safety compliance pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/product"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://sephora.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/product"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/product"
          operations:
            - name: execute-3
              method: POST

Retrieves product sample availability data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Product Sample Availability"
  description: "Retrieves product sample availability data from the Sephora beauty retail systems."
  tags:
    - product
    - sephora
    - availability
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-sample-availability
          description: "Retrieves product sample availability data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.product-sample-availability"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/product/sample/availability/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: product-sample-availability
              method: GET

Orchestrates product sustainability audit pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Product Sustainability Audit Pipeline"
  description: "Orchestrates product sustainability audit pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - product
    - sephora
    - shopify
    - datadog
    - sephora
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-sustainability-audit-pipeline
          description: "Orchestrates product sustainability audit pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "shopify.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sephora.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://sephora.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: shopify-resource
          path: "/api/product"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/product"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: sephora-resource
          path: "/api/product"
          operations:
            - name: execute-3
              method: POST

Retrieves product sustainability score data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Product Sustainability Score"
  description: "Retrieves product sustainability score data from the Sephora beauty retail systems."
  tags:
    - product
    - sephora
    - score
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-sustainability-score
          description: "Retrieves product sustainability score data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.product-sustainability-score"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/product/sustainability/score/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: product-sustainability-score
              method: GET

Retrieves a Salesforce customer profile by ID, returning name, Beauty Insider tier, purchase history count, and preferred store.

naftiko: "0.5"
info:
  label: "Salesforce Customer Profile Lookup"
  description: "Retrieves a Salesforce customer profile by ID, returning name, Beauty Insider tier, purchase history count, and preferred store."
  tags:
    - customer-data
    - crm
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: customer-crm
      port: 8080
      tools:
        - name: get-customer-profile
          description: "Look up a Sephora customer profile in Salesforce."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Salesforce customer record ID."
          call: "salesforce.get-customer"
          with:
            customer_id: "{{customer_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.Name"
            - name: loyalty_tier
              type: string
              mapping: "$.Beauty_Insider_Tier__c"
            - name: purchase_count
              type: number
              mapping: "$.Total_Purchases__c"
            - name: preferred_store
              type: string
              mapping: "$.Preferred_Store__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: customers
          path: "/sobjects/Account/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET

Retrieves a Salesforce opportunity for B2B brand partnerships.

naftiko: "0.5"
info:
  label: "Salesforce Opportunity Lookup"
  description: "Retrieves a Salesforce opportunity for B2B brand partnerships."
  tags:
    - sales
    - crm
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sales-crm
      port: 8080
      tools:
        - name: get-opportunity
          description: "Look up a Salesforce opportunity."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The opportunity ID."
          call: "salesforce.get-opportunity"
          with:
            opportunity_id: "{{opportunity_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET

Retrieves a SAP Concur expense report.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Lookup"
  description: "Retrieves a SAP Concur expense report."
  tags:
    - finance
    - expense
    - sap-concur
capability:
  exposes:
    - type: mcp
      namespace: finance-expense
      port: 8080
      tools:
        - name: get-expense-report
          description: "Look up a SAP Concur expense report."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The expense report ID."
          call: "concur.get-expense-report"
          with:
            report_id: "{{report_id}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://www.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-expense-report
              method: GET

Looks up a SAP purchase order by number.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP purchase order by number."
  tags:
    - procurement
    - erp
    - sap
capability:
  exposes:
    - type: mcp
      namespace: 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 PO number."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sephora-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

Orchestrates seasonal collection planning pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Seasonal Collection Planning Pipeline"
  description: "Orchestrates seasonal collection planning pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - seasonal
    - sephora
    - datadog
    - sephora
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: seasonal
      port: 8080
      tools:
        - name: seasonal-collection-planning-pipeline
          description: "Orchestrates seasonal collection planning pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sephora.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/seasonal"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: sephora-resource
          path: "/api/seasonal"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/seasonal"
          operations:
            - name: execute-3
              method: POST

Retrieves a ServiceNow incident by number.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves a ServiceNow incident by number."
  tags:
    - it-operations
    - itsm
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: itsm
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The incident number."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: priority
              type: string
              mapping: "$.result.priority"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.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 shade finder recommendation data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Shade Finder Recommendation"
  description: "Retrieves shade finder recommendation data from the Sephora beauty retail systems."
  tags:
    - shade
    - sephora
    - recommendation
capability:
  exposes:
    - type: mcp
      namespace: shade
      port: 8080
      tools:
        - name: shade-finder-recommendation
          description: "Retrieves shade finder recommendation data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.shade-finder-recommendation"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/shade/finder/recommendation/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: shade-finder-recommendation
              method: GET

Searches SharePoint for brand and operations documents.

naftiko: "0.5"
info:
  label: "SharePoint Document Search"
  description: "Searches SharePoint for brand and operations documents."
  tags:
    - documentation
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: doc-search
      port: 8080
      tools:
        - name: search-documents
          description: "Search SharePoint for documents."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "SharePoint site ID."
            - name: query
              in: body
              type: string
              description: "Search keyword."
          call: "sharepoint.search"
          with:
            site_id: "{{site_id}}"
            query: "{{query}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: search
          path: "/{{site_id}}/drive/root/search(q='{{query}}')"
          inputParameters:
            - name: site_id
              in: path
            - name: query
              in: path
          operations:
            - name: search
              method: GET

Retrieves skincare routine recommendation data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Skincare Routine Recommendation"
  description: "Retrieves skincare routine recommendation data from the Sephora beauty retail systems."
  tags:
    - skincare
    - sephora
    - recommendation
capability:
  exposes:
    - type: mcp
      namespace: skincare
      port: 8080
      tools:
        - name: skincare-routine-recommendation
          description: "Retrieves skincare routine recommendation data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.skincare-routine-recommendation"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/skincare/routine/recommendation/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: skincare-routine-recommendation
              method: GET

Orchestrates social commerce pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Social Commerce Pipeline"
  description: "Orchestrates social commerce pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - social
    - sephora
    - datadog
    - sephora
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: social
      port: 8080
      tools:
        - name: social-commerce-pipeline
          description: "Orchestrates social commerce pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sephora.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/social"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: sephora-resource
          path: "/api/social"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/social"
          operations:
            - name: execute-3
              method: POST

Queries SolarWinds for store network health.

naftiko: "0.5"
info:
  label: "SolarWinds Network Health"
  description: "Queries SolarWinds for store network health."
  tags: [networking, infrastructure, solarwinds]
capability:
  exposes:
    - type: mcp
      namespace: network-health
      port: 8080
      tools:
        - name: get-network-health
          description: "Query SolarWinds network nodes."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "Store ID."
          call: "solarwinds.query-nodes"
          with:
            store_id: "{{store_id}}"
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://solarwinds.sephora.com:17778/SolarWinds/InformationService/v3/Json"
      authentication:
        type: basic
        username: "$secrets.solarwinds_user"
        password: "$secrets.solarwinds_password"
      resources:
        - name: nodes
          path: "/Query?query=SELECT+NodeID,Caption,Status+FROM+Orion.Nodes+WHERE+Location='{{store_id}}'"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: query-nodes
              method: GET

Queries Splunk for security-related events.

naftiko: "0.5"
info:
  label: "Splunk Security Log Search"
  description: "Queries Splunk for security-related events."
  tags: [security, logging, splunk]
capability:
  exposes:
    - type: mcp
      namespace: security-logs
      port: 8080
      tools:
        - name: search-security-logs
          description: "Search Splunk for security events."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "Splunk search query."
          call: "splunk.search"
          with:
            search: "{{search_query}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.sephora.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs"
          operations:
            - name: search
              method: POST

Queries SAP for product allocation data, checks store-level inventory, and creates allocation adjustments when distribution is unbalanced, notifying the merchandising team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Store Allocation Planning Pipeline"
  description: "Queries SAP for product allocation data, checks store-level inventory, and creates allocation adjustments when distribution is unbalanced, notifying the merchandising team via Microsoft Teams."
  tags:
    - retail
    - supply-chain
    - allocation
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: store-allocation
      port: 8080
      tools:
        - name: rebalance-allocation
          description: "Given a material number and region, check allocation balance and adjust."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: region
              in: body
              type: string
              description: "The store region."
          steps:
            - name: get-allocation
              type: call
              call: "sap.get-allocation"
              with:
                material_number: "{{material_number}}"
                region: "{{region}}"
            - name: adjust-allocation
              type: call
              call: "sap.adjust-allocation"
              with:
                material_number: "{{material_number}}"
                region: "{{region}}"
                adjustment: "{{get-allocation.recommended_adjustment}}"
            - name: notify-merchandising
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "merchandising"
                text: "Allocation Adjustment: {{material_number}} in {{region}}. Current imbalance: {{get-allocation.imbalance_pct}}%. Adjustment: {{adjust-allocation.units_moved}} units."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sephora-s4.sap.com/sap/opu/odata/sap/ALLOCATION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: allocation
          path: "/Allocations?$filter=Material eq '{{material_number}}' and Region eq '{{region}}'"
          inputParameters:
            - name: material_number
              in: path
            - name: region
              in: path
          operations:
            - name: get-allocation
              method: GET
        - name: adjustments
          path: "/AllocationAdjustments"
          operations:
            - name: adjust-allocation
              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

Orchestrates store associate training pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Associate Training Pipeline"
  description: "Orchestrates store associate training pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - sephora
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-associate-training-pipeline
          description: "Orchestrates store associate training pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Retrieves store beauty advisor schedule data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Store Beauty Advisor Schedule"
  description: "Retrieves store beauty advisor schedule data from the Sephora beauty retail systems."
  tags:
    - store
    - sephora
    - schedule
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-beauty-advisor-schedule
          description: "Retrieves store beauty advisor schedule data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.store-beauty-advisor-schedule"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/store/beauty/advisor/schedule/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: store-beauty-advisor-schedule
              method: GET

Orchestrates store event coordination pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Event Coordination Pipeline"
  description: "Orchestrates store event coordination pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - sephora
    - teams
    - sendgrid
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-event-coordination-pipeline
          description: "Orchestrates store event coordination pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sendgrid.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "shopify.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://sephora.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: shopify-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Orchestrates store experience enhancement pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Experience Enhancement Pipeline"
  description: "Orchestrates store experience enhancement pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - sephora
    - teams
    - sendgrid
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-experience-enhancement-pipeline
          description: "Orchestrates store experience enhancement pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sendgrid.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "shopify.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://sephora.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: shopify-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Orchestrates store loss prevention pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Loss Prevention Pipeline"
  description: "Orchestrates store loss prevention pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - sephora
    - sephora
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-loss-prevention-pipeline
          description: "Orchestrates store loss prevention pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sephora.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: sephora-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Orchestrates store staffing optimization pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Staffing Optimization Pipeline"
  description: "Orchestrates store staffing optimization pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - sephora
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-staffing-optimization-pipeline
          description: "Orchestrates store staffing optimization pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

Creates a beauty consultation appointment in Salesforce, sends a confirmation to the customer via Salesforce Marketing Cloud, and notifies the store beauty advisor via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Store Visit Appointment Scheduler"
  description: "Creates a beauty consultation appointment in Salesforce, sends a confirmation to the customer via Salesforce Marketing Cloud, and notifies the store beauty advisor via Microsoft Teams."
  tags:
    - retail
    - appointments
    - salesforce
    - salesforce-marketing-cloud
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: appointments
      port: 8080
      tools:
        - name: book-consultation
          description: "Given customer and store details, create an appointment, send confirmation, and notify the advisor."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Salesforce customer ID."
            - name: store_id
              in: body
              type: string
              description: "The store ID."
            - name: appointment_date
              in: body
              type: string
              description: "The appointment date and time."
            - name: service_type
              in: body
              type: string
              description: "The consultation type (e.g., skincare, makeup, fragrance)."
          steps:
            - name: get-customer
              type: call
              call: "salesforce.get-customer"
              with:
                customer_id: "{{customer_id}}"
            - name: create-appointment
              type: call
              call: "salesforce.create-appointment"
              with:
                customer_id: "{{customer_id}}"
                store_id: "{{store_id}}"
                datetime: "{{appointment_date}}"
                type: "{{service_type}}"
            - name: send-confirmation
              type: call
              call: "sfmc.send-triggered-email"
              with:
                template_id: "appointment_confirmation"
                subscriber_key: "{{customer_id}}"
                data: "customer_name={{get-customer.name}},date={{appointment_date}},service={{service_type}},store={{store_id}}"
            - name: notify-advisor
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "store_{{store_id}}"
                text: "New {{service_type}} consultation: {{get-customer.name}} ({{get-customer.loyalty_tier}}) on {{appointment_date}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://sephora.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: customers
          path: "/sobjects/Account/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
        - name: appointments
          path: "/sobjects/Appointment__c"
          operations:
            - name: create-appointment
              method: POST
    - type: http
      namespace: sfmc
      baseUri: "https://sephora.rest.marketingcloudapis.com/messaging/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: triggered-emails
          path: "/messageDefinitionSends/{{template_id}}/send"
          inputParameters:
            - name: template_id
              in: path
          operations:
            - name: send-triggered-email
              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

Orchestrates store visual merchandising pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Store Visual Merchandising Pipeline"
  description: "Orchestrates store visual merchandising pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - store
    - sephora
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-visual-merchandising-pipeline
          description: "Orchestrates store visual merchandising pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/store"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://sephora.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/store"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/store"
          operations:
            - name: execute-3
              method: POST

When a new beauty brand supplier is onboarded, validates compliance documents in SAP, runs a background check via ServiceNow, and notifies the procurement team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Supplier Compliance Review Pipeline"
  description: "When a new beauty brand supplier is onboarded, validates compliance documents in SAP, runs a background check via ServiceNow, and notifies the procurement team via Microsoft Teams."
  tags:
    - procurement
    - supplier-management
    - compliance
    - sap
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: supplier-compliance
      port: 8080
      tools:
        - name: review-supplier-compliance
          description: "Given a supplier ID, validate compliance docs, open review task, and notify procurement."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "The SAP supplier ID."
            - name: brand_name
              in: body
              type: string
              description: "The beauty brand name."
          steps:
            - name: get-supplier
              type: call
              call: "sap.get-supplier"
              with:
                supplier_id: "{{supplier_id}}"
            - name: create-compliance-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Supplier Compliance Review: {{brand_name}} ({{supplier_id}})"
                assigned_group: "Procurement_Compliance"
                description: "Supplier {{get-supplier.name}} ({{supplier_id}}). Brand: {{brand_name}}. Country: {{get-supplier.country}}. Review required certifications and ingredient safety docs."
            - name: notify-procurement
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "procurement_team"
                text: "Supplier Compliance Review: {{brand_name}} ({{get-supplier.name}}). Task: {{create-compliance-task.number}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sephora-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: suppliers
          path: "/A_Supplier('{{supplier_id}}')"
          inputParameters:
            - name: supplier_id
              in: path
          operations:
            - name: get-supplier
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://sephora.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves a Tableau view for retail analytics and posts to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Tableau Retail Analytics Dashboard"
  description: "Retrieves a Tableau view for retail analytics and posts to Microsoft Teams."
  tags:
    - analytics
    - retail
    - tableau
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: retail-dashboards
      port: 8080
      tools:
        - name: share-retail-dashboard
          description: "Fetch a Tableau retail view and share to Teams."
          inputParameters:
            - name: workbook_id
              in: body
              type: string
              description: "Tableau workbook ID."
            - name: view_id
              in: body
              type: string
              description: "Tableau view ID."
          steps:
            - name: get-view
              type: call
              call: "tableau.get-view"
              with:
                workbook_id: "{{workbook_id}}"
                view_id: "{{view_id}}"
            - name: post-to-teams
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "retail_analytics"
                text: "Retail Analytics Dashboard: {{get-view.url}}"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://tableau.sephora.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: views
          path: "/sites/$secrets.tableau_site_id/workbooks/{{workbook_id}}/views/{{view_id}}"
          inputParameters:
            - name: workbook_id
              in: path
            - name: view_id
              in: path
          operations:
            - name: get-view
              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

Orchestrates vendor compliance audit pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Vendor Compliance Audit Pipeline"
  description: "Orchestrates vendor compliance audit pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
  tags:
    - vendor
    - sephora
    - shopify
    - datadog
    - sephora
capability:
  exposes:
    - type: mcp
      namespace: vendor
      port: 8080
      tools:
        - name: vendor-compliance-audit-pipeline
          description: "Orchestrates vendor compliance audit pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "shopify.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sephora.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://sephora.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: shopify-resource
          path: "/api/vendor"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/vendor"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: sephora-resource
          path: "/api/vendor"
          operations:
            - name: execute-3
              method: POST

Retrieves virtual try on session status data from the Sephora beauty retail systems.

naftiko: "0.5"
info:
  label: "Virtual Try On Session Status"
  description: "Retrieves virtual try on session status data from the Sephora beauty retail systems."
  tags:
    - virtual
    - sephora
    - status
capability:
  exposes:
    - type: mcp
      namespace: virtual
      port: 8080
      tools:
        - name: virtual-try-on-session-status
          description: "Retrieves virtual try on session status data from the Sephora beauty retail systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "sephora.virtual-try-on-session-status"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: sephora
      baseUri: "https://api.sephora.com/v2"
      authentication:
        type: bearer
        token: "$secrets.sephora_api_token"
      resources:
        - name: resource
          path: "/virtual/try/on/session/status/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: virtual-try-on-session-status
              method: GET

Retrieves compensation data from Workday and sends a review to the manager via Outlook.

naftiko: "0.5"
info:
  label: "Workday Compensation Review"
  description: "Retrieves compensation data from Workday and sends a review to the manager via Outlook."
  tags:
    - hr
    - compensation
    - workday
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: hr-compensation
      port: 8080
      tools:
        - name: generate-comp-review
          description: "Generate a compensation review."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Workday employee ID."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: get-compensation
              type: call
              call: "workday.get-compensation"
              with:
                worker_id: "{{employee_id}}"
            - name: send-review
              type: call
              call: "outlook.send-mail"
              with:
                recipient: "{{get-employee.manager_email}}"
                subject: "Compensation Review: {{get-employee.full_name}}"
                body: "Employee: {{get-employee.full_name}}. Base: {{get-compensation.base_pay}}. Performance: {{get-compensation.performance_rating}}."
  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
        - name: compensation
          path: "/workers/{{worker_id}}/compensation"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-compensation
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Retrieves a Workday worker profile by employee ID.

naftiko: "0.5"
info:
  label: "Workday Employee Profile Lookup"
  description: "Retrieves a Workday worker profile by employee ID."
  tags:
    - hr
    - employee-data
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-data
      port: 8080
      tools:
        - name: get-employee-profile
          description: "Look up a Workday employee."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{employee_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.descriptor"
            - name: department
              type: string
              mapping: "$.primaryPosition.department"
  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

Creates a Zoom meeting and notifies via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Zoom Meeting Scheduler"
  description: "Creates a Zoom meeting and notifies via Microsoft Teams."
  tags:
    - collaboration
    - meetings
    - zoom
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: schedule-zoom-meeting
          description: "Create a Zoom meeting and notify via Teams."
          inputParameters:
            - name: topic
              in: body
              type: string
              description: "Meeting topic."
            - name: start_time
              in: body
              type: string
              description: "Start time ISO 8601."
            - name: duration
              in: body
              type: number
              description: "Duration in minutes."
            - name: teams_channel_id
              in: body
              type: string
              description: "Teams channel."
          steps:
            - name: create-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                topic: "{{topic}}"
                start_time: "{{start_time}}"
                duration: "{{duration}}"
            - name: notify-teams
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "{{teams_channel_id}}"
                text: "Zoom meeting scheduled: {{topic}} at {{start_time}}. 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: 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