Shopify Capabilities

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

Sort
Expand

Detects abandoned checkouts in Shopify, enriches the customer data, sends a personalized recovery email via MailChimp, and logs the outreach in a Google Sheet for marketing tracking.

naftiko: "0.5"
info:
  label: "Abandoned Cart Recovery Orchestrator"
  description: "Detects abandoned checkouts in Shopify, enriches the customer data, sends a personalized recovery email via MailChimp, and logs the outreach in a Google Sheet for marketing tracking."
  tags:
    - e-commerce
    - marketing
    - abandoned-cart
    - mailchimp
    - google-sheets
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: cart-recovery
      port: 8080
      tools:
        - name: recover-abandoned-cart
          description: "Given an abandoned checkout ID, retrieve cart details from Shopify, send a recovery email via MailChimp, and log the outreach in Google Sheets."
          inputParameters:
            - name: checkout_id
              in: body
              type: string
              description: "The Shopify abandoned checkout ID."
          steps:
            - name: get-checkout
              type: call
              call: "shopify-admin.get-checkout"
              with:
                checkout_id: "{{checkout_id}}"
            - name: send-recovery-email
              type: call
              call: "mailchimp.send-campaign"
              with:
                email: "{{get-checkout.email}}"
                template_id: "abandoned_cart_recovery"
                merge_fields:
                  first_name: "{{get-checkout.billing_address.first_name}}"
                  cart_url: "{{get-checkout.abandoned_checkout_url}}"
                  cart_total: "{{get-checkout.total_price}}"
            - name: log-outreach
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "{{marketing_sheet_id}}"
                range: "AbandonedCarts!A:E"
                values:
                  - "{{get-checkout.email}}"
                  - "{{get-checkout.total_price}}"
                  - "{{get-checkout.created_at}}"
                  - "recovery_sent"
                  - "{{checkout_id}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: checkouts
          path: "/checkouts/{{checkout_id}}.json"
          inputParameters:
            - name: checkout_id
              in: path
          operations:
            - name: get-checkout
              method: GET
    - type: http
      namespace: mailchimp
      baseUri: "https://{{mailchimp_dc}}.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: send-campaign
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST

Retrieves abandoned checkout listing data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Abandoned Checkout Listing"
  description: "Retrieves abandoned checkout listing data from the Shopify e-commerce platform systems."
  tags:
    - abandoned
    - shopify
    - listing
capability:
  exposes:
    - type: mcp
      namespace: abandoned
      port: 8080
      tools:
        - name: abandoned-checkout-listing
          description: "Retrieves abandoned checkout listing data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.abandoned-checkout-listing"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/abandoned/checkout/listing/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: abandoned-checkout-listing
              method: GET

Fetches a customer's purchase history from Shopify, generates personalized product recommendations using Claude, and sends the recommendations via a personalized email through SendGrid.

naftiko: "0.5"
info:
  label: "AI Product Recommendation Engine"
  description: "Fetches a customer's purchase history from Shopify, generates personalized product recommendations using Claude, and sends the recommendations via a personalized email through SendGrid."
  tags:
    - e-commerce
    - ai-ml
    - recommendations
    - claude
    - sendgrid
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: recommendations
      port: 8080
      tools:
        - name: generate-recommendations
          description: "Given a customer ID, analyze purchase history with Claude and send personalized product recommendations via email."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Shopify customer ID."
            - name: max_recommendations
              in: body
              type: number
              description: "Maximum number of product recommendations to generate."
          steps:
            - name: get-customer
              type: call
              call: "shopify-admin.get-customer"
              with:
                customer_id: "{{customer_id}}"
            - name: get-order-history
              type: call
              call: "shopify-admin.list-customer-orders"
              with:
                customer_id: "{{customer_id}}"
                status: "any"
            - name: get-all-products
              type: call
              call: "shopify-admin.list-products"
              with:
                status: "active"
                limit: "50"
            - name: generate-recs
              type: call
              call: "claude.create-message"
              with:
                model: "claude-sonnet-4-20250514"
                prompt: "Based on this customer's purchase history, recommend up to {{max_recommendations}} products they would likely enjoy. Purchase history: {{get-order-history.orders}}. Available products: {{get-all-products.products}}. Return JSON array of product IDs with reasoning."
            - name: send-email
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{get-customer.email}}"
                subject: "Products picked just for you, {{get-customer.first_name}}!"
                body: "Hi {{get-customer.first_name}}, based on your recent purchases, we think you will love these: {{generate-recs.content}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: customers
          path: "/customers/{{customer_id}}.json"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
        - name: customer-orders
          path: "/customers/{{customer_id}}/orders.json"
          inputParameters:
            - name: customer_id
              in: path
            - name: status
              in: query
          operations:
            - name: list-customer-orders
              method: GET
        - name: products
          path: "/products.json"
          inputParameters:
            - name: status
              in: query
            - name: limit
              in: query
          operations:
            - name: list-products
              method: GET
    - type: http
      namespace: claude
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: bearer
        token: "$secrets.anthropic_api_key"
      inputParameters:
        - name: anthropic-version
          in: header
          value: "2023-06-01"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Orchestrates app ecosystem integration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "App Ecosystem Integration Pipeline"
  description: "Orchestrates app ecosystem integration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - app
    - shopify
    - jira
    - datadog
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: app
      port: 8080
      tools:
        - name: app-ecosystem-integration-pipeline
          description: "Orchestrates app ecosystem integration pipeline across e-commerce platform 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: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "hubspot.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://shopify.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/app"
          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/app"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: hubspot-resource
          path: "/api/app"
          operations:
            - name: execute-3
              method: POST

Lists all installed Shopify apps on the store, returning app name, API key, and access scopes. Used by platform engineering for audit and compliance.

naftiko: "0.5"
info:
  label: "App Installation Listing"
  description: "Lists all installed Shopify apps on the store, returning app name, API key, and access scopes. Used by platform engineering for audit and compliance."
  tags:
    - e-commerce
    - platform-engineering
    - app-ecosystem
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: app-management
      port: 8080
      tools:
        - name: list-installed-apps
          description: "List all installed apps on the Shopify store. Returns app title, API key, and access scopes."
          inputParameters: []
          call: "shopify-admin.list-apps"
          with: {}
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: apps
          path: "/installed_apps.json"
          operations:
            - name: list-apps
              method: GET

Retrieves app reviews from the Shopify App Store Partner API, analyzes common themes using Claude, and posts a weekly summary to Confluence and Slack for the product team.

naftiko: "0.5"
info:
  label: "App Review and Rating Collector"
  description: "Retrieves app reviews from the Shopify App Store Partner API, analyzes common themes using Claude, and posts a weekly summary to Confluence and Slack for the product team."
  tags:
    - e-commerce
    - app-ecosystem
    - ai-ml
    - claude
    - confluence
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: app-reviews
      port: 8080
      tools:
        - name: analyze-app-reviews
          description: "Given an app ID, fetch recent reviews from the Partner API, analyze themes with Claude, post a summary to Confluence, and notify Slack."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The Shopify Partner app ID."
            - name: days_back
              in: body
              type: number
              description: "Number of days of reviews to analyze."
          steps:
            - name: get-reviews
              type: call
              call: "shopify-partner.get-app-reviews"
              with:
                app_id: "{{app_id}}"
                days_back: "{{days_back}}"
            - name: analyze-themes
              type: call
              call: "claude.create-message"
              with:
                model: "claude-sonnet-4-20250514"
                prompt: "Analyze these Shopify app reviews. Identify the top 5 feature requests, top 5 complaints, and overall sentiment trend. Reviews: {{get-reviews.reviews}}"
            - name: post-to-confluence
              type: call
              call: "confluence.create-page"
              with:
                space_key: "PRODUCT"
                title: "App Review Analysis - {{app_id}} - Week of {{current_date}}"
                body: "{{analyze-themes.content}}"
            - name: notify-product
              type: call
              call: "slack.post-message"
              with:
                channel: "#product-feedback"
                text: "Weekly app review analysis posted for app {{app_id}}. Confluence: {{post-to-confluence.url}}. Summary: {{analyze-themes.content}}"
  consumes:
    - type: http
      namespace: shopify-partner
      baseUri: "https://partners.shopify.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.shopify_partner_token"
      resources:
        - name: app-reviews
          path: "/apps/{{app_id}}/reviews.json"
          inputParameters:
            - name: app_id
              in: path
            - name: days_back
              in: query
          operations:
            - name: get-app-reviews
              method: GET
    - type: http
      namespace: claude
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: bearer
        token: "$secrets.anthropic_api_key"
      inputParameters:
        - name: anthropic-version
          in: header
          value: "2023-06-01"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://{{confluence_domain}}.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Orchestrates app store review response pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "App Store Review Response Pipeline"
  description: "Orchestrates app store review response pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - app
    - shopify
    - jira
    - datadog
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: app
      port: 8080
      tools:
        - name: app-store-review-response-pipeline
          description: "Orchestrates app store review response pipeline across e-commerce platform 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: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "hubspot.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://shopify.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/app"
          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/app"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: hubspot-resource
          path: "/api/app"
          operations:
            - name: execute-3
              method: POST

Handles a customer return request by verifying the order in Shopify, creating a return shipping label via ShipStation, initiating the Shopify refund, and updating the Zendesk ticket with resolution details.

naftiko: "0.5"
info:
  label: "Automated Returns Processing"
  description: "Handles a customer return request by verifying the order in Shopify, creating a return shipping label via ShipStation, initiating the Shopify refund, and updating the Zendesk ticket with resolution details."
  tags:
    - e-commerce
    - returns
    - refunds
    - shipstation
    - zendesk
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: returns-management
      port: 8080
      tools:
        - name: process-return
          description: "Given an order ID and Zendesk ticket ID, verify the order, create a return label, initiate a refund, and update the support ticket."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID."
            - name: ticket_id
              in: body
              type: string
              description: "The Zendesk ticket ID for the return request."
            - name: return_reason
              in: body
              type: string
              description: "The reason for the return."
          steps:
            - name: get-order
              type: call
              call: "shopify-admin.get-order"
              with:
                order_id: "{{order_id}}"
            - name: create-return-label
              type: call
              call: "shipstation.create-label"
              with:
                carrier_code: "stamps_com"
                service_code: "usps_priority_mail"
                to_name: "Returns Department"
                to_address1: "{{warehouse_address}}"
                to_city: "{{warehouse_city}}"
                to_state: "{{warehouse_state}}"
                to_postal_code: "{{warehouse_postal_code}}"
                to_country: "US"
                from_name: "{{get-order.shipping_address.name}}"
                from_address1: "{{get-order.shipping_address.address1}}"
                from_city: "{{get-order.shipping_address.city}}"
                from_state: "{{get-order.shipping_address.province_code}}"
                from_postal_code: "{{get-order.shipping_address.zip}}"
            - name: initiate-refund
              type: call
              call: "shopify-admin.create-refund"
              with:
                order_id: "{{order_id}}"
                amount: "{{get-order.total_price}}"
                reason: "{{return_reason}}"
            - name: update-ticket
              type: call
              call: "zendesk.update-ticket"
              with:
                ticket_id: "{{ticket_id}}"
                status: "solved"
                comment: "Return processed. Return label: {{create-return-label.tracking_number}}. Refund of {{get-order.total_price}} {{get-order.currency}} initiated. Reason: {{return_reason}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
        - name: refunds
          path: "/orders/{{order_id}}/refunds.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: create-refund
              method: POST
    - type: http
      namespace: shipstation
      baseUri: "https://ssapi.shipstation.com"
      authentication:
        type: basic
        username: "$secrets.shipstation_api_key"
        password: "$secrets.shipstation_api_secret"
      resources:
        - name: labels
          path: "/shipments/createlabel"
          operations:
            - name: create-label
              method: POST
    - type: http
      namespace: zendesk
      baseUri: "https://{{zendesk_subdomain}}.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_api_token"
      resources:
        - name: tickets
          path: "/tickets/{{ticket_id}}.json"
          inputParameters:
            - name: ticket_id
              in: path
          operations:
            - name: update-ticket
              method: PUT

Orchestrates b2b wholesale pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "B2B Wholesale Pipeline"
  description: "Orchestrates b2b wholesale pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - b2b
    - shopify
    - zendesk
    - github
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: b2b
      port: 8080
      tools:
        - name: b2b-wholesale-pipeline
          description: "Orchestrates b2b wholesale pipeline across e-commerce platform 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: "zendesk.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "github.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "shopify.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://shopify.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: zendesk-resource
          path: "/api/b2b"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: github-resource
          path: "/api/b2b"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: shopify-resource
          path: "/api/b2b"
          operations:
            - name: execute-3
              method: POST

Retrieves blog article listing data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Blog Article Listing"
  description: "Retrieves blog article listing data from the Shopify e-commerce platform systems."
  tags:
    - blog
    - shopify
    - listing
capability:
  exposes:
    - type: mcp
      namespace: blog
      port: 8080
      tools:
        - name: blog-article-listing
          description: "Retrieves blog article listing data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.blog-article-listing"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/blog/article/listing/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: blog-article-listing
              method: GET

Fetches competitor pricing data from a pricing intelligence API, compares against current Shopify product prices, applies bulk price adjustments via the Shopify Admin API, and logs all changes in a Google Sheet.

naftiko: "0.5"
info:
  label: "Bulk Price Update with Competitor Monitoring"
  description: "Fetches competitor pricing data from a pricing intelligence API, compares against current Shopify product prices, applies bulk price adjustments via the Shopify Admin API, and logs all changes in a Google Sheet."
  tags:
    - e-commerce
    - pricing
    - products
    - google-sheets
    - competitive-analysis
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: price-intelligence
      port: 8080
      tools:
        - name: adjust-prices-from-competitors
          description: "Given a product ID and competitor data source, compare pricing and apply adjustments in Shopify, then log changes."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "The Shopify product ID."
            - name: competitor_sku
              in: body
              type: string
              description: "The SKU to look up in the competitor pricing system."
            - name: adjustment_strategy
              in: body
              type: string
              description: "Pricing strategy: match, undercut_5_percent, or premium_10_percent."
          steps:
            - name: get-product
              type: call
              call: "shopify-admin.get-product"
              with:
                product_id: "{{product_id}}"
            - name: get-competitor-price
              type: call
              call: "pricing-api.get-competitor-price"
              with:
                sku: "{{competitor_sku}}"
            - name: update-price
              type: call
              call: "shopify-admin.update-product-variant"
              with:
                product_id: "{{product_id}}"
                variant_id: "{{get-product.variants[0].id}}"
                price: "{{get-competitor-price.adjusted_price}}"
            - name: log-change
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "{{pricing_sheet_id}}"
                range: "PriceChanges!A:F"
                values:
                  - "{{product_id}}"
                  - "{{get-product.title}}"
                  - "{{get-product.variants[0].price}}"
                  - "{{get-competitor-price.adjusted_price}}"
                  - "{{adjustment_strategy}}"
                  - "{{get-competitor-price.competitor_name}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: products
          path: "/products/{{product_id}}.json"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: get-product
              method: GET
        - name: variants
          path: "/products/{{product_id}}/variants/{{variant_id}}.json"
          inputParameters:
            - name: product_id
              in: path
            - name: variant_id
              in: path
          operations:
            - name: update-product-variant
              method: PUT
    - type: http
      namespace: pricing-api
      baseUri: "https://api.prisync.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.prisync_api_key"
      resources:
        - name: competitor-prices
          path: "/products/{{sku}}/competitor-prices"
          inputParameters:
            - name: sku
              in: path
          operations:
            - name: get-competitor-price
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST

Retrieves carrier service listing data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Carrier Service Listing"
  description: "Retrieves carrier service listing data from the Shopify e-commerce platform systems."
  tags:
    - carrier
    - shopify
    - listing
capability:
  exposes:
    - type: mcp
      namespace: carrier
      port: 8080
      tools:
        - name: carrier-service-listing
          description: "Retrieves carrier service listing data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.carrier-service-listing"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/carrier/service/listing/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: carrier-service-listing
              method: GET

Orchestrates checkout conversion optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Checkout Conversion Optimization Pipeline"
  description: "Orchestrates checkout conversion optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - checkout
    - shopify
    - hubspot
    - zendesk
    - github
capability:
  exposes:
    - type: mcp
      namespace: checkout
      port: 8080
      tools:
        - name: checkout-conversion-optimization-pipeline
          description: "Orchestrates checkout conversion optimization pipeline across e-commerce platform 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: "hubspot.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "zendesk.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "github.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: hubspot-resource
          path: "/api/checkout"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: zendesk
      baseUri: "https://shopify.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: zendesk-resource
          path: "/api/checkout"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: github-resource
          path: "/api/checkout"
          operations:
            - name: execute-3
              method: POST

Retrieves collection smart rules lookup data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Collection Smart Rules Lookup"
  description: "Retrieves collection smart rules lookup data from the Shopify e-commerce platform systems."
  tags:
    - collection
    - shopify
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: collection
      port: 8080
      tools:
        - name: collection-smart-rules-lookup
          description: "Retrieves collection smart rules lookup data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.collection-smart-rules-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/collection/smart/rules/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: collection-smart-rules-lookup
              method: GET

Retrieves custom collection products data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Custom Collection Products"
  description: "Retrieves custom collection products data from the Shopify e-commerce platform systems."
  tags:
    - custom
    - shopify
    - products
capability:
  exposes:
    - type: mcp
      namespace: custom
      port: 8080
      tools:
        - name: custom-collection-products
          description: "Retrieves custom collection products data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.custom-collection-products"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/custom/collection/products/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: custom-collection-products
              method: GET

Orchestrates customer feedback loop pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Feedback Loop Pipeline"
  description: "Orchestrates customer feedback loop pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - shopify
    - sendgrid
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-feedback-loop-pipeline
          description: "Orchestrates customer feedback loop pipeline across e-commerce platform 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: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.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: snowflake
      baseUri: "https://shopify.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/customer"
          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/customer"
          operations:
            - name: execute-3
              method: POST

Orchestrates customer lifetime value pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Lifetime Value Pipeline"
  description: "Orchestrates customer lifetime value pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - shopify
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-lifetime-value-pipeline
          description: "Orchestrates customer lifetime value pipeline across e-commerce platform 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://shopify.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://shopify.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

Retrieves a Shopify customer's order history, calculates loyalty points based on spend tiers, updates the customer's loyalty metafield, and emails the points statement via SendGrid.

naftiko: "0.5"
info:
  label: "Customer Loyalty Points Calculator"
  description: "Retrieves a Shopify customer's order history, calculates loyalty points based on spend tiers, updates the customer's loyalty metafield, and emails the points statement via SendGrid."
  tags:
    - e-commerce
    - customers
    - loyalty
    - sendgrid
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: loyalty-program
      port: 8080
      tools:
        - name: calculate-loyalty-points
          description: "Given a customer ID, tally order history, compute loyalty points, update the customer metafield, and send a points statement email."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Shopify customer ID."
            - name: points_per_dollar
              in: body
              type: number
              description: "Points awarded per dollar spent."
          steps:
            - name: get-customer
              type: call
              call: "shopify-admin.get-customer"
              with:
                customer_id: "{{customer_id}}"
            - name: get-orders
              type: call
              call: "shopify-admin.list-customer-orders"
              with:
                customer_id: "{{customer_id}}"
                status: "any"
            - name: update-points
              type: call
              call: "shopify-admin.create-customer-metafield"
              with:
                customer_id: "{{customer_id}}"
                namespace: "loyalty"
                key: "points_balance"
                value: "{{calculated_points}}"
                type: "number_integer"
            - name: send-statement
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{get-customer.email}}"
                subject: "Your loyalty points statement"
                body: "Hi {{get-customer.first_name}}, you have earned loyalty points from {{get-orders.count}} orders. Your current balance has been updated. Keep shopping to earn more rewards!"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: customers
          path: "/customers/{{customer_id}}.json"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
        - name: customer-orders
          path: "/customers/{{customer_id}}/orders.json"
          inputParameters:
            - name: customer_id
              in: path
            - name: status
              in: query
          operations:
            - name: list-customer-orders
              method: GET
        - name: customer-metafields
          path: "/customers/{{customer_id}}/metafields.json"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: create-customer-metafield
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Retrieves a Shopify customer record by customer ID, returning contact details, order count, total spend, and tags. Used by support agents and marketing teams.

naftiko: "0.5"
info:
  label: "Customer Profile Lookup"
  description: "Retrieves a Shopify customer record by customer ID, returning contact details, order count, total spend, and tags. Used by support agents and marketing teams."
  tags:
    - e-commerce
    - customers
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: customer-management
      port: 8080
      tools:
        - name: get-customer
          description: "Look up a Shopify customer by ID. Returns name, email, order count, total spent, and customer tags."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Shopify customer ID."
          call: "shopify-admin.get-customer"
          with:
            customer_id: "{{customer_id}}"
          outputParameters:
            - name: email
              type: string
              mapping: "$.customer.email"
            - name: first_name
              type: string
              mapping: "$.customer.first_name"
            - name: orders_count
              type: number
              mapping: "$.customer.orders_count"
            - name: total_spent
              type: string
              mapping: "$.customer.total_spent"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: customers
          path: "/customers/{{customer_id}}.json"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET

Retrieves customer saved search listing data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Customer Saved Search Listing"
  description: "Retrieves customer saved search listing data from the Shopify e-commerce platform systems."
  tags:
    - customer
    - shopify
    - listing
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-saved-search-listing
          description: "Retrieves customer saved search listing data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.customer-saved-search-listing"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/customer/saved/search/listing/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: customer-saved-search-listing
              method: GET

Orchestrates customer segmentation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Customer Segmentation Pipeline"
  description: "Orchestrates customer segmentation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - customer
    - shopify
    - slack
    - jira
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-segmentation-pipeline
          description: "Orchestrates customer segmentation pipeline across e-commerce platform 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: "datadog.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://shopify.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: 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 Shopify order has a complaint, retrieves order and customer data, creates a Zendesk ticket with full context, assigns it to the right team based on issue type, and notifies the support lead in Slack.

naftiko: "0.5"
info:
  label: "Customer Support Escalation Pipeline"
  description: "When a Shopify order has a complaint, retrieves order and customer data, creates a Zendesk ticket with full context, assigns it to the right team based on issue type, and notifies the support lead in Slack."
  tags:
    - e-commerce
    - customer-service
    - zendesk
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: support-escalation
      port: 8080
      tools:
        - name: escalate-order-issue
          description: "Given an order ID and issue description, gather order context, create a Zendesk ticket, and notify support in Slack."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID."
            - name: issue_type
              in: body
              type: string
              description: "The issue category: damaged, missing, wrong_item, delayed, other."
            - name: issue_description
              in: body
              type: string
              description: "Detailed description of the customer complaint."
          steps:
            - name: get-order
              type: call
              call: "shopify-admin.get-order"
              with:
                order_id: "{{order_id}}"
            - name: get-customer
              type: call
              call: "shopify-admin.get-customer"
              with:
                customer_id: "{{get-order.customer.id}}"
            - name: create-ticket
              type: call
              call: "zendesk.create-ticket"
              with:
                subject: "[{{issue_type}}] Order #{{get-order.order_number}} - {{get-customer.first_name}} {{get-customer.last_name}}"
                description: "Issue: {{issue_description}}\n\nOrder: #{{get-order.order_number}}\nTotal: {{get-order.total_price}} {{get-order.currency}}\nFulfillment: {{get-order.fulfillment_status}}\nCustomer: {{get-customer.email}} ({{get-customer.orders_count}} orders, {{get-customer.total_spent}} lifetime)"
                requester_email: "{{get-customer.email}}"
                priority: "high"
                tags: "shopify,{{issue_type}}"
            - name: notify-support
              type: call
              call: "slack.post-message"
              with:
                channel: "#support-escalations"
                text: "Escalation: {{issue_type}} for order #{{get-order.order_number}}. Customer: {{get-customer.email}} ({{get-customer.orders_count}} orders). Zendesk ticket: {{create-ticket.id}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
        - name: customers
          path: "/customers/{{customer_id}}.json"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
    - type: http
      namespace: zendesk
      baseUri: "https://{{zendesk_subdomain}}.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_api_token"
      resources:
        - name: tickets
          path: "/tickets.json"
          operations:
            - name: create-ticket
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Pulls the previous day's Shopify orders, aggregates revenue by product and channel, generates a formatted summary with Claude, posts it to Slack, and archives the report in Google Drive.

naftiko: "0.5"
info:
  label: "Daily Sales Report Generator"
  description: "Pulls the previous day's Shopify orders, aggregates revenue by product and channel, generates a formatted summary with Claude, posts it to Slack, and archives the report in Google Drive."
  tags:
    - e-commerce
    - analytics
    - reporting
    - claude
    - slack
    - google-drive
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: sales-reporting
      port: 8080
      tools:
        - name: generate-daily-report
          description: "Generate a daily sales report from Shopify orders, format with Claude, post to Slack, and archive in Google Drive."
          inputParameters:
            - name: report_date
              in: body
              type: string
              description: "The date to report on in YYYY-MM-DD format."
          steps:
            - name: get-orders
              type: call
              call: "shopify-admin.list-orders"
              with:
                created_at_min: "{{report_date}}T00:00:00Z"
                created_at_max: "{{report_date}}T23:59:59Z"
                status: "any"
            - name: format-report
              type: call
              call: "claude.create-message"
              with:
                model: "claude-sonnet-4-20250514"
                prompt: "Generate a daily sales report summary for {{report_date}}. Orders data: {{get-orders.orders}}. Include: total revenue, order count, average order value, top 5 products by revenue, breakdown by payment gateway. Format for Slack markdown."
            - name: post-to-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "#daily-sales"
                text: "Daily Sales Report - {{report_date}}\n\n{{format-report.content}}"
            - name: archive-to-drive
              type: call
              call: "gdrive.create-file"
              with:
                name: "Sales_Report_{{report_date}}.txt"
                parents: "{{reports_folder_id}}"
                content: "{{format-report.content}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders.json"
          inputParameters:
            - name: created_at_min
              in: query
            - name: created_at_max
              in: query
            - name: status
              in: query
          operations:
            - name: list-orders
              method: GET
    - type: http
      namespace: claude
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: bearer
        token: "$secrets.anthropic_api_key"
      inputParameters:
        - name: anthropic-version
          in: header
          value: "2023-06-01"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/upload/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: create-file
              method: POST

Queries Datadog for Shopify storefront latency metrics, compares against SLO thresholds, and if degraded, creates a ServiceNow incident and alerts the engineering team in Slack.

naftiko: "0.5"
info:
  label: "Datadog Performance Monitoring for Storefront"
  description: "Queries Datadog for Shopify storefront latency metrics, compares against SLO thresholds, and if degraded, creates a ServiceNow incident and alerts the engineering team in Slack."
  tags:
    - e-commerce
    - platform-engineering
    - monitoring
    - datadog
    - servicenow
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: storefront-monitoring
      port: 8080
      tools:
        - name: check-storefront-health
          description: "Query Datadog for storefront latency metrics. If above threshold, create a ServiceNow incident and alert the engineering Slack channel."
          inputParameters:
            - name: metric_query
              in: body
              type: string
              description: "The Datadog metric query, e.g. avg:shopify.storefront.latency{env:production}."
            - name: threshold_ms
              in: body
              type: number
              description: "Latency threshold in milliseconds."
            - name: time_range_seconds
              in: body
              type: number
              description: "Look-back window in seconds."
          steps:
            - name: query-metrics
              type: call
              call: "datadog.query-metrics"
              with:
                query: "{{metric_query}}"
                from: "{{time_range_seconds}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Storefront latency degradation detected"
                category: "performance"
                description: "Shopify storefront latency exceeded {{threshold_ms}}ms. Current avg: {{query-metrics.series[0].pointlist[-1][1]}}ms. Metric: {{metric_query}}"
                urgency: "2"
            - name: alert-engineering
              type: call
              call: "slack.post-message"
              with:
                channel: "#platform-engineering"
                text: "Storefront latency alert: {{metric_query}} exceeded {{threshold_ms}}ms. ServiceNow incident: {{create-incident.number}}. Investigate immediately."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: metrics
          path: "/query"
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://{{servicenow_instance}}.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves details for a specific Shopify discount code including usage count, value, and expiration. Used by marketing and support teams.

naftiko: "0.5"
info:
  label: "Discount Code Lookup"
  description: "Retrieves details for a specific Shopify discount code including usage count, value, and expiration. Used by marketing and support teams."
  tags:
    - e-commerce
    - discounts
    - marketing
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: promotions
      port: 8080
      tools:
        - name: get-discount-code
          description: "Look up a Shopify price rule discount code by price rule ID and discount code ID. Returns code string, usage count, and creation date."
          inputParameters:
            - name: price_rule_id
              in: body
              type: string
              description: "The Shopify price rule ID."
            - name: discount_code_id
              in: body
              type: string
              description: "The Shopify discount code ID."
          call: "shopify-admin.get-discount"
          with:
            price_rule_id: "{{price_rule_id}}"
            discount_code_id: "{{discount_code_id}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: discount-codes
          path: "/price_rules/{{price_rule_id}}/discount_codes/{{discount_code_id}}.json"
          inputParameters:
            - name: price_rule_id
              in: path
            - name: discount_code_id
              in: path
          operations:
            - name: get-discount
              method: GET

Creates a wholesale agreement envelope in DocuSign using Shopify customer and draft order data, sends it for signature, and updates the draft order note with the envelope status.

naftiko: "0.5"
info:
  label: "DocuSign Contract for B2B Wholesale Agreement"
  description: "Creates a wholesale agreement envelope in DocuSign using Shopify customer and draft order data, sends it for signature, and updates the draft order note with the envelope status."
  tags:
    - e-commerce
    - b2b
    - legal
    - docusign
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: b2b-contracts
      port: 8080
      tools:
        - name: send-wholesale-agreement
          description: "Given a Shopify customer ID and draft order ID, create a DocuSign envelope for the wholesale agreement and track signature status."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Shopify customer ID."
            - name: draft_order_id
              in: body
              type: string
              description: "The Shopify draft order ID."
            - name: template_id
              in: body
              type: string
              description: "The DocuSign template ID for the wholesale agreement."
          steps:
            - name: get-customer
              type: call
              call: "shopify-admin.get-customer"
              with:
                customer_id: "{{customer_id}}"
            - name: get-draft-order
              type: call
              call: "shopify-admin.get-draft-order"
              with:
                draft_order_id: "{{draft_order_id}}"
            - name: create-envelope
              type: call
              call: "docusign.create-envelope"
              with:
                template_id: "{{template_id}}"
                signer_email: "{{get-customer.email}}"
                signer_name: "{{get-customer.first_name}} {{get-customer.last_name}}"
                order_total: "{{get-draft-order.total_price}}"
            - name: update-draft-note
              type: call
              call: "shopify-admin.update-draft-order"
              with:
                draft_order_id: "{{draft_order_id}}"
                note: "DocuSign envelope {{create-envelope.envelopeId}} sent to {{get-customer.email}} for signature."
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: customers
          path: "/customers/{{customer_id}}.json"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
        - name: draft-orders
          path: "/draft_orders/{{draft_order_id}}.json"
          inputParameters:
            - name: draft_order_id
              in: path
          operations:
            - name: get-draft-order
              method: GET
            - name: update-draft-order
              method: PUT
    - type: http
      namespace: docusign
      baseUri: "https://{{docusign_base_url}}/restapi/v2.1/accounts/{{docusign_account_id}}"
      authentication:
        type: bearer
        token: "$secrets.docusign_access_token"
      resources:
        - name: envelopes
          path: "/envelopes"
          operations:
            - name: create-envelope
              method: POST

Retrieves draft order details lookup data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Draft Order Details Lookup"
  description: "Retrieves draft order details lookup data from the Shopify e-commerce platform systems."
  tags:
    - draft
    - shopify
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: draft
      port: 8080
      tools:
        - name: draft-order-details-lookup
          description: "Retrieves draft order details lookup data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.draft-order-details-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/draft/order/details/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: draft-order-details-lookup
              method: GET

Orchestrates dropshipping supplier pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Dropshipping Supplier Pipeline"
  description: "Orchestrates dropshipping supplier pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - dropshipping
    - shopify
    - zendesk
    - github
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: dropshipping
      port: 8080
      tools:
        - name: dropshipping-supplier-pipeline
          description: "Orchestrates dropshipping supplier pipeline across e-commerce platform 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: "zendesk.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "github.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "shopify.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://shopify.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: zendesk-resource
          path: "/api/dropshipping"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: github-resource
          path: "/api/dropshipping"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: shopify-resource
          path: "/api/dropshipping"
          operations:
            - name: execute-3
              method: POST

Segments Shopify customers by purchase behavior, syncs the segment to MailChimp as a tagged audience list, and triggers a targeted email campaign for the segment.

naftiko: "0.5"
info:
  label: "Email Marketing Segment Sync"
  description: "Segments Shopify customers by purchase behavior, syncs the segment to MailChimp as a tagged audience list, and triggers a targeted email campaign for the segment."
  tags:
    - e-commerce
    - marketing
    - customers
    - mailchimp
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: email-segmentation
      port: 8080
      tools:
        - name: sync-segment-to-mailchimp
          description: "Given Shopify customer search parameters, retrieve matching customers, add them to a MailChimp audience with tags, and trigger a campaign."
          inputParameters:
            - name: customer_query
              in: body
              type: string
              description: "The Shopify customer search query, e.g. orders_count:>5."
            - name: mailchimp_list_id
              in: body
              type: string
              description: "The MailChimp audience list ID."
            - name: segment_tag
              in: body
              type: string
              description: "The tag to apply to synced members."
            - name: campaign_template_id
              in: body
              type: string
              description: "The MailChimp campaign template ID."
          steps:
            - name: search-customers
              type: call
              call: "shopify-admin.search-customers"
              with:
                query: "{{customer_query}}"
            - name: add-to-audience
              type: call
              call: "mailchimp.batch-add-members"
              with:
                list_id: "{{mailchimp_list_id}}"
                members: "{{search-customers.customers}}"
                tag: "{{segment_tag}}"
            - name: create-campaign
              type: call
              call: "mailchimp.create-campaign"
              with:
                list_id: "{{mailchimp_list_id}}"
                template_id: "{{campaign_template_id}}"
                segment_tag: "{{segment_tag}}"
                subject: "Special offer for our loyal customers"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: customer-search
          path: "/customers/search.json"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search-customers
              method: GET
    - type: http
      namespace: mailchimp
      baseUri: "https://{{mailchimp_dc}}.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: list-members
          path: "/lists/{{list_id}}/members"
          inputParameters:
            - name: list_id
              in: path
          operations:
            - name: batch-add-members
              method: POST
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: create-campaign
              method: POST

On new Shopify order creation, runs fraud analysis using order risk data, checks the customer against an internal blocklist, and if flagged, places the order on hold, creates a Zendesk investigation ticket, and alerts the fraud team in Slack.

naftiko: "0.5"
info:
  label: "Fraud Detection and Order Hold Pipeline"
  description: "On new Shopify order creation, runs fraud analysis using order risk data, checks the customer against an internal blocklist, and if flagged, places the order on hold, creates a Zendesk investigation ticket, and alerts the fraud team in Slack."
  tags:
    - e-commerce
    - fraud-detection
    - security
    - zendesk
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: fraud-prevention
      port: 8080
      tools:
        - name: check-and-hold-fraud-order
          description: "Given an order ID, check Shopify order risks and internal blocklist. If high risk, hold the order, create a Zendesk ticket, and alert Slack."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID to evaluate."
          steps:
            - name: get-order
              type: call
              call: "shopify-admin.get-order"
              with:
                order_id: "{{order_id}}"
            - name: get-risks
              type: call
              call: "shopify-admin.get-order-risks"
              with:
                order_id: "{{order_id}}"
            - name: create-investigation
              type: call
              call: "zendesk.create-ticket"
              with:
                subject: "Fraud investigation: Order #{{get-order.order_number}}"
                description: "High-risk order detected.\n\nOrder: #{{get-order.order_number}}\nAmount: {{get-order.total_price}} {{get-order.currency}}\nCustomer: {{get-order.customer.email}}\nRisk assessment: {{get-risks.risks[0].message}}\nRecommendation: {{get-risks.risks[0].recommendation}}"
                priority: "urgent"
                tags: "fraud,shopify,investigation"
            - name: alert-fraud-team
              type: call
              call: "slack.post-message"
              with:
                channel: "#fraud-alerts"
                text: "FRAUD ALERT: Order #{{get-order.order_number}} flagged. Amount: {{get-order.total_price}} {{get-order.currency}}. Customer: {{get-order.customer.email}}. Risk: {{get-risks.risks[0].recommendation}}. Zendesk: {{create-investigation.id}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
        - name: order-risks
          path: "/orders/{{order_id}}/risks.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order-risks
              method: GET
    - type: http
      namespace: zendesk
      baseUri: "https://{{zendesk_subdomain}}.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_api_token"
      resources:
        - name: tickets
          path: "/tickets.json"
          operations:
            - name: create-ticket
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves the fulfillment record for a specific order, returning tracking number, carrier, status, and shipment timestamps.

naftiko: "0.5"
info:
  label: "Fulfillment Status Check"
  description: "Retrieves the fulfillment record for a specific order, returning tracking number, carrier, status, and shipment timestamps."
  tags:
    - e-commerce
    - fulfillment
    - shipping
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: fulfillment
      port: 8080
      tools:
        - name: get-fulfillment
          description: "Retrieve fulfillment details for an order. Returns tracking number, carrier, status, and timestamps."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID."
            - name: fulfillment_id
              in: body
              type: string
              description: "The Shopify fulfillment ID."
          call: "shopify-admin.get-fulfillment"
          with:
            order_id: "{{order_id}}"
            fulfillment_id: "{{fulfillment_id}}"
          outputParameters:
            - name: tracking_number
              type: string
              mapping: "$.fulfillment.tracking_number"
            - name: tracking_company
              type: string
              mapping: "$.fulfillment.tracking_company"
            - name: status
              type: string
              mapping: "$.fulfillment.status"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: fulfillments
          path: "/orders/{{order_id}}/fulfillments/{{fulfillment_id}}.json"
          inputParameters:
            - name: order_id
              in: path
            - name: fulfillment_id
              in: path
          operations:
            - name: get-fulfillment
              method: GET

Retrieves a Shopify gift card by ID and returns the current balance, initial value, currency, status, and expiration date. Used by support agents to verify gift card validity.

naftiko: "0.5"
info:
  label: "Gift Card Balance Check"
  description: "Retrieves a Shopify gift card by ID and returns the current balance, initial value, currency, status, and expiration date. Used by support agents to verify gift card validity."
  tags:
    - e-commerce
    - gift-cards
    - payments
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: gift-cards
      port: 8080
      tools:
        - name: check-gift-card-balance
          description: "Look up a Shopify gift card by ID. Returns balance, initial value, currency, status, and expiration."
          inputParameters:
            - name: gift_card_id
              in: body
              type: string
              description: "The Shopify gift card ID."
          call: "shopify-admin.get-gift-card"
          with:
            gift_card_id: "{{gift_card_id}}"
          outputParameters:
            - name: balance
              type: string
              mapping: "$.gift_card.balance"
            - name: initial_value
              type: string
              mapping: "$.gift_card.initial_value"
            - name: currency
              type: string
              mapping: "$.gift_card.currency"
            - name: status
              type: string
              mapping: "$.gift_card.disabled_at"
            - name: expires_on
              type: string
              mapping: "$.gift_card.expires_on"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: gift-cards
          path: "/gift_cards/{{gift_card_id}}.json"
          inputParameters:
            - name: gift_card_id
              in: path
          operations:
            - name: get-gift-card
              method: GET

Triggers a GitHub Actions workflow to deploy a Shopify theme, monitors the workflow run status, updates the theme in Shopify, and notifies the engineering Slack channel with deployment results.

naftiko: "0.5"
info:
  label: "GitHub Actions Deployment Pipeline for Shopify Theme"
  description: "Triggers a GitHub Actions workflow to deploy a Shopify theme, monitors the workflow run status, updates the theme in Shopify, and notifies the engineering Slack channel with deployment results."
  tags:
    - e-commerce
    - platform-engineering
    - ci-cd
    - github-actions
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: theme-deployment
      port: 8080
      tools:
        - name: deploy-theme
          description: "Trigger a GitHub Actions workflow to build and deploy a Shopify theme, then notify the team."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "The GitHub repository in owner/repo format."
            - name: branch
              in: body
              type: string
              description: "The branch to deploy from."
            - name: theme_id
              in: body
              type: string
              description: "The Shopify theme ID to update."
          steps:
            - name: trigger-workflow
              type: call
              call: "github.dispatch-workflow"
              with:
                repo: "{{repo}}"
                workflow_id: "deploy-theme.yml"
                ref: "{{branch}}"
            - name: get-run-status
              type: call
              call: "github.get-workflow-run"
              with:
                repo: "{{repo}}"
                run_id: "{{trigger-workflow.id}}"
            - name: notify-engineering
              type: call
              call: "slack.post-message"
              with:
                channel: "#theme-deployments"
                text: "Theme deployment for {{repo}}@{{branch}} to theme {{theme_id}}: {{get-run-status.conclusion}}. Run: {{get-run-status.html_url}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-dispatches
          path: "/repos/{{repo}}/actions/workflows/{{workflow_id}}/dispatches"
          inputParameters:
            - name: repo
              in: path
            - name: workflow_id
              in: path
          operations:
            - name: dispatch-workflow
              method: POST
        - name: workflow-runs
          path: "/repos/{{repo}}/actions/runs/{{run_id}}"
          inputParameters:
            - name: repo
              in: path
            - name: run_id
              in: path
          operations:
            - name: get-workflow-run
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Pulls Shopify order data and Google Analytics campaign attribution for a given date range, cross-references revenue by UTM source, and logs the attribution report in Google Sheets.

naftiko: "0.5"
info:
  label: "Google Analytics Sales Attribution Reporter"
  description: "Pulls Shopify order data and Google Analytics campaign attribution for a given date range, cross-references revenue by UTM source, and logs the attribution report in Google Sheets."
  tags:
    - e-commerce
    - analytics
    - google-analytics
    - google-sheets
    - marketing
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: sales-attribution
      port: 8080
      tools:
        - name: generate-attribution-report
          description: "Given a date range, pull Shopify orders and Google Analytics campaign data, then log an attribution report in Google Sheets."
          inputParameters:
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          steps:
            - name: get-orders
              type: call
              call: "shopify-admin.list-orders"
              with:
                created_at_min: "{{start_date}}"
                created_at_max: "{{end_date}}"
                status: "any"
            - name: get-ga-data
              type: call
              call: "google-analytics.run-report"
              with:
                property_id: "{{ga_property_id}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
                dimensions: "sessionSource,sessionMedium,sessionCampaignName"
                metrics: "transactions,totalRevenue"
            - name: log-report
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "{{attribution_sheet_id}}"
                range: "Attribution!A:D"
                values:
                  - "{{start_date}} - {{end_date}}"
                  - "{{get-orders.count}}"
                  - "{{get-ga-data.rows}}"
                  - "generated"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders.json"
          inputParameters:
            - name: created_at_min
              in: query
            - name: created_at_max
              in: query
            - name: status
              in: query
          operations:
            - name: list-orders
              method: GET
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST

When a new Shopify customer is created, syncs the customer profile to HubSpot CRM as a contact, including order history summary and lifetime value, then sends a welcome drip campaign trigger.

naftiko: "0.5"
info:
  label: "HubSpot CRM Customer Sync"
  description: "When a new Shopify customer is created, syncs the customer profile to HubSpot CRM as a contact, including order history summary and lifetime value, then sends a welcome drip campaign trigger."
  tags:
    - e-commerce
    - customers
    - crm
    - hubspot
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: crm-sync
      port: 8080
      tools:
        - name: sync-customer-to-hubspot
          description: "Given a Shopify customer ID, create or update the contact in HubSpot CRM with order stats and trigger a welcome campaign."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Shopify customer ID."
          steps:
            - name: get-customer
              type: call
              call: "shopify-admin.get-customer"
              with:
                customer_id: "{{customer_id}}"
            - name: create-hubspot-contact
              type: call
              call: "hubspot.create-contact"
              with:
                email: "{{get-customer.email}}"
                firstname: "{{get-customer.first_name}}"
                lastname: "{{get-customer.last_name}}"
                phone: "{{get-customer.phone}}"
                shopify_orders_count: "{{get-customer.orders_count}}"
                shopify_total_spent: "{{get-customer.total_spent}}"
                shopify_customer_id: "{{customer_id}}"
            - name: enroll-in-workflow
              type: call
              call: "hubspot.enroll-in-workflow"
              with:
                contact_id: "{{create-hubspot-contact.id}}"
                workflow_id: "{{welcome_workflow_id}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: customers
          path: "/customers/{{customer_id}}.json"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_api_key"
      resources:
        - name: contacts
          path: "/crm/v3/objects/contacts"
          operations:
            - name: create-contact
              method: POST
        - name: workflows
          path: "/automation/v4/flows/{{workflow_id}}/enrollments"
          inputParameters:
            - name: workflow_id
              in: path
          operations:
            - name: enroll-in-workflow
              method: POST

Processes an international Shopify order by fetching live exchange rates, calculating the converted total, updating the order note with conversion details, and notifying the finance team in Slack.

naftiko: "0.5"
info:
  label: "International Order with Currency Conversion"
  description: "Processes an international Shopify order by fetching live exchange rates, calculating the converted total, updating the order note with conversion details, and notifying the finance team in Slack."
  tags:
    - e-commerce
    - orders
    - payments
    - currencies
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: intl-orders
      port: 8080
      tools:
        - name: process-international-order
          description: "Given an order ID and target currency, fetch exchange rate, calculate conversion, annotate the order, and notify finance."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID."
            - name: target_currency
              in: body
              type: string
              description: "The target currency code, e.g. EUR, GBP."
          steps:
            - name: get-order
              type: call
              call: "shopify-admin.get-order"
              with:
                order_id: "{{order_id}}"
            - name: get-exchange-rate
              type: call
              call: "exchange-rate.get-rate"
              with:
                from: "{{get-order.currency}}"
                to: "{{target_currency}}"
            - name: update-order-note
              type: call
              call: "shopify-admin.update-order"
              with:
                order_id: "{{order_id}}"
                note: "Currency conversion: {{get-order.total_price}} {{get-order.currency}} = {{converted_amount}} {{target_currency}} at rate {{get-exchange-rate.rate}}"
            - name: notify-finance
              type: call
              call: "slack.post-message"
              with:
                channel: "#finance-intl"
                text: "International order #{{get-order.order_number}}: {{get-order.total_price}} {{get-order.currency}} ({{target_currency}} equivalent at {{get-exchange-rate.rate}}). Customer: {{get-order.customer.email}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
            - name: update-order
              method: PUT
    - type: http
      namespace: exchange-rate
      baseUri: "https://api.exchangerate-api.com/v4"
      authentication:
        type: bearer
        token: "$secrets.exchange_rate_api_key"
      resources:
        - name: rates
          path: "/latest/{{from}}"
          inputParameters:
            - name: from
              in: path
          operations:
            - name: get-rate
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves inventory location listing data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Inventory Location Listing"
  description: "Retrieves inventory location listing data from the Shopify e-commerce platform systems."
  tags:
    - inventory
    - shopify
    - listing
capability:
  exposes:
    - type: mcp
      namespace: inventory
      port: 8080
      tools:
        - name: inventory-location-listing
          description: "Retrieves inventory location listing data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.inventory-location-listing"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/inventory/location/listing/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: inventory-location-listing
              method: GET

When a product variant inventory drops below threshold, adjusts the Shopify inventory level based on warehouse system data, and sends a low-stock alert to the procurement Slack channel.

naftiko: "0.5"
info:
  label: "Inventory Sync with Warehouse and Slack Alert"
  description: "When a product variant inventory drops below threshold, adjusts the Shopify inventory level based on warehouse system data, and sends a low-stock alert to the procurement Slack channel."
  tags:
    - e-commerce
    - inventory
    - warehouse
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: inventory-sync
      port: 8080
      tools:
        - name: sync-inventory-and-alert
          description: "Given an inventory item ID and location ID, fetch the warehouse quantity, update Shopify inventory, and alert Slack if below threshold."
          inputParameters:
            - name: inventory_item_id
              in: body
              type: string
              description: "The Shopify inventory item ID."
            - name: location_id
              in: body
              type: string
              description: "The Shopify location ID."
            - name: sku
              in: body
              type: string
              description: "The product SKU for warehouse lookup."
            - name: low_stock_threshold
              in: body
              type: number
              description: "The threshold below which a low-stock alert is triggered."
          steps:
            - name: get-warehouse-stock
              type: call
              call: "warehouse-api.get-stock"
              with:
                sku: "{{sku}}"
            - name: update-inventory
              type: call
              call: "shopify-admin.set-inventory-level"
              with:
                inventory_item_id: "{{inventory_item_id}}"
                location_id: "{{location_id}}"
                available: "{{get-warehouse-stock.quantity}}"
            - name: alert-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "#procurement-alerts"
                text: "Low stock alert: SKU {{sku}} has {{get-warehouse-stock.quantity}} units in warehouse. Threshold: {{low_stock_threshold}}."
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: inventory-levels
          path: "/inventory_levels/set.json"
          operations:
            - name: set-inventory-level
              method: POST
    - type: http
      namespace: warehouse-api
      baseUri: "https://wms.{{company_domain}}/api/v1"
      authentication:
        type: bearer
        token: "$secrets.warehouse_api_token"
      resources:
        - name: stock
          path: "/stock/{{sku}}"
          inputParameters:
            - name: sku
              in: path
          operations:
            - name: get-stock
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves marketing event listing data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Marketing Event Listing"
  description: "Retrieves marketing event listing data from the Shopify e-commerce platform systems."
  tags:
    - marketing
    - shopify
    - listing
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: marketing-event-listing
          description: "Retrieves marketing event listing data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.marketing-event-listing"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/marketing/event/listing/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: marketing-event-listing
              method: GET

Orchestrates merchant accessibility compliance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Accessibility Compliance Pipeline"
  description: "Orchestrates merchant accessibility compliance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - hubspot
    - zendesk
    - github
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-accessibility-compliance-pipeline
          description: "Orchestrates merchant accessibility compliance pipeline across e-commerce platform 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: "hubspot.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "zendesk.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "github.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: hubspot-resource
          path: "/api/merchant"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: zendesk
      baseUri: "https://shopify.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: zendesk-resource
          path: "/api/merchant"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: github-resource
          path: "/api/merchant"
          operations:
            - name: execute-3
              method: POST

Orchestrates merchant churn prediction pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Churn Prediction Pipeline"
  description: "Orchestrates merchant churn prediction pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - datadog
    - hubspot
    - zendesk
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-churn-prediction-pipeline
          description: "Orchestrates merchant churn prediction pipeline across e-commerce platform 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: "hubspot.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "zendesk.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/merchant"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: hubspot-resource
          path: "/api/merchant"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: zendesk
      baseUri: "https://shopify.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: zendesk-resource
          path: "/api/merchant"
          operations:
            - name: execute-3
              method: POST

Orchestrates merchant data export pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Data Export Pipeline"
  description: "Orchestrates merchant data export pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - stripe
    - sendgrid
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-data-export-pipeline
          description: "Orchestrates merchant data export pipeline across e-commerce platform 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: "stripe.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: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/merchant"
          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/merchant"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://shopify.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/merchant"
          operations:
            - name: execute-3
              method: POST

Orchestrates merchant financial reporting pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Financial Reporting Pipeline"
  description: "Orchestrates merchant financial reporting pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - slack
    - jira
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-financial-reporting-pipeline
          description: "Orchestrates merchant financial reporting pipeline across e-commerce platform 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: "datadog.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/merchant"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://shopify.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/merchant"
          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/merchant"
          operations:
            - name: execute-3
              method: POST

Orchestrates merchant growth advisory pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Growth Advisory Pipeline"
  description: "Orchestrates merchant growth advisory pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - zendesk
    - github
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-growth-advisory-pipeline
          description: "Orchestrates merchant growth advisory pipeline across e-commerce platform 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: "zendesk.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "github.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "shopify.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://shopify.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: zendesk-resource
          path: "/api/merchant"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: github-resource
          path: "/api/merchant"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: shopify-resource
          path: "/api/merchant"
          operations:
            - name: execute-3
              method: POST

Orchestrates merchant marketing automation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Marketing Automation Pipeline"
  description: "Orchestrates merchant marketing automation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - shopify
    - stripe
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-marketing-automation-pipeline
          description: "Orchestrates merchant marketing automation pipeline across e-commerce platform 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: "stripe.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: shopify-resource
          path: "/api/merchant"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/merchant"
          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/merchant"
          operations:
            - name: execute-3
              method: POST

Orchestrates merchant migration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Migration Pipeline"
  description: "Orchestrates merchant migration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - github
    - shopify
    - stripe
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-migration-pipeline
          description: "Orchestrates merchant migration pipeline across e-commerce platform 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: "github.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: "stripe.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: github-resource
          path: "/api/merchant"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: shopify-resource
          path: "/api/merchant"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/merchant"
          operations:
            - name: execute-3
              method: POST

Orchestrates merchant onboarding pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Onboarding Pipeline"
  description: "Orchestrates merchant onboarding pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - shopify
    - stripe
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-onboarding-pipeline
          description: "Orchestrates merchant onboarding pipeline across e-commerce platform 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: "stripe.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: shopify-resource
          path: "/api/merchant"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/merchant"
          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/merchant"
          operations:
            - name: execute-3
              method: POST

Orchestrates merchant security review pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Security Review Pipeline"
  description: "Orchestrates merchant security review pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-security-review-pipeline
          description: "Orchestrates merchant security review pipeline across e-commerce platform 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://shopify.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/merchant"
          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/merchant"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://shopify.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/merchant"
          operations:
            - name: execute-3
              method: POST

Orchestrates merchant support escalation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Support Escalation Pipeline"
  description: "Orchestrates merchant support escalation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - jira
    - datadog
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-support-escalation-pipeline
          description: "Orchestrates merchant support escalation pipeline across e-commerce platform 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: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "hubspot.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://shopify.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/merchant"
          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/merchant"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: hubspot-resource
          path: "/api/merchant"
          operations:
            - name: execute-3
              method: POST

Orchestrates merchant tax compliance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Merchant Tax Compliance Pipeline"
  description: "Orchestrates merchant tax compliance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - merchant
    - shopify
    - sendgrid
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: merchant
      port: 8080
      tools:
        - name: merchant-tax-compliance-pipeline
          description: "Orchestrates merchant tax compliance pipeline across e-commerce platform 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: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.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/merchant"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://shopify.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/merchant"
          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/merchant"
          operations:
            - name: execute-3
              method: POST

When Shopify inventory changes, broadcasts the updated quantity to Amazon Seller Central and BigCommerce to keep all sales channels in sync, then posts a summary to Slack.

naftiko: "0.5"
info:
  label: "Multi-Channel Inventory Broadcaster"
  description: "When Shopify inventory changes, broadcasts the updated quantity to Amazon Seller Central and BigCommerce to keep all sales channels in sync, then posts a summary to Slack."
  tags:
    - e-commerce
    - inventory
    - multi-channel
    - amazon-web-services
    - bigcommerce
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: inventory-broadcast
      port: 8080
      tools:
        - name: broadcast-inventory
          description: "Given a SKU and new quantity, update inventory on Shopify, Amazon, and BigCommerce, then notify Slack."
          inputParameters:
            - name: sku
              in: body
              type: string
              description: "The product SKU."
            - name: quantity
              in: body
              type: number
              description: "The new available quantity."
            - name: inventory_item_id
              in: body
              type: string
              description: "The Shopify inventory item ID."
            - name: location_id
              in: body
              type: string
              description: "The Shopify location ID."
          steps:
            - name: update-shopify
              type: call
              call: "shopify-admin.set-inventory-level"
              with:
                inventory_item_id: "{{inventory_item_id}}"
                location_id: "{{location_id}}"
                available: "{{quantity}}"
            - name: update-amazon
              type: call
              call: "amazon-sp.update-inventory"
              with:
                sku: "{{sku}}"
                quantity: "{{quantity}}"
            - name: update-bigcommerce
              type: call
              call: "bigcommerce.update-variant-inventory"
              with:
                sku: "{{sku}}"
                inventory_level: "{{quantity}}"
            - name: notify-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "#inventory-sync"
                text: "Inventory broadcast complete for SKU {{sku}}: {{quantity}} units synced to Shopify, Amazon, and BigCommerce."
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: inventory-levels
          path: "/inventory_levels/set.json"
          operations:
            - name: set-inventory-level
              method: POST
    - type: http
      namespace: amazon-sp
      baseUri: "https://sellingpartnerapi-na.amazon.com"
      authentication:
        type: bearer
        token: "$secrets.amazon_sp_token"
      resources:
        - name: inventory
          path: "/fba/inventory/v1/items/{{sku}}"
          inputParameters:
            - name: sku
              in: path
          operations:
            - name: update-inventory
              method: PUT
    - type: http
      namespace: bigcommerce
      baseUri: "https://api.bigcommerce.com/stores/{{bigcommerce_store_hash}}/v3"
      authentication:
        type: bearer
        token: "$secrets.bigcommerce_api_token"
      resources:
        - name: variants
          path: "/catalog/variants"
          operations:
            - name: update-variant-inventory
              method: PUT
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Orchestrates multi currency pricing pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Multi Currency Pricing Pipeline"
  description: "Orchestrates multi currency pricing pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - multi
    - shopify
    - slack
    - jira
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: multi
      port: 8080
      tools:
        - name: multi-currency-pricing-pipeline
          description: "Orchestrates multi currency pricing pipeline across e-commerce platform 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: "datadog.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/multi"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://shopify.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/multi"
          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/multi"
          operations:
            - name: execute-3
              method: POST

Orchestrates multi location inventory sync pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Multi Location Inventory Sync Pipeline"
  description: "Orchestrates multi location inventory sync pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - multi
    - shopify
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: multi
      port: 8080
      tools:
        - name: multi-location-inventory-sync-pipeline
          description: "Orchestrates multi location inventory sync pipeline across e-commerce platform 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://shopify.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/multi"
          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/multi"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://shopify.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/multi"
          operations:
            - name: execute-3
              method: POST

Creates a new product in Shopify, publishes it to a specified sales channel, generates a promotional image description via Claude, creates a Facebook Ads draft campaign, and notifies the marketing team in Slack.

naftiko: "0.5"
info:
  label: "New Product Launch Pipeline"
  description: "Creates a new product in Shopify, publishes it to a specified sales channel, generates a promotional image description via Claude, creates a Facebook Ads draft campaign, and notifies the marketing team in Slack."
  tags:
    - e-commerce
    - products
    - marketing
    - claude
    - facebook-ads
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: product-launch
      port: 8080
      tools:
        - name: launch-product
          description: "Given product details, create the product in Shopify, generate AI marketing copy, draft a Facebook ad, and notify the marketing Slack channel."
          inputParameters:
            - name: title
              in: body
              type: string
              description: "The product title."
            - name: body_html
              in: body
              type: string
              description: "The product description in HTML."
            - name: vendor
              in: body
              type: string
              description: "The product vendor."
            - name: product_type
              in: body
              type: string
              description: "The product type."
            - name: price
              in: body
              type: string
              description: "The variant price."
            - name: image_url
              in: body
              type: string
              description: "The product image URL."
          steps:
            - name: create-product
              type: call
              call: "shopify-admin.create-product"
              with:
                title: "{{title}}"
                body_html: "{{body_html}}"
                vendor: "{{vendor}}"
                product_type: "{{product_type}}"
                price: "{{price}}"
                image_url: "{{image_url}}"
            - name: generate-ad-copy
              type: call
              call: "claude.create-message"
              with:
                model: "claude-sonnet-4-20250514"
                prompt: "Write a compelling Facebook ad headline and body for this product: {{title}}. Description: {{body_html}}. Price: {{price}}. Keep it under 90 characters for headline and 250 for body."
            - name: create-ad-draft
              type: call
              call: "facebook-ads.create-ad"
              with:
                campaign_name: "Launch: {{title}}"
                headline: "{{generate-ad-copy.headline}}"
                body: "{{generate-ad-copy.body}}"
                image_url: "{{image_url}}"
                link: "https://{{shop_domain}}/products/{{create-product.handle}}"
            - name: notify-marketing
              type: call
              call: "slack.post-message"
              with:
                channel: "#marketing"
                text: "New product launched: {{title}} ({{price}}). Shopify ID: {{create-product.id}}. Facebook ad draft created: {{create-ad-draft.id}}."
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: products
          path: "/products.json"
          operations:
            - name: create-product
              method: POST
    - type: http
      namespace: claude
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: bearer
        token: "$secrets.anthropic_api_key"
      inputParameters:
        - name: anthropic-version
          in: header
          value: "2023-06-01"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST
    - type: http
      namespace: facebook-ads
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_ads_token"
      resources:
        - name: ads
          path: "/act_{{ad_account_id}}/ads"
          inputParameters:
            - name: ad_account_id
              in: path
          operations:
            - name: create-ad
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Monitors New Relic for error rate spikes on the Shopify storefront app, creates a PagerDuty incident if the threshold is breached, and posts diagnostic context to the engineering Slack channel.

naftiko: "0.5"
info:
  label: "New Relic Error Spike Responder"
  description: "Monitors New Relic for error rate spikes on the Shopify storefront app, creates a PagerDuty incident if the threshold is breached, and posts diagnostic context to the engineering Slack channel."
  tags:
    - e-commerce
    - platform-engineering
    - monitoring
    - new-relic
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: error-monitoring
      port: 8080
      tools:
        - name: respond-to-error-spike
          description: "Query New Relic for error rates. If above threshold, create a PagerDuty incident and alert Slack."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The New Relic application ID."
            - name: error_rate_threshold
              in: body
              type: number
              description: "The error rate percentage threshold."
          steps:
            - name: query-error-rate
              type: call
              call: "newrelic.get-error-rate"
              with:
                app_id: "{{app_id}}"
            - name: create-pagerduty-incident
              type: call
              call: "pagerduty.create-incident"
              with:
                service_id: "{{pagerduty_service_id}}"
                title: "Shopify storefront error rate spike: {{query-error-rate.error_rate}}%"
                urgency: "high"
                body: "Error rate {{query-error-rate.error_rate}}% exceeds threshold {{error_rate_threshold}}%. App: {{app_id}}"
            - name: alert-engineering
              type: call
              call: "slack.post-message"
              with:
                channel: "#platform-engineering"
                text: "ERROR SPIKE: Storefront app {{app_id}} error rate at {{query-error-rate.error_rate}}% (threshold: {{error_rate_threshold}}%). PagerDuty incident created. Top error: {{query-error-rate.top_error}}"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: bearer
        token: "$secrets.newrelic_api_key"
      resources:
        - name: error-rate
          path: "/applications/{{app_id}}/metrics/data.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-error-rate
              method: GET
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_api_key"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Orchestrates order fraud review pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Order Fraud Review Pipeline"
  description: "Orchestrates order fraud review pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - order
    - shopify
    - sendgrid
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: order
      port: 8080
      tools:
        - name: order-fraud-review-pipeline
          description: "Orchestrates order fraud review pipeline across e-commerce platform 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: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.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/order"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://shopify.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/order"
          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/order"
          operations:
            - name: execute-3
              method: POST

When an order is marked as fulfilled in Shopify, creates the fulfillment record, then sends shipping confirmation with tracking details to the customer via SendGrid and posts a notification to the operations Slack channel.

naftiko: "0.5"
info:
  label: "Order Fulfillment and Tracking Notifier"
  description: "When an order is marked as fulfilled in Shopify, creates the fulfillment record, then sends shipping confirmation with tracking details to the customer via SendGrid and posts a notification to the operations Slack channel."
  tags:
    - e-commerce
    - fulfillment
    - shipping
    - sendgrid
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: fulfillment-ops
      port: 8080
      tools:
        - name: fulfill-and-notify
          description: "Given an order ID, tracking number, and carrier, create a fulfillment in Shopify, email the customer via SendGrid, and notify the ops Slack channel."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID to fulfill."
            - name: tracking_number
              in: body
              type: string
              description: "The carrier tracking number."
            - name: tracking_company
              in: body
              type: string
              description: "The shipping carrier name."
            - name: location_id
              in: body
              type: string
              description: "The Shopify location ID fulfilling the order."
          steps:
            - name: get-order
              type: call
              call: "shopify-admin.get-order"
              with:
                order_id: "{{order_id}}"
            - name: create-fulfillment
              type: call
              call: "shopify-admin.create-fulfillment"
              with:
                order_id: "{{order_id}}"
                tracking_number: "{{tracking_number}}"
                tracking_company: "{{tracking_company}}"
                location_id: "{{location_id}}"
            - name: email-customer
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{get-order.customer.email}}"
                subject: "Your order #{{get-order.order_number}} has shipped!"
                body: "Hi {{get-order.customer.first_name}}, your order has been shipped via {{tracking_company}}. Tracking number: {{tracking_number}}"
            - name: notify-ops
              type: call
              call: "slack.post-message"
              with:
                channel: "#fulfillment-ops"
                text: "Order #{{get-order.order_number}} fulfilled. Tracking: {{tracking_number}} ({{tracking_company}}). Customer: {{get-order.customer.email}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
        - name: fulfillments
          path: "/orders/{{order_id}}/fulfillments.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: create-fulfillment
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Orchestrates order fulfillment optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Order Fulfillment Optimization Pipeline"
  description: "Orchestrates order fulfillment optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - order
    - shopify
    - shopify
    - stripe
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: order
      port: 8080
      tools:
        - name: order-fulfillment-optimization-pipeline
          description: "Orchestrates order fulfillment optimization pipeline across e-commerce platform 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: "stripe.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: shopify-resource
          path: "/api/order"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/order"
          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/order"
          operations:
            - name: execute-3
              method: POST

Retrieves a Shopify order by order ID and returns order status, line items, fulfillment state, and customer details. Used by support and operations teams to quickly inspect order health.

naftiko: "0.5"
info:
  label: "Order Lookup"
  description: "Retrieves a Shopify order by order ID and returns order status, line items, fulfillment state, and customer details. Used by support and operations teams to quickly inspect order health."
  tags:
    - e-commerce
    - orders
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: order-management
      port: 8080
      tools:
        - name: get-order
          description: "Look up a Shopify order by ID. Returns status, line items, fulfillment state, total price, and customer email."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID."
          call: "shopify-admin.get-order"
          with:
            order_id: "{{order_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.order.financial_status"
            - name: fulfillment_status
              type: string
              mapping: "$.order.fulfillment_status"
            - name: total_price
              type: string
              mapping: "$.order.total_price"
            - name: customer_email
              type: string
              mapping: "$.order.customer.email"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET

Retrieves order risk assessment lookup data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Order Risk Assessment Lookup"
  description: "Retrieves order risk assessment lookup data from the Shopify e-commerce platform systems."
  tags:
    - order
    - shopify
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: order
      port: 8080
      tools:
        - name: order-risk-assessment-lookup
          description: "Retrieves order risk assessment lookup data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.order-risk-assessment-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/order/risk/assessment/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: order-risk-assessment-lookup
              method: GET

Calculates sales tax for a Shopify draft order using Avalara AvaTax, updates the draft order with computed tax lines, and logs the tax calculation in a Google Sheet for compliance.

naftiko: "0.5"
info:
  label: "Order Tax Calculation with Avalara"
  description: "Calculates sales tax for a Shopify draft order using Avalara AvaTax, updates the draft order with computed tax lines, and logs the tax calculation in a Google Sheet for compliance."
  tags:
    - e-commerce
    - taxes
    - avalara
    - google-sheets
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: tax-compliance
      port: 8080
      tools:
        - name: calculate-and-apply-tax
          description: "Given a draft order ID, calculate tax via Avalara AvaTax, apply it to the draft order, and log the result."
          inputParameters:
            - name: draft_order_id
              in: body
              type: string
              description: "The Shopify draft order ID."
          steps:
            - name: get-draft-order
              type: call
              call: "shopify-admin.get-draft-order"
              with:
                draft_order_id: "{{draft_order_id}}"
            - name: calculate-tax
              type: call
              call: "avalara.create-transaction"
              with:
                type: "SalesOrder"
                customerCode: "{{get-draft-order.customer.id}}"
                addresses:
                  shipTo:
                    line1: "{{get-draft-order.shipping_address.address1}}"
                    city: "{{get-draft-order.shipping_address.city}}"
                    region: "{{get-draft-order.shipping_address.province_code}}"
                    postalCode: "{{get-draft-order.shipping_address.zip}}"
                    country: "{{get-draft-order.shipping_address.country_code}}"
                amount: "{{get-draft-order.subtotal_price}}"
            - name: update-draft-order
              type: call
              call: "shopify-admin.update-draft-order"
              with:
                draft_order_id: "{{draft_order_id}}"
                tax_amount: "{{calculate-tax.totalTax}}"
            - name: log-tax
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "{{tax_log_sheet_id}}"
                range: "TaxLog!A:F"
                values:
                  - "{{draft_order_id}}"
                  - "{{get-draft-order.subtotal_price}}"
                  - "{{calculate-tax.totalTax}}"
                  - "{{get-draft-order.shipping_address.province_code}}"
                  - "{{calculate-tax.id}}"
                  - "{{get-draft-order.created_at}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: draft-orders
          path: "/draft_orders/{{draft_order_id}}.json"
          inputParameters:
            - name: draft_order_id
              in: path
          operations:
            - name: get-draft-order
              method: GET
            - name: update-draft-order
              method: PUT
    - type: http
      namespace: avalara
      baseUri: "https://rest.avatax.com/api/v2"
      authentication:
        type: basic
        username: "$secrets.avalara_account_id"
        password: "$secrets.avalara_license_key"
      resources:
        - name: transactions
          path: "/transactions/create"
          operations:
            - name: create-transaction
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST

Retrieves Shopify payment transaction details for an order including gateway, amount, currency, authorization code, and error codes.

naftiko: "0.5"
info:
  label: "Payment Transaction Lookup"
  description: "Retrieves Shopify payment transaction details for an order including gateway, amount, currency, authorization code, and error codes."
  tags:
    - e-commerce
    - payments
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: payments
      port: 8080
      tools:
        - name: get-transactions
          description: "Retrieve payment transactions for a Shopify order. Returns gateway, amount, kind, status, and authorization."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID."
          call: "shopify-admin.list-transactions"
          with:
            order_id: "{{order_id}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: transactions
          path: "/orders/{{order_id}}/transactions.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: list-transactions
              method: GET

Orchestrates pos inventory sync pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Pos Inventory Sync Pipeline"
  description: "Orchestrates pos inventory sync pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - pos
    - shopify
    - github
    - shopify
    - stripe
capability:
  exposes:
    - type: mcp
      namespace: pos
      port: 8080
      tools:
        - name: pos-inventory-sync-pipeline
          description: "Orchestrates pos inventory sync pipeline across e-commerce platform 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: "github.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: "stripe.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: github-resource
          path: "/api/pos"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: shopify-resource
          path: "/api/pos"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/pos"
          operations:
            - name: execute-3
              method: POST

Retrieves price rule details check data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Price Rule Details Check"
  description: "Retrieves price rule details check data from the Shopify e-commerce platform systems."
  tags:
    - price
    - shopify
    - check
capability:
  exposes:
    - type: mcp
      namespace: price
      port: 8080
      tools:
        - name: price-rule-details-check
          description: "Retrieves price rule details check data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.price-rule-details-check"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/price/rule/details/check/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: price-rule-details-check
              method: GET

Orchestrates product bundling strategy pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Product Bundling Strategy Pipeline"
  description: "Orchestrates product bundling strategy pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - product
    - shopify
    - datadog
    - hubspot
    - zendesk
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-bundling-strategy-pipeline
          description: "Orchestrates product bundling strategy pipeline across e-commerce platform 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: "hubspot.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "zendesk.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/product"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: hubspot-resource
          path: "/api/product"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: zendesk
      baseUri: "https://shopify.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: zendesk-resource
          path: "/api/product"
          operations:
            - name: execute-3
              method: POST

Exports Shopify product catalog data and submits it to Google Merchant Center for Google Shopping listings, then logs the sync status in a Google Sheet.

naftiko: "0.5"
info:
  label: "Product Catalog Export to Google Merchant Center"
  description: "Exports Shopify product catalog data and submits it to Google Merchant Center for Google Shopping listings, then logs the sync status in a Google Sheet."
  tags:
    - e-commerce
    - products
    - google
    - marketing
    - google-sheets
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: merchant-feed
      port: 8080
      tools:
        - name: export-to-merchant-center
          description: "Given a product collection ID, fetch products from Shopify and submit them to Google Merchant Center, then log the result."
          inputParameters:
            - name: collection_id
              in: body
              type: string
              description: "The Shopify collection ID to export."
            - name: merchant_id
              in: body
              type: string
              description: "The Google Merchant Center account ID."
          steps:
            - name: get-collection-products
              type: call
              call: "shopify-admin.get-collection-products"
              with:
                collection_id: "{{collection_id}}"
            - name: submit-to-merchant
              type: call
              call: "google-merchant.insert-products"
              with:
                merchant_id: "{{merchant_id}}"
                products: "{{get-collection-products.products}}"
            - name: log-sync
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "{{merchant_sync_sheet_id}}"
                range: "MerchantSync!A:D"
                values:
                  - "{{collection_id}}"
                  - "{{get-collection-products.products.length}}"
                  - "{{submit-to-merchant.status}}"
                  - "synced"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: collection-products
          path: "/collections/{{collection_id}}/products.json"
          inputParameters:
            - name: collection_id
              in: path
          operations:
            - name: get-collection-products
              method: GET
    - type: http
      namespace: google-merchant
      baseUri: "https://shoppingcontent.googleapis.com/content/v2.1"
      authentication:
        type: bearer
        token: "$secrets.google_merchant_token"
      resources:
        - name: products
          path: "/{{merchant_id}}/products"
          inputParameters:
            - name: merchant_id
              in: path
          operations:
            - name: insert-products
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST

Fetches product images from Shopify, sends them to Cloudflare Images for optimization and resizing, updates the Shopify product with optimized image URLs, and logs the optimization results.

naftiko: "0.5"
info:
  label: "Product Image Optimization Pipeline"
  description: "Fetches product images from Shopify, sends them to Cloudflare Images for optimization and resizing, updates the Shopify product with optimized image URLs, and logs the optimization results."
  tags:
    - e-commerce
    - products
    - storefront
    - cloudflare
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: image-optimization
      port: 8080
      tools:
        - name: optimize-product-images
          description: "Given a product ID, fetch images, optimize them via Cloudflare Images, and update the Shopify product."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "The Shopify product ID."
          steps:
            - name: get-product
              type: call
              call: "shopify-admin.get-product"
              with:
                product_id: "{{product_id}}"
            - name: upload-to-cloudflare
              type: call
              call: "cloudflare.upload-image"
              with:
                url: "{{get-product.images[0].src}}"
                requireSignedURLs: false
            - name: update-product-image
              type: call
              call: "shopify-admin.update-product-image"
              with:
                product_id: "{{product_id}}"
                image_id: "{{get-product.images[0].id}}"
                src: "{{upload-to-cloudflare.variants[0]}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: products
          path: "/products/{{product_id}}.json"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: get-product
              method: GET
        - name: product-images
          path: "/products/{{product_id}}/images/{{image_id}}.json"
          inputParameters:
            - name: product_id
              in: path
            - name: image_id
              in: path
          operations:
            - name: update-product-image
              method: PUT
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4/accounts/{{cloudflare_account_id}}"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_api_token"
      resources:
        - name: images
          path: "/images/v1"
          operations:
            - name: upload-image
              method: POST

Queries the Shopify inventory level for a given product variant at a specific location. Returns available quantity and whether the item is in stock.

naftiko: "0.5"
info:
  label: "Product Inventory Check"
  description: "Queries the Shopify inventory level for a given product variant at a specific location. Returns available quantity and whether the item is in stock."
  tags:
    - e-commerce
    - inventory
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: inventory
      port: 8080
      tools:
        - name: check-inventory
          description: "Check inventory level for a product variant at a given location. Returns available quantity."
          inputParameters:
            - name: inventory_item_id
              in: body
              type: string
              description: "The Shopify inventory item ID."
            - name: location_id
              in: body
              type: string
              description: "The Shopify location ID."
          call: "shopify-admin.get-inventory-level"
          with:
            inventory_item_id: "{{inventory_item_id}}"
            location_id: "{{location_id}}"
          outputParameters:
            - name: available
              type: number
              mapping: "$.inventory_levels[0].available"
            - name: location_id
              type: string
              mapping: "$.inventory_levels[0].location_id"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: inventory-levels
          path: "/inventory_levels.json"
          inputParameters:
            - name: inventory_item_id
              in: query
            - name: location_id
              in: query
          operations:
            - name: get-inventory-level
              method: GET

Fetches a single Shopify product by product ID, returning title, description, variants with pricing, images, and published status.

naftiko: "0.5"
info:
  label: "Product Listing Retrieval"
  description: "Fetches a single Shopify product by product ID, returning title, description, variants with pricing, images, and published status."
  tags:
    - e-commerce
    - products
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: product-catalog
      port: 8080
      tools:
        - name: get-product
          description: "Retrieve a Shopify product by ID. Returns title, body HTML, variants, images, and status."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "The Shopify product ID."
          call: "shopify-admin.get-product"
          with:
            product_id: "{{product_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.product.title"
            - name: status
              type: string
              mapping: "$.product.status"
            - name: vendor
              type: string
              mapping: "$.product.vendor"
            - name: product_type
              type: string
              mapping: "$.product.product_type"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: products
          path: "/products/{{product_id}}.json"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: get-product
              method: GET

Orchestrates product photography pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Product Photography Pipeline"
  description: "Orchestrates product photography pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - product
    - shopify
    - sendgrid
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-photography-pipeline
          description: "Orchestrates product photography pipeline across e-commerce platform 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: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.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/product"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://shopify.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

Orchestrates product recommendation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Product Recommendation Pipeline"
  description: "Orchestrates product recommendation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - product
    - shopify
    - datadog
    - hubspot
    - zendesk
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-recommendation-pipeline
          description: "Orchestrates product recommendation pipeline across e-commerce platform 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: "hubspot.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "zendesk.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/product"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: hubspot-resource
          path: "/api/product"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: zendesk
      baseUri: "https://shopify.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: zendesk-resource
          path: "/api/product"
          operations:
            - name: execute-3
              method: POST

Fetches product reviews from Shopify product metafields, analyzes sentiment using Claude, updates the product description with a review summary, and posts insights to Slack.

naftiko: "0.5"
info:
  label: "Product Review Aggregator and Sentiment Analyzer"
  description: "Fetches product reviews from Shopify product metafields, analyzes sentiment using Claude, updates the product description with a review summary, and posts insights to Slack."
  tags:
    - e-commerce
    - products
    - ai-ml
    - claude
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: review-analytics
      port: 8080
      tools:
        - name: analyze-product-reviews
          description: "Given a product ID, fetch reviews, analyze sentiment with Claude, update the product with a summary, and notify Slack."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "The Shopify product ID."
          steps:
            - name: get-product
              type: call
              call: "shopify-admin.get-product"
              with:
                product_id: "{{product_id}}"
            - name: get-reviews
              type: call
              call: "shopify-admin.get-product-metafields"
              with:
                product_id: "{{product_id}}"
                namespace: "reviews"
            - name: analyze-sentiment
              type: call
              call: "claude.create-message"
              with:
                model: "claude-sonnet-4-20250514"
                prompt: "Analyze the sentiment of these product reviews for '{{get-product.title}}'. Provide: average sentiment (positive/neutral/negative), top 3 praised features, top 3 complaints, and a 2-sentence summary. Reviews: {{get-reviews.metafields}}"
            - name: notify-insights
              type: call
              call: "slack.post-message"
              with:
                channel: "#product-insights"
                text: "Review analysis for {{get-product.title}}: {{analyze-sentiment.content}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: products
          path: "/products/{{product_id}}.json"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: get-product
              method: GET
        - name: product-metafields
          path: "/products/{{product_id}}/metafields.json"
          inputParameters:
            - name: product_id
              in: path
            - name: namespace
              in: query
          operations:
            - name: get-product-metafields
              method: GET
    - type: http
      namespace: claude
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: bearer
        token: "$secrets.anthropic_api_key"
      inputParameters:
        - name: anthropic-version
          in: header
          value: "2023-06-01"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Orchestrates product seo optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Product Seo Optimization Pipeline"
  description: "Orchestrates product seo optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - product
    - shopify
    - stripe
    - sendgrid
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-seo-optimization-pipeline
          description: "Orchestrates product seo optimization pipeline across e-commerce platform 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: "stripe.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: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/product"
          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/product"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://shopify.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/product"
          operations:
            - name: execute-3
              method: POST

Orchestrates product variant management pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Product Variant Management Pipeline"
  description: "Orchestrates product variant management pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - product
    - shopify
    - stripe
    - sendgrid
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-variant-management-pipeline
          description: "Orchestrates product variant management pipeline across e-commerce platform 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: "stripe.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: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/product"
          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/product"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://shopify.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/product"
          operations:
            - name: execute-3
              method: POST

Retrieves redirect url listing data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Redirect Url Listing"
  description: "Retrieves redirect url listing data from the Shopify e-commerce platform systems."
  tags:
    - redirect
    - shopify
    - listing
capability:
  exposes:
    - type: mcp
      namespace: redirect
      port: 8080
      tools:
        - name: redirect-url-listing
          description: "Retrieves redirect url listing data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.redirect-url-listing"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/redirect/url/listing/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: redirect-url-listing
              method: GET

Processes a refund on a Shopify order, creates a Zendesk support ticket documenting the refund, and sends a refund confirmation email to the customer via SendGrid.

naftiko: "0.5"
info:
  label: "Refund Processing with Zendesk Ticket"
  description: "Processes a refund on a Shopify order, creates a Zendesk support ticket documenting the refund, and sends a refund confirmation email to the customer via SendGrid."
  tags:
    - e-commerce
    - refunds
    - payments
    - zendesk
    - sendgrid
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: refund-ops
      port: 8080
      tools:
        - name: process-refund
          description: "Given an order ID and refund amount, process the refund in Shopify, create a Zendesk ticket, and email the customer confirmation."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID."
            - name: refund_amount
              in: body
              type: string
              description: "The amount to refund."
            - name: reason
              in: body
              type: string
              description: "The reason for the refund."
          steps:
            - name: get-order
              type: call
              call: "shopify-admin.get-order"
              with:
                order_id: "{{order_id}}"
            - name: create-refund
              type: call
              call: "shopify-admin.create-refund"
              with:
                order_id: "{{order_id}}"
                amount: "{{refund_amount}}"
                reason: "{{reason}}"
            - name: create-ticket
              type: call
              call: "zendesk.create-ticket"
              with:
                subject: "Refund processed for order #{{get-order.order_number}}"
                description: "Refund of {{refund_amount}} {{get-order.currency}} processed for {{get-order.customer.email}}. Reason: {{reason}}"
                requester_email: "{{get-order.customer.email}}"
                priority: "normal"
            - name: email-confirmation
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{get-order.customer.email}}"
                subject: "Refund confirmation for order #{{get-order.order_number}}"
                body: "Hi {{get-order.customer.first_name}}, your refund of {{refund_amount}} {{get-order.currency}} has been processed. Reason: {{reason}}. It may take 5-10 business days to appear on your statement."
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
        - name: refunds
          path: "/orders/{{order_id}}/refunds.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: create-refund
              method: POST
    - type: http
      namespace: zendesk
      baseUri: "https://{{zendesk_subdomain}}.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_api_token"
      resources:
        - name: tickets
          path: "/tickets.json"
          operations:
            - name: create-ticket
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Retrieves script tag listing check data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Script Tag Listing Check"
  description: "Retrieves script tag listing check data from the Shopify e-commerce platform systems."
  tags:
    - script
    - shopify
    - check
capability:
  exposes:
    - type: mcp
      namespace: script
      port: 8080
      tools:
        - name: script-tag-listing-check
          description: "Retrieves script tag listing check data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.script-tag-listing-check"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/script/tag/listing/check/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: script-tag-listing-check
              method: GET

Orchestrates seasonal sale preparation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Seasonal Sale Preparation Pipeline"
  description: "Orchestrates seasonal sale preparation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - seasonal
    - shopify
    - slack
    - jira
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: seasonal
      port: 8080
      tools:
        - name: seasonal-sale-preparation-pipeline
          description: "Orchestrates seasonal sale preparation pipeline across e-commerce platform 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: "datadog.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/seasonal"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://shopify.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/seasonal"
          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/seasonal"
          operations:
            - name: execute-3
              method: POST

Fetches a Shopify product, generates SEO-optimized title and description using Claude, updates the product in Shopify, and submits the URL to Google Search Console for indexing.

naftiko: "0.5"
info:
  label: "SEO Product Description Generator"
  description: "Fetches a Shopify product, generates SEO-optimized title and description using Claude, updates the product in Shopify, and submits the URL to Google Search Console for indexing."
  tags:
    - e-commerce
    - products
    - seo
    - ai-ml
    - claude
    - google-search-console
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: seo-automation
      port: 8080
      tools:
        - name: generate-seo-content
          description: "Given a product ID, generate SEO-optimized content with Claude, update the Shopify product, and submit the URL for indexing."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "The Shopify product ID."
            - name: target_keywords
              in: body
              type: string
              description: "Comma-separated target keywords for SEO optimization."
          steps:
            - name: get-product
              type: call
              call: "shopify-admin.get-product"
              with:
                product_id: "{{product_id}}"
            - name: generate-seo
              type: call
              call: "claude.create-message"
              with:
                model: "claude-sonnet-4-20250514"
                prompt: "Generate an SEO-optimized product title (max 70 chars) and meta description (max 160 chars) and body HTML (300-500 words) for this product: {{get-product.title}}. Current description: {{get-product.body_html}}. Target keywords: {{target_keywords}}. Return JSON with keys: seo_title, meta_description, body_html."
            - name: update-product
              type: call
              call: "shopify-admin.update-product"
              with:
                product_id: "{{product_id}}"
                title: "{{generate-seo.seo_title}}"
                body_html: "{{generate-seo.body_html}}"
                metafields_global_title_tag: "{{generate-seo.seo_title}}"
                metafields_global_description_tag: "{{generate-seo.meta_description}}"
            - name: submit-for-indexing
              type: call
              call: "google-search-console.submit-url"
              with:
                site_url: "https://{{shop_domain}}"
                url: "https://{{shop_domain}}/products/{{get-product.handle}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: products
          path: "/products/{{product_id}}.json"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: get-product
              method: GET
            - name: update-product
              method: PUT
    - type: http
      namespace: claude
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: bearer
        token: "$secrets.anthropic_api_key"
      inputParameters:
        - name: anthropic-version
          in: header
          value: "2023-06-01"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST
    - type: http
      namespace: google-search-console
      baseUri: "https://searchconsole.googleapis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_search_console_token"
      resources:
        - name: url-inspection
          path: "/urlInspection/index:inspect"
          operations:
            - name: submit-url
              method: POST

Retrieves a Shopify order, compares shipping rates from multiple carriers via ShipStation, selects the cheapest option, creates the shipping label, and updates the order fulfillment with tracking info.

naftiko: "0.5"
info:
  label: "Shipping Label Generator with Carrier Selection"
  description: "Retrieves a Shopify order, compares shipping rates from multiple carriers via ShipStation, selects the cheapest option, creates the shipping label, and updates the order fulfillment with tracking info."
  tags:
    - e-commerce
    - shipping
    - fulfillment
    - shipstation
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: shipping-automation
      port: 8080
      tools:
        - name: generate-shipping-label
          description: "Given an order ID, fetch rates from ShipStation, select the optimal carrier, create a label, and update the Shopify fulfillment."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID."
            - name: location_id
              in: body
              type: string
              description: "The Shopify fulfillment location ID."
          steps:
            - name: get-order
              type: call
              call: "shopify-admin.get-order"
              with:
                order_id: "{{order_id}}"
            - name: get-rates
              type: call
              call: "shipstation.get-rates"
              with:
                from_postal_code: "{{warehouse_postal_code}}"
                to_postal_code: "{{get-order.shipping_address.zip}}"
                to_country: "{{get-order.shipping_address.country_code}}"
                weight_oz: "{{get-order.total_weight}}"
            - name: create-label
              type: call
              call: "shipstation.create-label"
              with:
                carrier_code: "{{get-rates.rates[0].carrier_code}}"
                service_code: "{{get-rates.rates[0].service_code}}"
                to_name: "{{get-order.shipping_address.name}}"
                to_address1: "{{get-order.shipping_address.address1}}"
                to_city: "{{get-order.shipping_address.city}}"
                to_state: "{{get-order.shipping_address.province_code}}"
                to_postal_code: "{{get-order.shipping_address.zip}}"
                to_country: "{{get-order.shipping_address.country_code}}"
                weight_oz: "{{get-order.total_weight}}"
            - name: create-fulfillment
              type: call
              call: "shopify-admin.create-fulfillment"
              with:
                order_id: "{{order_id}}"
                tracking_number: "{{create-label.tracking_number}}"
                tracking_company: "{{create-label.carrier}}"
                location_id: "{{location_id}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
        - name: fulfillments
          path: "/orders/{{order_id}}/fulfillments.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: create-fulfillment
              method: POST
    - type: http
      namespace: shipstation
      baseUri: "https://ssapi.shipstation.com"
      authentication:
        type: basic
        username: "$secrets.shipstation_api_key"
        password: "$secrets.shipstation_api_secret"
      resources:
        - name: rates
          path: "/shipments/getrates"
          operations:
            - name: get-rates
              method: POST
        - name: labels
          path: "/shipments/createlabel"
          operations:
            - name: create-label
              method: POST

Queries available shipping rates for a given checkout or draft order, returning carrier names, prices, and estimated delivery windows.

naftiko: "0.5"
info:
  label: "Shipping Rate Lookup"
  description: "Queries available shipping rates for a given checkout or draft order, returning carrier names, prices, and estimated delivery windows."
  tags:
    - e-commerce
    - shipping
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: shipping
      port: 8080
      tools:
        - name: get-shipping-rates
          description: "Retrieve available shipping rates for a Shopify draft order. Returns carrier service names, rates, and delivery estimates."
          inputParameters:
            - name: draft_order_id
              in: body
              type: string
              description: "The Shopify draft order ID to retrieve shipping rates for."
          call: "shopify-admin.get-draft-order-shipping"
          with:
            draft_order_id: "{{draft_order_id}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: draft-order-shipping
          path: "/draft_orders/{{draft_order_id}}/shipping_rates.json"
          inputParameters:
            - name: draft_order_id
              in: path
          operations:
            - name: get-draft-order-shipping
              method: GET

Orchestrates shipping rate optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Shipping Rate Optimization Pipeline"
  description: "Orchestrates shipping rate optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - shipping
    - shopify
    - hubspot
    - zendesk
    - github
capability:
  exposes:
    - type: mcp
      namespace: shipping
      port: 8080
      tools:
        - name: shipping-rate-optimization-pipeline
          description: "Orchestrates shipping rate optimization pipeline across e-commerce platform 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: "hubspot.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "zendesk.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "github.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: hubspot-resource
          path: "/api/shipping"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: zendesk
      baseUri: "https://shopify.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: zendesk-resource
          path: "/api/shipping"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: github-resource
          path: "/api/shipping"
          operations:
            - name: execute-3
              method: POST

Retrieves all active Shopify store locations including name, address, phone, and whether the location is active for fulfillment. Used by operations teams for warehouse and store planning.

naftiko: "0.5"
info:
  label: "Shop Location Listing"
  description: "Retrieves all active Shopify store locations including name, address, phone, and whether the location is active for fulfillment. Used by operations teams for warehouse and store planning."
  tags:
    - e-commerce
    - logistics
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: locations
      port: 8080
      tools:
        - name: list-locations
          description: "List all active locations for the Shopify store. Returns location name, address, and fulfillment status."
          inputParameters: []
          call: "shopify-admin.list-locations"
          with: {}
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: locations
          path: "/locations.json"
          operations:
            - name: list-locations
              method: GET

Reads a metafield value for the shop resource by namespace and key. Used to retrieve custom configuration, feature flags, or store-level metadata.

naftiko: "0.5"
info:
  label: "Shop Metafield Reader"
  description: "Reads a metafield value for the shop resource by namespace and key. Used to retrieve custom configuration, feature flags, or store-level metadata."
  tags:
    - e-commerce
    - configuration
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: shop-config
      port: 8080
      tools:
        - name: get-shop-metafield
          description: "Retrieve a shop-level metafield by namespace and key."
          inputParameters:
            - name: namespace
              in: body
              type: string
              description: "The metafield namespace."
            - name: key
              in: body
              type: string
              description: "The metafield key."
          call: "shopify-admin.list-shop-metafields"
          with:
            namespace: "{{namespace}}"
            key: "{{key}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: shop-metafields
          path: "/metafields.json"
          inputParameters:
            - name: namespace
              in: query
            - name: key
              in: query
          operations:
            - name: list-shop-metafields
              method: GET

Orchestrates shop performance benchmark pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Shop Performance Benchmark Pipeline"
  description: "Orchestrates shop performance benchmark pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - shop
    - shopify
    - shopify
    - stripe
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: shop
      port: 8080
      tools:
        - name: shop-performance-benchmark-pipeline
          description: "Orchestrates shop performance benchmark pipeline across e-commerce platform 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: "stripe.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: shopify-resource
          path: "/api/shop"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/shop"
          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/shop"
          operations:
            - name: execute-3
              method: POST

Registers a new webhook subscription in Shopify for a specified topic, validates the endpoint availability, and logs the registration in Confluence for team documentation.

naftiko: "0.5"
info:
  label: "Shopify Flow Trigger via Webhook Registration"
  description: "Registers a new webhook subscription in Shopify for a specified topic, validates the endpoint availability, and logs the registration in Confluence for team documentation."
  tags:
    - e-commerce
    - platform-engineering
    - webhooks
    - confluence
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: webhook-management
      port: 8080
      tools:
        - name: register-and-document-webhook
          description: "Given a webhook topic and callback URL, register the webhook in Shopify and document it in Confluence."
          inputParameters:
            - name: topic
              in: body
              type: string
              description: "The webhook topic, e.g. orders/create, products/update."
            - name: address
              in: body
              type: string
              description: "The callback URL for the webhook."
            - name: format
              in: body
              type: string
              description: "The webhook format: json or xml."
          steps:
            - name: create-webhook
              type: call
              call: "shopify-admin.create-webhook"
              with:
                topic: "{{topic}}"
                address: "{{address}}"
                format: "{{format}}"
            - name: document-in-confluence
              type: call
              call: "confluence.create-page"
              with:
                space_key: "ENGINEERING"
                title: "Webhook: {{topic}} -> {{address}}"
                body: "Webhook registered on {{current_date}}.\n\nTopic: {{topic}}\nAddress: {{address}}\nFormat: {{format}}\nShopify Webhook ID: {{create-webhook.id}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: webhooks
          path: "/webhooks.json"
          operations:
            - name: create-webhook
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://{{confluence_domain}}.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

Allows warehouse staff to adjust Shopify inventory levels via a Slack slash command, validates the request, applies the adjustment, and confirms the change back in Slack.

naftiko: "0.5"
info:
  label: "Slack-Triggered Inventory Adjustment"
  description: "Allows warehouse staff to adjust Shopify inventory levels via a Slack slash command, validates the request, applies the adjustment, and confirms the change back in Slack."
  tags:
    - e-commerce
    - inventory
    - slack
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: inventory-slack
      port: 8080
      tools:
        - name: adjust-inventory-from-slack
          description: "Given a SKU, location ID, and adjustment quantity from a Slack request, update the Shopify inventory and confirm in Slack."
          inputParameters:
            - name: sku
              in: body
              type: string
              description: "The product SKU."
            - name: location_id
              in: body
              type: string
              description: "The Shopify location ID."
            - name: adjustment
              in: body
              type: number
              description: "The quantity adjustment (positive to add, negative to remove)."
            - name: slack_channel
              in: body
              type: string
              description: "The Slack channel to confirm the adjustment in."
            - name: requester
              in: body
              type: string
              description: "The Slack user who requested the adjustment."
          steps:
            - name: adjust-inventory
              type: call
              call: "shopify-admin.adjust-inventory-level"
              with:
                location_id: "{{location_id}}"
                sku: "{{sku}}"
                adjustment: "{{adjustment}}"
            - name: confirm-in-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Inventory adjusted by <@{{requester}}>: SKU {{sku}} at location {{location_id}} adjusted by {{adjustment}} units. New available: {{adjust-inventory.available}}."
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: inventory-levels
          path: "/inventory_levels/adjust.json"
          operations:
            - name: adjust-inventory-level
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves smart collection listing data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Smart Collection Listing"
  description: "Retrieves smart collection listing data from the Shopify e-commerce platform systems."
  tags:
    - smart
    - shopify
    - listing
capability:
  exposes:
    - type: mcp
      namespace: smart
      port: 8080
      tools:
        - name: smart-collection-listing
          description: "Retrieves smart collection listing data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.smart-collection-listing"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/smart/collection/listing/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: smart-collection-listing
              method: GET

Orchestrates social selling integration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Social Selling Integration Pipeline"
  description: "Orchestrates social selling integration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - social
    - shopify
    - github
    - shopify
    - stripe
capability:
  exposes:
    - type: mcp
      namespace: social
      port: 8080
      tools:
        - name: social-selling-integration-pipeline
          description: "Orchestrates social selling integration pipeline across e-commerce platform 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: "github.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: "stripe.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: github-resource
          path: "/api/social"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: shopify-resource
          path: "/api/social"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/social"
          operations:
            - name: execute-3
              method: POST

Retrieves storefront access tokens for the shop, returning token, title, and creation date. Used for validating headless commerce API access.

naftiko: "0.5"
info:
  label: "Storefront Access Token Check"
  description: "Retrieves storefront access tokens for the shop, returning token, title, and creation date. Used for validating headless commerce API access."
  tags:
    - e-commerce
    - storefront
    - platform-engineering
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: storefront-auth
      port: 8080
      tools:
        - name: list-storefront-tokens
          description: "List storefront access tokens for the Shopify store."
          inputParameters: []
          call: "shopify-admin.list-storefront-tokens"
          with: {}
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: storefront-tokens
          path: "/storefront_access_tokens.json"
          operations:
            - name: list-storefront-tokens
              method: GET

Fetches a Shopify custom collection by ID, returning title, description, image, published status, and sort order.

naftiko: "0.5"
info:
  label: "Storefront Collection Retrieval"
  description: "Fetches a Shopify custom collection by ID, returning title, description, image, published status, and sort order."
  tags:
    - e-commerce
    - collections
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: product-catalog
      port: 8080
      tools:
        - name: get-collection
          description: "Retrieve a Shopify custom collection by ID. Returns title, body HTML, image, and sort order."
          inputParameters:
            - name: collection_id
              in: body
              type: string
              description: "The Shopify custom collection ID."
          call: "shopify-admin.get-collection"
          with:
            collection_id: "{{collection_id}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: custom-collections
          path: "/custom_collections/{{collection_id}}.json"
          inputParameters:
            - name: collection_id
              in: path
          operations:
            - name: get-collection
              method: GET

Reconciles a Shopify order payment with Stripe by fetching the Shopify transaction, looking up the corresponding Stripe charge, comparing amounts, and logging discrepancies to a Google Sheet.

naftiko: "0.5"
info:
  label: "Stripe Payment Reconciliation"
  description: "Reconciles a Shopify order payment with Stripe by fetching the Shopify transaction, looking up the corresponding Stripe charge, comparing amounts, and logging discrepancies to a Google Sheet."
  tags:
    - e-commerce
    - payments
    - stripe
    - google-sheets
    - reconciliation
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: payment-reconciliation
      port: 8080
      tools:
        - name: reconcile-payment
          description: "Given a Shopify order ID and Stripe charge ID, compare transaction amounts and log any discrepancies."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID."
            - name: stripe_charge_id
              in: body
              type: string
              description: "The Stripe charge ID."
          steps:
            - name: get-shopify-transactions
              type: call
              call: "shopify-admin.list-transactions"
              with:
                order_id: "{{order_id}}"
            - name: get-stripe-charge
              type: call
              call: "stripe.get-charge"
              with:
                charge_id: "{{stripe_charge_id}}"
            - name: log-reconciliation
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "{{reconciliation_sheet_id}}"
                range: "Reconciliation!A:F"
                values:
                  - "{{order_id}}"
                  - "{{stripe_charge_id}}"
                  - "{{get-shopify-transactions.transactions[0].amount}}"
                  - "{{get-stripe-charge.amount}}"
                  - "{{get-stripe-charge.currency}}"
                  - "{{get-stripe-charge.status}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: transactions
          path: "/orders/{{order_id}}/transactions.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: list-transactions
              method: GET
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: charges
          path: "/charges/{{charge_id}}"
          inputParameters:
            - name: charge_id
              in: path
          operations:
            - name: get-charge
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST

Orchestrates subscription billing pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Subscription Billing Pipeline"
  description: "Orchestrates subscription billing pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - subscription
    - shopify
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: subscription
      port: 8080
      tools:
        - name: subscription-billing-pipeline
          description: "Orchestrates subscription billing pipeline across e-commerce platform 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://shopify.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/subscription"
          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/subscription"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://shopify.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/subscription"
          operations:
            - name: execute-3
              method: POST

Creates a recurring subscription for a Shopify customer using Stripe Billing, stores the subscription reference as a customer metafield in Shopify, and sends a welcome email via SendGrid.

naftiko: "0.5"
info:
  label: "Subscription Order Creator via Stripe Billing"
  description: "Creates a recurring subscription for a Shopify customer using Stripe Billing, stores the subscription reference as a customer metafield in Shopify, and sends a welcome email via SendGrid."
  tags:
    - e-commerce
    - subscriptions
    - payments
    - stripe
    - sendgrid
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: subscriptions
      port: 8080
      tools:
        - name: create-subscription
          description: "Given a Shopify customer ID, Stripe price ID, and payment method, create a Stripe subscription, store the reference in Shopify, and send a confirmation email."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Shopify customer ID."
            - name: stripe_customer_id
              in: body
              type: string
              description: "The Stripe customer ID."
            - name: stripe_price_id
              in: body
              type: string
              description: "The Stripe recurring price ID."
          steps:
            - name: get-customer
              type: call
              call: "shopify-admin.get-customer"
              with:
                customer_id: "{{customer_id}}"
            - name: create-stripe-sub
              type: call
              call: "stripe.create-subscription"
              with:
                customer: "{{stripe_customer_id}}"
                price: "{{stripe_price_id}}"
            - name: store-metafield
              type: call
              call: "shopify-admin.create-customer-metafield"
              with:
                customer_id: "{{customer_id}}"
                namespace: "subscriptions"
                key: "stripe_subscription_id"
                value: "{{create-stripe-sub.id}}"
                type: "single_line_text_field"
            - name: send-welcome
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{get-customer.email}}"
                subject: "Welcome to your subscription!"
                body: "Hi {{get-customer.first_name}}, your subscription is now active. Subscription ID: {{create-stripe-sub.id}}. You will be billed automatically each cycle."
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: customers
          path: "/customers/{{customer_id}}.json"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
        - name: customer-metafields
          path: "/customers/{{customer_id}}/metafields.json"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: create-customer-metafield
              method: POST
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: subscriptions
          path: "/subscriptions"
          operations:
            - name: create-subscription
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Retrieves tender transaction listing data from the Shopify e-commerce platform systems.

naftiko: "0.5"
info:
  label: "Tender Transaction Listing"
  description: "Retrieves tender transaction listing data from the Shopify e-commerce platform systems."
  tags:
    - tender
    - shopify
    - listing
capability:
  exposes:
    - type: mcp
      namespace: tender
      port: 8080
      tools:
        - name: tender-transaction-listing
          description: "Retrieves tender transaction listing data from the Shopify e-commerce platform systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "shopify.tender-transaction-listing"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://shopify.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_access_token"
      resources:
        - name: resource
          path: "/tender/transaction/listing/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: tender-transaction-listing
              method: GET

Retrieves a specific theme asset file by key from the active Shopify theme. Used by front-end teams to inspect liquid templates, CSS, and JavaScript assets.

naftiko: "0.5"
info:
  label: "Theme Asset Reader"
  description: "Retrieves a specific theme asset file by key from the active Shopify theme. Used by front-end teams to inspect liquid templates, CSS, and JavaScript assets."
  tags:
    - e-commerce
    - storefront
    - themes
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: storefront-themes
      port: 8080
      tools:
        - name: get-theme-asset
          description: "Retrieve a single theme asset by theme ID and asset key."
          inputParameters:
            - name: theme_id
              in: body
              type: string
              description: "The Shopify theme ID."
            - name: asset_key
              in: body
              type: string
              description: "The asset key path, e.g. templates/index.liquid."
          call: "shopify-admin.get-asset"
          with:
            theme_id: "{{theme_id}}"
            asset_key: "{{asset_key}}"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: theme-assets
          path: "/themes/{{theme_id}}/assets.json"
          inputParameters:
            - name: theme_id
              in: path
            - name: asset_key
              in: query
              value: "{{asset_key}}"
          operations:
            - name: get-asset
              method: GET

Orchestrates theme quality assurance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Theme Quality Assurance Pipeline"
  description: "Orchestrates theme quality assurance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders."
  tags:
    - theme
    - shopify
    - stripe
    - sendgrid
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: theme
      port: 8080
      tools:
        - name: theme-quality-assurance-pipeline
          description: "Orchestrates theme quality assurance pipeline across e-commerce platform 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: "stripe.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: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: stripe-resource
          path: "/api/theme"
          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/theme"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://shopify.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/theme"
          operations:
            - name: execute-3
              method: POST

Sends an order confirmation SMS to the customer via Twilio after a Shopify order is placed, including order number, total, and estimated delivery date.

naftiko: "0.5"
info:
  label: "Twilio SMS Order Confirmation"
  description: "Sends an order confirmation SMS to the customer via Twilio after a Shopify order is placed, including order number, total, and estimated delivery date."
  tags:
    - e-commerce
    - orders
    - notifications
    - twilio
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: order-notifications
      port: 8080
      tools:
        - name: send-order-sms
          description: "Given a Shopify order ID, retrieve order details and send a confirmation SMS via Twilio."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Shopify order ID."
          steps:
            - name: get-order
              type: call
              call: "shopify-admin.get-order"
              with:
                order_id: "{{order_id}}"
            - name: send-sms
              type: call
              call: "twilio.send-sms"
              with:
                to: "{{get-order.customer.phone}}"
                from: "{{twilio_phone_number}}"
                body: "Hi {{get-order.customer.first_name}}! Your order #{{get-order.order_number}} ({{get-order.total_price}} {{get-order.currency}}) has been confirmed. We will notify you when it ships!"
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}.json"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: twilio
      baseUri: "https://api.twilio.com/2010-04-01/Accounts/{{twilio_account_sid}}"
      authentication:
        type: basic
        username: "$secrets.twilio_account_sid"
        password: "$secrets.twilio_auth_token"
      resources:
        - name: messages
          path: "/Messages.json"
          operations:
            - name: send-sms
              method: POST

Lists all active webhook subscriptions for the Shopify store. Returns topic, address, and format for each registered webhook.

naftiko: "0.5"
info:
  label: "Webhook Subscription Listing"
  description: "Lists all active webhook subscriptions for the Shopify store. Returns topic, address, and format for each registered webhook."
  tags:
    - e-commerce
    - platform-engineering
    - webhooks
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: platform-ops
      port: 8080
      tools:
        - name: list-webhooks
          description: "List all webhook subscriptions for the Shopify store. Returns topic, callback address, and format."
          inputParameters: []
          call: "shopify-admin.list-webhooks"
          with: {}
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: webhooks
          path: "/webhooks.json"
          operations:
            - name: list-webhooks
              method: GET

Processes a wholesale draft order in Shopify with volume discounts, updates the corresponding Salesforce opportunity stage, and sends the B2B invoice details via email.

naftiko: "0.5"
info:
  label: "Wholesale B2B Order with Salesforce Opportunity Update"
  description: "Processes a wholesale draft order in Shopify with volume discounts, updates the corresponding Salesforce opportunity stage, and sends the B2B invoice details via email."
  tags:
    - e-commerce
    - b2b
    - wholesale
    - salesforce
    - sendgrid
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: b2b-orders
      port: 8080
      tools:
        - name: process-wholesale-order
          description: "Given a Shopify draft order ID and Salesforce opportunity ID, complete the draft order, update the SF opportunity, and email the invoice."
          inputParameters:
            - name: draft_order_id
              in: body
              type: string
              description: "The Shopify draft order ID."
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID."
          steps:
            - name: get-draft-order
              type: call
              call: "shopify-admin.get-draft-order"
              with:
                draft_order_id: "{{draft_order_id}}"
            - name: complete-draft
              type: call
              call: "shopify-admin.complete-draft-order"
              with:
                draft_order_id: "{{draft_order_id}}"
            - name: update-opportunity
              type: call
              call: "salesforce.update-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
                stage: "Closed Won"
                amount: "{{get-draft-order.total_price}}"
                close_date: "{{get-draft-order.created_at}}"
            - name: send-invoice
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{get-draft-order.customer.email}}"
                subject: "Your wholesale order #{{complete-draft.order_id}} has been confirmed"
                body: "Thank you for your wholesale order. Total: {{get-draft-order.total_price}} {{get-draft-order.currency}}. Your invoice is attached to this order."
  consumes:
    - type: http
      namespace: shopify-admin
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_admin_token"
      resources:
        - name: draft-orders
          path: "/draft_orders/{{draft_order_id}}.json"
          inputParameters:
            - name: draft_order_id
              in: path
          operations:
            - name: get-draft-order
              method: GET
        - name: draft-order-complete
          path: "/draft_orders/{{draft_order_id}}/complete.json"
          inputParameters:
            - name: draft_order_id
              in: path
          operations:
            - name: complete-draft-order
              method: PUT
    - type: http
      namespace: salesforce
      baseUri: "https://{{salesforce_instance}}.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST