Chewy Capabilities

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

Sort
Expand

Recovers abandoned carts by querying Snowflake for cart data, generating personalized offers, sending recovery emails via MailChimp, and tracking conversion in Google Analytics.

naftiko: "0.5"
info:
  label: "Abandoned Cart Recovery Orchestrator"
  description: "Recovers abandoned carts by querying Snowflake for cart data, generating personalized offers, sending recovery emails via MailChimp, and tracking conversion in Google Analytics."
  tags:
    - e-commerce
    - cart-recovery
    - snowflake
    - mailchimp
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: cart-recovery
      port: 8080
      tools:
        - name: recover-abandoned-carts
          description: "Orchestrate abandoned cart recovery across Snowflake, promotions, MailChimp, and Google Analytics."
          inputParameters:
            - name: hours_abandoned
              in: body
              type: integer
              description: "Minimum hours since cart abandonment."
          steps:
            - name: get-abandoned-carts
              type: call
              call: "snowflake.query-abandoned"
              with:
                statement: "SELECT * FROM ABANDONED_CARTS WHERE abandoned_at <= DATEADD(hour, -{{hours_abandoned}}, CURRENT_TIMESTAMP) AND recovery_sent = FALSE"
                warehouse: "CHEWY_ECOMMERCE_WH"
            - name: generate-offers
              type: call
              call: "promotions.create-recovery-offers"
              with:
                carts: "{{get-abandoned-carts.data}}"
            - name: send-recovery-emails
              type: call
              call: "mailchimp.send-campaign"
              with:
                list_id: "cart-abandoners"
                template: "cart-recovery"
                data: "{{generate-offers.email_data}}"
            - name: track-campaign
              type: call
              call: "google-analytics.create-campaign"
              with:
                name: "cart-recovery-{{hours_abandoned}}h"
                source: "email"
                medium: "mailchimp"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-abandoned
              method: POST
    - type: http
      namespace: promotions
      baseUri: "https://promotions-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.promotions_api_token"
      resources:
        - name: recovery
          path: "/cart-recovery-offers"
          operations:
            - name: create-recovery-offers
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: send-campaign
              method: POST
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsadmin.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: campaigns
          path: "/properties/$secrets.ga_property_id/campaigns"
          operations:
            - name: create-campaign
              method: POST

Retrieves payroll data from ADP for Chewy's fulfillment center and corporate employees.

naftiko: "0.5"
info:
  label: "ADP Payroll Data Retriever"
  description: "Retrieves payroll data from ADP for Chewy's fulfillment center and corporate employees."
  tags:
    - hr
    - payroll
    - adp
capability:
  exposes:
    - type: mcp
      namespace: payroll
      port: 8080
      tools:
        - name: get-payroll-summary
          description: "Fetch payroll summary from ADP."
          inputParameters:
            - name: pay_period
              in: body
              type: string
              description: "Pay period."
            - name: department
              in: body
              type: string
              description: "Department."
          call: "adp.get-payroll"
          with:
            period: "{{pay_period}}"
            department: "{{department}}"
          outputParameters:
            - name: total_gross
              type: number
              mapping: "$.summary.total_gross"
            - name: headcount
              type: integer
              mapping: "$.summary.headcount"
  consumes:
    - type: http
      namespace: adp
      baseUri: "https://api.adp.com/hr/v2"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: payroll
          path: "/payroll-outputs"
          operations:
            - name: get-payroll
              method: GET

Runs an Alteryx workflow for collaborative filtering product recommendations and loads results to Snowflake for the recommendation API.

naftiko: "0.5"
info:
  label: "Alteryx Product Recommendation Engine"
  description: "Runs an Alteryx workflow for collaborative filtering product recommendations and loads results to Snowflake for the recommendation API."
  tags:
    - analytics
    - recommendations
    - alteryx
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: product-recommendations
      port: 8080
      tools:
        - name: run-recommendation-model
          description: "Execute the Alteryx product recommendation workflow and load to Snowflake."
          inputParameters:
            - name: pet_type
              in: body
              type: string
              description: "Pet type for recommendations."
            - name: model_version
              in: body
              type: string
              description: "Model version."
          steps:
            - name: trigger-workflow
              type: call
              call: "alteryx.run-workflow"
              with:
                workflow_id: "product_recs_v4"
                parameters: "{\"pet_type\": \"{{pet_type}}\", \"version\": \"{{model_version}}\"}"
            - name: load-results
              type: call
              call: "snowflake.run-query"
              with:
                query: "CALL load_recommendations('{{pet_type}}', '{{model_version}}')"
  consumes:
    - type: http
      namespace: alteryx
      baseUri: "https://alteryx.chewy.com/api/v3"
      authentication:
        type: bearer
        token: "$secrets.alteryx_token"
      resources:
        - name: workflows
          path: "/workflows/{{workflow_id}}/jobs"
          inputParameters:
            - name: workflow_id
              in: path
          operations:
            - name: run-workflow
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Uploads and manages product images in Amazon S3 for the Chewy product catalog.

naftiko: "0.5"
info:
  label: "Amazon S3 Product Image Manager"
  description: "Uploads and manages product images in Amazon S3 for the Chewy product catalog."
  tags:
    - e-commerce
    - content
    - amazon-s3
capability:
  exposes:
    - type: mcp
      namespace: product-images
      port: 8080
      tools:
        - name: upload-product-image
          description: "Upload a product image to S3."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "Product SKU."
            - name: image_type
              in: body
              type: string
              description: "Image type (primary, alternate, lifestyle)."
            - name: content
              in: body
              type: string
              description: "Base64-encoded image data."
          call: "s3.put-object"
          with:
            bucket: "chewy-product-images"
            key: "products/{{product_id}}/{{image_type}}.jpg"
            content_type: "image/jpeg"
          outputParameters:
            - name: etag
              type: string
              mapping: "$.ETag"
            - name: url
              type: string
              mapping: "$.url"
  consumes:
    - type: http
      namespace: s3
      baseUri: "https://chewy-product-images.s3.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: objects
          path: "/{{key}}"
          inputParameters:
            - name: key
              in: path
          operations:
            - name: put-object
              method: PUT

On autoship cancellation request, retrieves customer history from Salesforce, applies retention offer via the promotions engine, updates the subscription, and logs the outcome in Snowflake.

naftiko: "0.5"
info:
  label: "Autoship Cancellation Retention Orchestrator"
  description: "On autoship cancellation request, retrieves customer history from Salesforce, applies retention offer via the promotions engine, updates the subscription, and logs the outcome in Snowflake."
  tags:
    - subscriptions
    - retention
    - salesforce
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: autoship-retention
      port: 8080
      tools:
        - name: process-cancellation
          description: "Orchestrate autoship cancellation retention across Salesforce, promotions, and Snowflake."
          inputParameters:
            - name: subscription_id
              in: body
              type: string
              description: "Autoship subscription ID."
            - name: cancellation_reason
              in: body
              type: string
              description: "Customer's cancellation reason."
          steps:
            - name: get-customer
              type: call
              call: "salesforce.get-customer-360"
              with:
                subscription_id: "{{subscription_id}}"
            - name: generate-offer
              type: call
              call: "promotions.create-retention-offer"
              with:
                customer_id: "{{get-customer.customer_id}}"
                lifetime_value: "{{get-customer.lifetime_value}}"
                reason: "{{cancellation_reason}}"
            - name: apply-offer
              type: call
              call: "subscriptions.update-autoship"
              with:
                subscription_id: "{{subscription_id}}"
                discount: "{{generate-offer.discount_pct}}"
                action: "retention_offer"
            - name: log-outcome
              type: call
              call: "snowflake.insert-retention-log"
              with:
                statement: "INSERT INTO RETENTION_LOG VALUES ('{{subscription_id}}', '{{cancellation_reason}}', '{{generate-offer.offer_type}}', '{{apply-offer.outcome}}', CURRENT_TIMESTAMP)"
                warehouse: "CHEWY_ANALYTICS_WH"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: customers
          path: "/sobjects/Customer__c"
          operations:
            - name: get-customer-360
              method: GET
    - type: http
      namespace: promotions
      baseUri: "https://promotions-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.promotions_api_token"
      resources:
        - name: retention
          path: "/retention-offers"
          operations:
            - name: create-retention-offer
              method: POST
    - type: http
      namespace: subscriptions
      baseUri: "https://subscriptions-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.subscriptions_api_token"
      resources:
        - name: autoship
          path: "/autoship/{{subscription_id}}"
          inputParameters:
            - name: subscription_id
              in: path
          operations:
            - name: update-autoship
              method: PATCH
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: insert-retention-log
              method: POST

Queries Snowflake for Autoship subscription metrics including retention rates, average order values, and churn signals by pet category.

naftiko: "0.5"
info:
  label: "Autoship Subscription Analytics"
  description: "Queries Snowflake for Autoship subscription metrics including retention rates, average order values, and churn signals by pet category."
  tags:
    - e-commerce
    - subscriptions
    - autoship
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: subscription-analytics
      port: 8080
      tools:
        - name: get-autoship-metrics
          description: "Retrieve Autoship subscription performance metrics from Snowflake."
          inputParameters:
            - name: pet_category
              in: body
              type: string
              description: "Pet category (dog, cat, fish, bird, reptile, small_pet)."
            - name: date_range_start
              in: body
              type: string
              description: "Start date."
            - name: date_range_end
              in: body
              type: string
              description: "End date."
          call: "snowflake.run-query"
          with:
            query: "SELECT pet_category, COUNT(DISTINCT subscription_id) as active_subs, AVG(order_value) as avg_order_value, COUNT(CASE WHEN status='cancelled' THEN 1 END)::FLOAT / COUNT(*) as churn_rate, AVG(months_active) as avg_lifetime_months FROM autoship_subscriptions WHERE pet_category='{{pet_category}}' AND created_date BETWEEN '{{date_range_start}}' AND '{{date_range_end}}' GROUP BY pet_category"
          outputParameters:
            - name: results
              type: array
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Retrieves active CloudWatch alarms for Chewy's e-commerce infrastructure including API gateways, Lambda functions, and ECS services.

naftiko: "0.5"
info:
  label: "AWS CloudWatch E-Commerce Alarms"
  description: "Retrieves active CloudWatch alarms for Chewy's e-commerce infrastructure including API gateways, Lambda functions, and ECS services."
  tags:
    - monitoring
    - alarms
    - cloudwatch
    - aws
capability:
  exposes:
    - type: mcp
      namespace: cloud-alarms
      port: 8080
      tools:
        - name: get-active-alarms
          description: "Fetch active CloudWatch alarms for e-commerce infrastructure."
          inputParameters:
            - name: alarm_prefix
              in: body
              type: string
              description: "Alarm name prefix filter."
          call: "cloudwatch.describe-alarms"
          with:
            alarm_name_prefix: "{{alarm_prefix}}"
            state_value: "ALARM"
          outputParameters:
            - name: alarms
              type: array
              mapping: "$.MetricAlarms"
            - name: count
              type: integer
              mapping: "$.MetricAlarms.length"
  consumes:
    - type: http
      namespace: cloudwatch
      baseUri: "https://monitoring.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: alarms
          path: "/"
          operations:
            - name: describe-alarms
              method: POST

Checks CloudWatch metrics for the Lambda functions powering Chewy's Autoship subscription processing.

naftiko: "0.5"
info:
  label: "AWS Lambda Autoship Processing Health"
  description: "Checks CloudWatch metrics for the Lambda functions powering Chewy's Autoship subscription processing."
  tags:
    - devops
    - serverless
    - aws-lambda
    - cloudwatch
capability:
  exposes:
    - type: mcp
      namespace: autoship-health
      port: 8080
      tools:
        - name: check-autoship-lambda
          description: "Get CloudWatch metrics for Autoship Lambda functions."
          inputParameters:
            - name: function_name
              in: body
              type: string
              description: "Lambda function name."
            - name: period_minutes
              in: body
              type: integer
              description: "Lookback period."
          steps:
            - name: get-invocations
              type: call
              call: "cloudwatch.get-metric"
              with:
                namespace: "AWS/Lambda"
                metric_name: "Invocations"
                dimensions: "[{\"Name\": \"FunctionName\", \"Value\": \"{{function_name}}\"}]"
                period: "{{period_minutes}}"
            - name: get-errors
              type: call
              call: "cloudwatch.get-metric"
              with:
                namespace: "AWS/Lambda"
                metric_name: "Errors"
                dimensions: "[{\"Name\": \"FunctionName\", \"Value\": \"{{function_name}}\"}]"
                period: "{{period_minutes}}"
  consumes:
    - type: http
      namespace: cloudwatch
      baseUri: "https://monitoring.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: metrics
          path: "/"
          operations:
            - name: get-metric
              method: POST

Monitors Azure Data Factory pipelines that sync product catalog data from vendors into the data warehouse.

naftiko: "0.5"
info:
  label: "Azure Data Factory Product Data ETL"
  description: "Monitors Azure Data Factory pipelines that sync product catalog data from vendors into the data warehouse."
  tags:
    - data-engineering
    - etl
    - azure-data-factory
capability:
  exposes:
    - type: mcp
      namespace: product-etl
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Check the latest ADF product data pipeline status."
          inputParameters:
            - name: pipeline_name
              in: body
              type: string
              description: "ADF pipeline name."
          call: "adf.get-pipeline-runs"
          with:
            pipeline_name: "{{pipeline_name}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.value[0].status"
            - name: duration
              type: string
              mapping: "$.value[0].durationInMs"
  consumes:
    - type: http
      namespace: adf
      baseUri: "https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/chewy-data-rg/providers/Microsoft.DataFactory/factories/chewy-adf"
      authentication:
        type: bearer
        token: "$secrets.azure_mgmt_token"
      resources:
        - name: pipeline-runs
          path: "/queryPipelineRuns"
          operations:
            - name: get-pipeline-runs
              method: POST

Checks Azure DevOps pipeline status for Chewy's microservices deployments.

naftiko: "0.5"
info:
  label: "Azure DevOps CI/CD Pipeline Status"
  description: "Checks Azure DevOps pipeline status for Chewy's microservices deployments."
  tags:
    - devops
    - ci-cd
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: cicd-status
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Get Azure DevOps pipeline run status."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "Project name."
            - name: pipeline_id
              in: body
              type: string
              description: "Pipeline ID."
          call: "azuredevops.get-pipeline-runs"
          with:
            project: "{{project}}"
            pipeline_id: "{{pipeline_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.value[0].state"
            - name: result
              type: string
              mapping: "$.value[0].result"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/chewy"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azuredevops_pat"
      resources:
        - name: pipeline-runs
          path: "/{{project}}/_apis/pipelines/{{pipeline_id}}/runs"
          inputParameters:
            - name: project
              in: path
            - name: pipeline_id
              in: path
          operations:
            - name: get-pipeline-runs
              method: GET

Monitors Cloudflare CDN performance for Chewy.com including cache hit ratios and bandwidth usage for product images and static assets.

naftiko: "0.5"
info:
  label: "Cloudflare CDN Performance Monitor"
  description: "Monitors Cloudflare CDN performance for Chewy.com including cache hit ratios and bandwidth usage for product images and static assets."
  tags:
    - infrastructure
    - cdn
    - cloudflare
capability:
  exposes:
    - type: mcp
      namespace: cdn-monitoring
      port: 8080
      tools:
        - name: get-cdn-analytics
          description: "Retrieve Cloudflare CDN analytics for Chewy.com."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "Cloudflare zone ID."
            - name: time_range
              in: body
              type: string
              description: "Time range in minutes."
          call: "cloudflare.get-analytics"
          with:
            zone_id: "{{zone_id}}"
            since: "-{{time_range}}min"
          outputParameters:
            - name: requests_cached
              type: integer
              mapping: "$.result.totals.requests.cached"
            - name: requests_uncached
              type: integer
              mapping: "$.result.totals.requests.uncached"
            - name: bandwidth_saved
              type: number
              mapping: "$.result.totals.bandwidth.cached"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: analytics
          path: "/zones/{{zone_id}}/analytics/dashboard"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-analytics
              method: GET

Receives CloudWatch alarms for Chewy's AWS infrastructure and forwards critical alerts to Teams and ServiceNow.

naftiko: "0.5"
info:
  label: "CloudWatch Infrastructure Alerting"
  description: "Receives CloudWatch alarms for Chewy's AWS infrastructure and forwards critical alerts to Teams and ServiceNow."
  tags:
    - devops
    - alerting
    - cloudwatch
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: infra-alerting
      port: 8080
      tools:
        - name: forward-alarm
          description: "Forward a CloudWatch alarm to Teams and create a ServiceNow incident."
          inputParameters:
            - name: alarm_name
              in: body
              type: string
              description: "Alarm name."
            - name: alarm_description
              in: body
              type: string
              description: "Alarm details."
            - name: severity
              in: body
              type: string
              description: "Severity level."
          steps:
            - name: notify-teams
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "infra_alerts"
                text: "AWS ALARM [{{severity}}]: {{alarm_name}} - {{alarm_description}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "CloudWatch: {{alarm_name}}"
                category: "infrastructure"
                urgency: "{{severity}}"
                description: "{{alarm_description}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://chewy.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

Publishes customer service procedures and pet care guides to Confluence and notifies the support team.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Manager"
  description: "Publishes customer service procedures and pet care guides to Confluence and notifies the support team."
  tags:
    - knowledge-management
    - customer-service
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: knowledge-base
      port: 8080
      tools:
        - name: publish-guide
          description: "Create a pet care guide or support procedure in Confluence and notify the team."
          inputParameters:
            - name: space_key
              in: body
              type: string
              description: "Confluence space."
            - name: title
              in: body
              type: string
              description: "Page title."
            - name: content
              in: body
              type: string
              description: "Page content."
          steps:
            - name: create-page
              type: call
              call: "confluence.create-page"
              with:
                space_key: "{{space_key}}"
                title: "{{title}}"
                body: "{{content}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "customer_support"
                text: "New guide published: {{title}}. View at {{create-page.url}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://chewy.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves a purchase order from Coupa and returns status, vendor, and delivery details for supply chain teams.

naftiko: "0.5"
info:
  label: "Coupa Vendor Purchase Order Tracker"
  description: "Retrieves a purchase order from Coupa and returns status, vendor, and delivery details for supply chain teams."
  tags:
    - procurement
    - supply-chain
    - coupa
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a Coupa purchase order."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "PO number."
          call: "coupa.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: supplier
              type: string
              mapping: "$.supplier.name"
            - name: total
              type: number
              mapping: "$.total"
            - name: delivery_date
              type: string
              mapping: "$.need-by-date"
  consumes:
    - type: http
      namespace: coupa
      baseUri: "https://chewy.coupahost.com/api"
      authentication:
        type: bearer
        token: "$secrets.coupa_api_token"
      resources:
        - name: purchase-orders
          path: "/purchase_orders/{{po_number}}"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Escalates high-priority customer complaints by retrieving context from Salesforce, analyzing sentiment via Databricks ML, routing to a specialist in ServiceNow, and sending an apology email.

naftiko: "0.5"
info:
  label: "Customer Complaint Escalation Pipeline"
  description: "Escalates high-priority customer complaints by retrieving context from Salesforce, analyzing sentiment via Databricks ML, routing to a specialist in ServiceNow, and sending an apology email."
  tags:
    - customer-service
    - escalation
    - salesforce
    - databricks
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: complaint-escalation
      port: 8080
      tools:
        - name: escalate-complaint
          description: "Orchestrate complaint escalation across Salesforce, Databricks, ServiceNow, and email."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "Salesforce case ID."
          steps:
            - name: get-case
              type: call
              call: "salesforce.get-case"
              with:
                case_id: "{{case_id}}"
            - name: analyze-sentiment
              type: call
              call: "databricks.score-sentiment"
              with:
                text: "{{get-case.description}}"
                model: "customer-sentiment-v2"
            - name: route-specialist
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Escalated complaint: {{case_id}} - Sentiment: {{analyze-sentiment.score}}"
                category: "customer_escalation"
                assigned_group: "Customer_Experience_Specialists"
                description: "Customer: {{get-case.customer_name}}\nSentiment: {{analyze-sentiment.score}}\nOriginal complaint: {{get-case.description}}"
            - name: send-apology
              type: call
              call: "ses.send-email"
              with:
                to: "{{get-case.customer_email}}"
                subject: "We're sorry - A specialist is looking into your concern"
                body: "Dear {{get-case.customer_name}}, we've escalated your concern to a specialist who will reach out within 24 hours. Reference: {{route-specialist.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: get-case
              method: GET
    - type: http
      namespace: databricks
      baseUri: "https://chewy.cloud.databricks.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: serving
          path: "/serving-endpoints/customer-sentiment-v2/invocations"
          operations:
            - name: score-sentiment
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://chewy.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: ses
      baseUri: "https://email.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: emails
          path: "/v2/email/outbound-emails"
          operations:
            - name: send-email
              method: POST

Processes CCPA/GDPR data requests by identifying records across MongoDB, Snowflake, and Salesforce, generating a data export, and logging compliance in ServiceNow.

naftiko: "0.5"
info:
  label: "Customer Data Privacy Request Orchestrator"
  description: "Processes CCPA/GDPR data requests by identifying records across MongoDB, Snowflake, and Salesforce, generating a data export, and logging compliance in ServiceNow."
  tags:
    - privacy
    - compliance
    - mongodb
    - snowflake
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: privacy-requests
      port: 8080
      tools:
        - name: process-privacy-request
          description: "Orchestrate data privacy request across MongoDB, Snowflake, Salesforce, and ServiceNow."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Customer ID."
            - name: request_type
              in: body
              type: string
              description: "Request type (access, delete, portability)."
          steps:
            - name: get-profile-data
              type: call
              call: "mongodb.find-customer-data"
              with:
                collection: "customer_profiles"
                filter: "{\"customer_id\": \"{{customer_id}}\"}"
            - name: get-analytics-data
              type: call
              call: "snowflake.query-customer-data"
              with:
                statement: "SELECT * FROM CUSTOMER_360 WHERE customer_id = '{{customer_id}}'"
                warehouse: "CHEWY_PRIVACY_WH"
            - name: get-crm-data
              type: call
              call: "salesforce.get-contact"
              with:
                customer_id: "{{customer_id}}"
            - name: log-compliance
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Privacy request: {{request_type}} - Customer {{customer_id}}"
                category: "privacy_compliance"
                assigned_group: "Privacy_Operations"
                description: "Request type: {{request_type}}. Records found: MongoDB={{get-profile-data.found}}, Snowflake={{get-analytics-data.row_count}}, Salesforce={{get-crm-data.found}}."
  consumes:
    - type: http
      namespace: mongodb
      baseUri: "https://data.mongodb-api.chewy.com/app/data-chewy/endpoint/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mongodb_api_key"
      resources:
        - name: find
          path: "/action/findOne"
          operations:
            - name: find-customer-data
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-customer-data
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-contact
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://chewy.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

Processes loyalty tier upgrades by querying Snowflake for spend data, updating the customer profile in Salesforce, sending a congratulations email, and applying new benefits.

naftiko: "0.5"
info:
  label: "Customer Loyalty Tier Upgrade Pipeline"
  description: "Processes loyalty tier upgrades by querying Snowflake for spend data, updating the customer profile in Salesforce, sending a congratulations email, and applying new benefits."
  tags:
    - loyalty
    - customer-engagement
    - snowflake
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: loyalty-tier
      port: 8080
      tools:
        - name: process-tier-upgrade
          description: "Orchestrate loyalty tier upgrade across Snowflake, Salesforce, and email."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Chewy customer ID."
          steps:
            - name: get-spend
              type: call
              call: "snowflake.query-loyalty"
              with:
                statement: "SELECT * FROM LOYALTY_METRICS WHERE customer_id = '{{customer_id}}'"
                warehouse: "CHEWY_ANALYTICS_WH"
            - name: update-tier
              type: call
              call: "salesforce.update-contact"
              with:
                customer_id: "{{customer_id}}"
                loyalty_tier: "{{get-spend.new_tier}}"
            - name: send-congratulations
              type: call
              call: "ses.send-email"
              with:
                to: "{{get-spend.email}}"
                subject: "Congratulations! You've reached {{get-spend.new_tier}} status at Chewy!"
                body: "You've been upgraded to {{get-spend.new_tier}} tier. Enjoy your new benefits!"
            - name: apply-benefits
              type: call
              call: "promotions.activate-tier-benefits"
              with:
                customer_id: "{{customer_id}}"
                tier: "{{get-spend.new_tier}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-loyalty
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: update-contact
              method: PATCH
    - type: http
      namespace: ses
      baseUri: "https://email.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: emails
          path: "/v2/email/outbound-emails"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: promotions
      baseUri: "https://promotions-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.promotions_api_token"
      resources:
        - name: tier-benefits
          path: "/tier-benefits/activate"
          operations:
            - name: activate-tier-benefits
              method: POST

Retrieves a customer order from the order management system and returns shipping status, tracking number, and delivery estimate.

naftiko: "0.5"
info:
  label: "Customer Order Status Lookup"
  description: "Retrieves a customer order from the order management system and returns shipping status, tracking number, and delivery estimate."
  tags:
    - e-commerce
    - orders
    - order-management
capability:
  exposes:
    - type: mcp
      namespace: order-management
      port: 8080
      tools:
        - name: get-order-status
          description: "Look up a Chewy order and return current status and tracking information."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "Chewy order ID."
          call: "orders.get-order"
          with:
            order_id: "{{order_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.order.status"
            - name: tracking_number
              type: string
              mapping: "$.order.shipment.tracking_number"
            - name: carrier
              type: string
              mapping: "$.order.shipment.carrier"
            - name: estimated_delivery
              type: string
              mapping: "$.order.shipment.estimated_delivery"
            - name: total
              type: number
              mapping: "$.order.total"
  consumes:
    - type: http
      namespace: orders
      baseUri: "https://orders-api.chewy.com/v2"
      authentication:
        type: bearer
        token: "$secrets.orders_api_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET

When a customer contacts support about a pet product issue, creates a Salesforce case and a ServiceNow ticket with order history context.

naftiko: "0.5"
info:
  label: "Customer Service Ticket Creator"
  description: "When a customer contacts support about a pet product issue, creates a Salesforce case and a ServiceNow ticket with order history context."
  tags:
    - customer-service
    - salesforce
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: customer-support
      port: 8080
      tools:
        - name: create-support-case
          description: "Create a customer support case in Salesforce and ServiceNow with order context."
          inputParameters:
            - name: customer_email
              in: body
              type: string
              description: "Customer email."
            - name: order_id
              in: body
              type: string
              description: "Related order ID."
            - name: issue_type
              in: body
              type: string
              description: "Issue type (damaged_item, wrong_item, missing_item, product_quality, autoship_issue)."
            - name: description
              in: body
              type: string
              description: "Issue description."
          steps:
            - name: create-sf-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Customer Issue: {{issue_type}} - Order {{order_id}}"
                description: "{{description}}"
                type: "{{issue_type}}"
                email: "{{customer_email}}"
                order_id: "{{order_id}}"
            - name: create-snow-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Support: {{issue_type}} for order {{order_id}}"
                category: "customer_support"
                description: "{{description}}. SF Case: {{create-sf-case.id}}."
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "customer_support"
                text: "New support case: {{issue_type}} for order {{order_id}}. SF: {{create-sf-case.id}}. SNOW: {{create-snow-ticket.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://chewy.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: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Targets lapsed customers by querying Snowflake for inactive accounts, segmenting via Databricks ML, sending personalized win-back emails via MailChimp, and tracking in Salesforce.

naftiko: "0.5"
info:
  label: "Customer Win-Back Campaign Orchestrator"
  description: "Targets lapsed customers by querying Snowflake for inactive accounts, segmenting via Databricks ML, sending personalized win-back emails via MailChimp, and tracking in Salesforce."
  tags:
    - marketing
    - retention
    - snowflake
    - databricks
    - mailchimp
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: win-back
      port: 8080
      tools:
        - name: launch-win-back
          description: "Orchestrate customer win-back campaign across Snowflake, Databricks, MailChimp, and Salesforce."
          inputParameters:
            - name: inactive_days
              in: body
              type: integer
              description: "Minimum days of inactivity."
          steps:
            - name: get-lapsed
              type: call
              call: "snowflake.query-lapsed"
              with:
                statement: "SELECT * FROM CUSTOMER_ACTIVITY WHERE last_order_date <= DATEADD(day, -{{inactive_days}}, CURRENT_DATE) AND win_back_sent = FALSE"
                warehouse: "CHEWY_MARKETING_WH"
            - name: segment-customers
              type: call
              call: "databricks.segment-customers"
              with:
                customers: "{{get-lapsed.data}}"
                model: "win-back-segmentation-v2"
            - name: send-campaign
              type: call
              call: "mailchimp.send-campaign"
              with:
                list_id: "win-back-targets"
                template: "we-miss-you"
                segments: "{{segment-customers.segments}}"
            - name: log-campaign
              type: call
              call: "salesforce.create-campaign"
              with:
                name: "Win-Back {{inactive_days}}d - Batch"
                type: "Email"
                status: "Sent"
                members: "{{get-lapsed.count}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-lapsed
              method: POST
    - type: http
      namespace: databricks
      baseUri: "https://chewy.cloud.databricks.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: serving
          path: "/serving-endpoints/win-back-segmentation-v2/invocations"
          operations:
            - name: segment-customers
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: send-campaign
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST

Runs a customer churn prediction model in Databricks to identify at-risk Autoship subscribers and stores predictions in Snowflake.

naftiko: "0.5"
info:
  label: "Databricks Customer Churn Prediction Model"
  description: "Runs a customer churn prediction model in Databricks to identify at-risk Autoship subscribers and stores predictions in Snowflake."
  tags:
    - analytics
    - churn-prediction
    - databricks
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: churn-analytics
      port: 8080
      tools:
        - name: run-churn-model
          description: "Execute the Databricks churn prediction model and store results in Snowflake."
          inputParameters:
            - name: customer_segment
              in: body
              type: string
              description: "Customer segment (autoship_dog, autoship_cat, one_time, high_value)."
            - name: prediction_window_days
              in: body
              type: integer
              description: "Days ahead to predict churn."
          steps:
            - name: run-notebook
              type: call
              call: "databricks.run-notebook"
              with:
                notebook_path: "/Shared/churn_prediction_v3"
                parameters: "{\"segment\": \"{{customer_segment}}\", \"window\": {{prediction_window_days}}}"
            - name: load-predictions
              type: call
              call: "snowflake.run-query"
              with:
                query: "CALL load_churn_predictions('{{customer_segment}}')"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://chewy.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/runs/submit"
          operations:
            - name: run-notebook
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Datadog for Chewy.com platform health metrics including API response times, error rates, and cart service availability.

naftiko: "0.5"
info:
  label: "Datadog Platform Health Monitor"
  description: "Queries Datadog for Chewy.com platform health metrics including API response times, error rates, and cart service availability."
  tags:
    - devops
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: platform-monitoring
      port: 8080
      tools:
        - name: check-platform-health
          description: "Fetch platform health metrics from Datadog for Chewy's e-commerce services."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "Service name in Datadog."
          call: "datadog.query-metrics"
          with:
            query: "avg:trace.web.request.duration{service:{{service_name}}}.rollup(avg, 300)"
          outputParameters:
            - name: avg_latency
              type: number
              mapping: "$.series[0].pointlist[-1][1]"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query"
          operations:
            - name: query-metrics
              method: GET

Resolves delivery exceptions by checking ShipStation tracking, creating a replacement order in the OMS, notifying the customer via SMS, and logging in ServiceNow.

naftiko: "0.5"
info:
  label: "Delivery Exception Resolution Pipeline"
  description: "Resolves delivery exceptions by checking ShipStation tracking, creating a replacement order in the OMS, notifying the customer via SMS, and logging in ServiceNow."
  tags:
    - shipping
    - delivery
    - shipstation
    - twilio
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: delivery-exception
      port: 8080
      tools:
        - name: resolve-delivery-exception
          description: "Orchestrate delivery exception resolution across ShipStation, OMS, Twilio, and ServiceNow."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "Original order ID."
            - name: exception_type
              in: body
              type: string
              description: "Exception type (lost, damaged, wrong_address)."
          steps:
            - name: check-tracking
              type: call
              call: "shipstation.get-tracking"
              with:
                order_id: "{{order_id}}"
            - name: create-replacement
              type: call
              call: "oms.create-replacement-order"
              with:
                original_order_id: "{{order_id}}"
                reason: "{{exception_type}}"
            - name: notify-customer
              type: call
              call: "twilio.send-message"
              with:
                To: "{{check-tracking.customer_phone}}"
                Body: "We're sorry about your delivery issue. A replacement has been shipped (Order #{{create-replacement.new_order_id}}). Track at chewy.com/track."
                From: "+18886337569"
            - name: log-exception
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Delivery exception: {{order_id}} - {{exception_type}}"
                category: "shipping"
                assigned_group: "Shipping_Operations"
                description: "Original order: {{order_id}}. Exception: {{exception_type}}. Replacement: {{create-replacement.new_order_id}}. Carrier: {{check-tracking.carrier}}."
  consumes:
    - type: http
      namespace: shipstation
      baseUri: "https://ssapi.shipstation.com"
      authentication:
        type: basic
        username: "$secrets.shipstation_api_key"
        password: "$secrets.shipstation_api_secret"
      resources:
        - name: tracking
          path: "/shipments"
          operations:
            - name: get-tracking
              method: GET
    - type: http
      namespace: oms
      baseUri: "https://oms-api.chewy.com/v2"
      authentication:
        type: bearer
        token: "$secrets.oms_api_token"
      resources:
        - name: replacements
          path: "/orders/replacement"
          operations:
            - name: create-replacement-order
              method: POST
    - type: http
      namespace: twilio
      baseUri: "https://api.twilio.com/2010-04-01/Accounts/$secrets.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-message
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://chewy.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

Queries Dynatrace for performance anomalies affecting Chewy.com shopping experience.

naftiko: "0.5"
info:
  label: "Dynatrace E-Commerce Performance Monitor"
  description: "Queries Dynatrace for performance anomalies affecting Chewy.com shopping experience."
  tags:
    - monitoring
    - performance
    - dynatrace
capability:
  exposes:
    - type: mcp
      namespace: ecommerce-performance
      port: 8080
      tools:
        - name: get-performance-problems
          description: "Retrieve performance problems from Dynatrace."
          inputParameters:
            - name: time_range
              in: body
              type: string
              description: "Time range."
          call: "dynatrace.get-problems"
          with:
            relativeTime: "{{time_range}}"
            status: "OPEN"
          outputParameters:
            - name: problems
              type: array
              mapping: "$.result"
            - name: total_count
              type: integer
              mapping: "$.totalCount"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://chewy.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: problems
          path: "/problems"
          operations:
            - name: get-problems
              method: GET

Searches Elasticsearch for customer product reviews by product ID, rating, and keywords for content moderation and analytics.

naftiko: "0.5"
info:
  label: "Elasticsearch Product Review Search"
  description: "Searches Elasticsearch for customer product reviews by product ID, rating, and keywords for content moderation and analytics."
  tags:
    - reviews
    - search
    - elasticsearch
capability:
  exposes:
    - type: mcp
      namespace: review-search
      port: 8080
      tools:
        - name: search-reviews
          description: "Search product reviews in Elasticsearch."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "Product SKU."
            - name: min_rating
              in: body
              type: integer
              description: "Minimum star rating filter."
          call: "elasticsearch.search"
          with:
            index: "product-reviews"
            query: "{\"bool\":{\"must\":[{\"term\":{\"product_id\":\"{{product_id}}\"}},{\"range\":{\"rating\":{\"gte\":{{min_rating}}}}}]}}"
          outputParameters:
            - name: reviews
              type: array
              mapping: "$.hits.hits"
            - name: total
              type: integer
              mapping: "$.hits.total.value"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://search.chewy.com"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token"
      resources:
        - name: search
          path: "/{{index}}/_search"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: search
              method: POST

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

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Orchestrate new employee onboarding across Workday, ServiceNow, SharePoint, and Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD."
            - name: department
              in: body
              type: string
              description: "Department name."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Onboarding: {{get-employee.full_name}}"
                category: "onboarding"
                assigned_group: "IT_Provisioning"
                description: "New hire {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "chewy_onboarding"
                folder_path: "NewHires/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "{{department}}_team"
                text: "Welcome to Chewy, {{get-employee.first_name}}! IT ticket: {{create-ticket.number}}. Docs: {{provision-folder.url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://chewy.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Exports product design assets from Figma and uploads to S3 for the product content team.

naftiko: "0.5"
info:
  label: "Figma Pet Product Design Asset Exporter"
  description: "Exports product design assets from Figma and uploads to S3 for the product content team."
  tags:
    - design
    - product-content
    - figma
    - amazon-s3
capability:
  exposes:
    - type: mcp
      namespace: design-assets
      port: 8080
      tools:
        - name: export-design-assets
          description: "Export images from Figma and upload to S3."
          inputParameters:
            - name: file_key
              in: body
              type: string
              description: "Figma file key."
            - name: node_ids
              in: body
              type: string
              description: "Node IDs to export."
            - name: s3_prefix
              in: body
              type: string
              description: "S3 key prefix."
          steps:
            - name: get-images
              type: call
              call: "figma.get-images"
              with:
                file_key: "{{file_key}}"
                ids: "{{node_ids}}"
                format: "png"
                scale: 2
            - name: upload-to-s3
              type: call
              call: "s3.put-object"
              with:
                bucket: "chewy-design-assets"
                key: "{{s3_prefix}}/{{get-images.filename}}"
                body: "{{get-images.image_data}}"
  consumes:
    - type: http
      namespace: figma
      baseUri: "https://api.figma.com/v1"
      authentication:
        type: bearer
        token: "$secrets.figma_token"
      resources:
        - name: images
          path: "/images/{{file_key}}"
          inputParameters:
            - name: file_key
              in: path
          operations:
            - name: get-images
              method: GET
    - type: http
      namespace: s3
      baseUri: "https://chewy-design-assets.s3.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: objects
          path: "/{{key}}"
          inputParameters:
            - name: key
              in: path
          operations:
            - name: put-object
              method: PUT

Launches a flash sale by updating product prices in Elasticsearch, configuring promotions, sending marketing emails via MailChimp, and posting to social media via Instagram.

naftiko: "0.5"
info:
  label: "Flash Sale Launch Orchestrator"
  description: "Launches a flash sale by updating product prices in Elasticsearch, configuring promotions, sending marketing emails via MailChimp, and posting to social media via Instagram."
  tags:
    - marketing
    - promotions
    - elasticsearch
    - mailchimp
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: flash-sale
      port: 8080
      tools:
        - name: launch-flash-sale
          description: "Orchestrate flash sale launch across Elasticsearch, promotions, MailChimp, and Instagram."
          inputParameters:
            - name: sale_id
              in: body
              type: string
              description: "Flash sale identifier."
            - name: product_ids
              in: body
              type: string
              description: "Comma-separated product SKUs."
            - name: discount_pct
              in: body
              type: integer
              description: "Discount percentage."
          steps:
            - name: update-prices
              type: call
              call: "promotions.apply-sale-pricing"
              with:
                sale_id: "{{sale_id}}"
                products: "{{product_ids}}"
                discount: "{{discount_pct}}"
            - name: update-catalog
              type: call
              call: "elasticsearch.bulk-update"
              with:
                index: "chewy_products"
                products: "{{product_ids}}"
                sale_badge: true
            - name: send-email-blast
              type: call
              call: "mailchimp.send-campaign"
              with:
                list_id: "pet-parents-active"
                template: "flash-sale"
                subject: "Flash Sale: {{discount_pct}}% Off Select Items!"
            - name: post-social
              type: call
              call: "instagram.create-post"
              with:
                caption: "Flash Sale Alert! {{discount_pct}}% off select pet products. Shop now at Chewy.com! #ChewyDeals"
                image_url: "{{update-prices.banner_url}}"
  consumes:
    - type: http
      namespace: promotions
      baseUri: "https://promotions-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.promotions_api_token"
      resources:
        - name: sales
          path: "/flash-sales"
          operations:
            - name: apply-sale-pricing
              method: POST
    - type: http
      namespace: elasticsearch
      baseUri: "https://search.chewy.com"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token"
      resources:
        - name: bulk
          path: "/_bulk"
          operations:
            - name: bulk-update
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: send-campaign
              method: POST
    - type: http
      namespace: instagram
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: media
          path: "/$secrets.instagram_account_id/media"
          operations:
            - name: create-post
              method: POST

Processes fraud alerts by checking Stripe for suspicious transactions, running fraud scoring in Databricks, blocking accounts, and creating ServiceNow investigation cases.

naftiko: "0.5"
info:
  label: "Fraud Detection Alert Pipeline"
  description: "Processes fraud alerts by checking Stripe for suspicious transactions, running fraud scoring in Databricks, blocking accounts, and creating ServiceNow investigation cases."
  tags:
    - fraud-detection
    - security
    - stripe
    - databricks
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: fraud-detection
      port: 8080
      tools:
        - name: process-fraud-alert
          description: "Orchestrate fraud alert processing across Stripe, Databricks, and ServiceNow."
          inputParameters:
            - name: transaction_id
              in: body
              type: string
              description: "Suspicious transaction ID."
            - name: customer_id
              in: body
              type: string
              description: "Customer account ID."
          steps:
            - name: get-transaction
              type: call
              call: "stripe.get-charge"
              with:
                charge_id: "{{transaction_id}}"
            - name: score-fraud
              type: call
              call: "databricks.score-fraud"
              with:
                transaction: "{{get-transaction}}"
                model: "fraud-detection-v3"
            - name: block-account
              type: call
              call: "accounts.suspend-account"
              with:
                customer_id: "{{customer_id}}"
                reason: "fraud_investigation"
                fraud_score: "{{score-fraud.score}}"
            - name: create-case
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Fraud alert: Customer {{customer_id}} - Score {{score-fraud.score}}"
                category: "fraud_investigation"
                assigned_group: "Fraud_Operations"
                description: "Transaction: {{transaction_id}}\nAmount: {{get-transaction.amount}}\nFraud score: {{score-fraud.score}}\nIndicators: {{score-fraud.indicators}}"
  consumes:
    - 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: databricks
      baseUri: "https://chewy.cloud.databricks.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: serving
          path: "/serving-endpoints/fraud-detection-v3/invocations"
          operations:
            - name: score-fraud
              method: POST
    - type: http
      namespace: accounts
      baseUri: "https://accounts-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.accounts_api_token"
      resources:
        - name: suspension
          path: "/customers/{{customer_id}}/suspend"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: suspend-account
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://chewy.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

Queries Snowflake for fulfillment center KPIs including pick rate, pack accuracy, and ship-on-time percentage, then pushes to Power BI.

naftiko: "0.5"
info:
  label: "Fulfillment Center Performance Dashboard"
  description: "Queries Snowflake for fulfillment center KPIs including pick rate, pack accuracy, and ship-on-time percentage, then pushes to Power BI."
  tags:
    - operations
    - fulfillment
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: fulfillment-analytics
      port: 8080
      tools:
        - name: refresh-fc-dashboard
          description: "Pull FC performance data from Snowflake and refresh the Power BI dashboard."
          inputParameters:
            - name: fc_code
              in: body
              type: string
              description: "Fulfillment center code."
            - name: date
              in: body
              type: string
              description: "Report date."
            - name: dataset_id
              in: body
              type: string
              description: "Power BI dataset ID."
          steps:
            - name: fetch-kpis
              type: call
              call: "snowflake.run-query"
              with:
                query: "SELECT fc_code, pick_rate, pack_accuracy_pct, ship_on_time_pct, units_shipped, orders_processed FROM fc_daily_kpis WHERE fc_code='{{fc_code}}' AND report_date='{{date}}'"
            - name: refresh-dashboard
              type: call
              call: "powerbi.trigger-refresh"
              with:
                dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: refreshes
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST

Uses Google Gemini to generate product descriptions for new pet products in the catalog.

naftiko: "0.5"
info:
  label: "Gemini AI Product Description Generator"
  description: "Uses Google Gemini to generate product descriptions for new pet products in the catalog."
  tags:
    - content
    - ai
    - gemini
capability:
  exposes:
    - type: mcp
      namespace: content-generation
      port: 8080
      tools:
        - name: generate-product-description
          description: "Generate a product description using Gemini AI."
          inputParameters:
            - name: product_name
              in: body
              type: string
              description: "Product name."
            - name: pet_type
              in: body
              type: string
              description: "Pet type."
            - name: key_features
              in: body
              type: string
              description: "Comma-separated key features."
          call: "gemini.generate-content"
          with:
            prompt: "Write a compelling e-commerce product description for {{product_name}}, a {{pet_type}} product. Key features: {{key_features}}. Keep it under 200 words, SEO-friendly."
          outputParameters:
            - name: description
              type: string
              mapping: "$.candidates[0].content.parts[0].text"
  consumes:
    - type: http
      namespace: gemini
      baseUri: "https://generativelanguage.googleapis.com/v1beta"
      authentication:
        type: apiKey
        key: "$secrets.gemini_api_key"
      resources:
        - name: content
          path: "/models/gemini-pro:generateContent"
          operations:
            - name: generate-content
              method: POST

Triggers GitHub Actions deployment workflows for Chewy's e-commerce platform and notifies the release team.

naftiko: "0.5"
info:
  label: "GitHub Actions Deployment Pipeline"
  description: "Triggers GitHub Actions deployment workflows for Chewy's e-commerce platform and notifies the release team."
  tags:
    - devops
    - deployment
    - github-actions
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: platform-deployment
      port: 8080
      tools:
        - name: trigger-deployment
          description: "Trigger a GitHub Actions deployment and notify the team."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "Repository (org/repo)."
            - name: workflow_id
              in: body
              type: string
              description: "Workflow ID."
            - name: environment
              in: body
              type: string
              description: "Target environment."
          steps:
            - name: dispatch-workflow
              type: call
              call: "github.dispatch-workflow"
              with:
                owner_repo: "{{repo}}"
                workflow_id: "{{workflow_id}}"
                ref: "main"
                inputs: "{\"environment\": \"{{environment}}\"}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "releases"
                text: "Deployment triggered: {{repo}} to {{environment}}."
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-dispatches
          path: "/repos/{{owner_repo}}/actions/workflows/{{workflow_id}}/dispatches"
          inputParameters:
            - name: owner_repo
              in: path
            - name: workflow_id
              in: path
          operations:
            - name: dispatch-workflow
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves e-commerce conversion funnel metrics from Google Analytics for Chewy.com including cart abandonment and checkout completion rates.

naftiko: "0.5"
info:
  label: "Google Analytics E-Commerce Funnel Report"
  description: "Retrieves e-commerce conversion funnel metrics from Google Analytics for Chewy.com including cart abandonment and checkout completion rates."
  tags:
    - e-commerce
    - analytics
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: ecommerce-analytics
      port: 8080
      tools:
        - name: get-funnel-metrics
          description: "Fetch e-commerce conversion funnel data from Google Analytics."
          inputParameters:
            - name: start_date
              in: body
              type: string
              description: "Start date."
            - name: end_date
              in: body
              type: string
              description: "End date."
          call: "google-analytics.get-report"
          with:
            view_id: "chewy_web_property"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
            metrics: "sessions,transactions,transactionRevenue"
            dimensions: "channelGrouping"
          outputParameters:
            - name: data
              type: array
              mapping: "$.reports[0].data.rows"
            - name: totals
              type: object
              mapping: "$.reports[0].data.totals[0]"
  consumes:
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsreporting.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/reports:batchGet"
          operations:
            - name: get-report
              method: POST

Exports weekly e-commerce sales metrics from Snowflake to Google Sheets for executive review.

naftiko: "0.5"
info:
  label: "Google Sheets Weekly Sales Exporter"
  description: "Exports weekly e-commerce sales metrics from Snowflake to Google Sheets for executive review."
  tags:
    - reporting
    - sales
    - snowflake
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: sales-reporting
      port: 8080
      tools:
        - name: export-weekly-sales
          description: "Query Snowflake for weekly sales and write to Google Sheets."
          inputParameters:
            - name: week_ending
              in: body
              type: string
              description: "Week ending date."
            - name: spreadsheet_id
              in: body
              type: string
              description: "Google Sheets ID."
          steps:
            - name: fetch-sales
              type: call
              call: "snowflake.run-query"
              with:
                query: "SELECT pet_category, SUM(revenue) as revenue, COUNT(DISTINCT order_id) as orders, SUM(CASE WHEN is_autoship THEN revenue ELSE 0 END) as autoship_revenue FROM weekly_sales WHERE week_ending='{{week_ending}}' GROUP BY pet_category"
            - name: write-sheet
              type: call
              call: "google-sheets.update-values"
              with:
                spreadsheet_id: "{{spreadsheet_id}}"
                range: "WeeklySales!A1"
                values: "{{fetch-sales.results}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: google-sheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: update-values
              method: PUT

Manages Google Tag Manager tags for Chewy.com event tracking including add-to-cart, checkout, and Autoship signup events.

naftiko: "0.5"
info:
  label: "Google Tag Manager Event Tracker"
  description: "Manages Google Tag Manager tags for Chewy.com event tracking including add-to-cart, checkout, and Autoship signup events."
  tags:
    - digital
    - analytics
    - google-tag-manager
capability:
  exposes:
    - type: mcp
      namespace: tag-management
      port: 8080
      tools:
        - name: get-container-tags
          description: "List tags in a GTM container for Chewy.com."
          inputParameters:
            - name: container_id
              in: body
              type: string
              description: "GTM container ID."
          call: "gtm.list-tags"
          with:
            container_id: "{{container_id}}"
          outputParameters:
            - name: tags
              type: array
              mapping: "$.tag"
            - name: total
              type: integer
              mapping: "$.total"
  consumes:
    - type: http
      namespace: gtm
      baseUri: "https://www.googleapis.com/tagmanager/v2"
      authentication:
        type: bearer
        token: "$secrets.google_tag_manager_token"
      resources:
        - name: tags
          path: "/accounts/{{account_id}}/containers/{{container_id}}/workspaces/default/tags"
          inputParameters:
            - name: container_id
              in: path
          operations:
            - name: list-tags
              method: GET

Retrieves warehouse operations dashboard snapshots from Grafana showing order volume, processing times, and fulfillment SLA compliance.

naftiko: "0.5"
info:
  label: "Grafana Warehouse Dashboard Snapshot"
  description: "Retrieves warehouse operations dashboard snapshots from Grafana showing order volume, processing times, and fulfillment SLA compliance."
  tags:
    - warehousing
    - monitoring
    - grafana
capability:
  exposes:
    - type: mcp
      namespace: warehouse-monitoring
      port: 8080
      tools:
        - name: get-warehouse-dashboard
          description: "Fetch a Grafana warehouse operations dashboard snapshot."
          inputParameters:
            - name: dashboard_uid
              in: body
              type: string
              description: "Grafana dashboard UID."
          call: "grafana.get-dashboard"
          with:
            uid: "{{dashboard_uid}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.dashboard.title"
            - name: panels
              type: array
              mapping: "$.dashboard.panels"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://grafana.chewy.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key"
      resources:
        - name: dashboards
          path: "/dashboards/uid/{{uid}}"
          inputParameters:
            - name: uid
              in: path
          operations:
            - name: get-dashboard
              method: GET

Checks secret rotation status and lease expiration in HashiCorp Vault for Chewy platform service credentials.

naftiko: "0.5"
info:
  label: "HashiCorp Vault Secret Status"
  description: "Checks secret rotation status and lease expiration in HashiCorp Vault for Chewy platform service credentials."
  tags:
    - security
    - secrets-management
    - hashicorp-vault
capability:
  exposes:
    - type: mcp
      namespace: secrets-management
      port: 8080
      tools:
        - name: check-secret-status
          description: "Check a secret's lease and rotation status in Vault."
          inputParameters:
            - name: secret_path
              in: body
              type: string
              description: "Vault secret path."
          call: "vault.read-secret-metadata"
          with:
            path: "{{secret_path}}"
          outputParameters:
            - name: version
              type: integer
              mapping: "$.data.current_version"
            - name: created_time
              type: string
              mapping: "$.data.versions.*.created_time"
  consumes:
    - type: http
      namespace: vault
      baseUri: "https://vault.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.vault_token"
      resources:
        - name: metadata
          path: "/{{path}}/metadata"
          inputParameters:
            - name: path
              in: path
          operations:
            - name: read-secret-metadata
              method: GET

Retrieves customer engagement metrics from HubSpot for pet parent marketing campaigns.

naftiko: "0.5"
info:
  label: "HubSpot Pet Parent Engagement Tracker"
  description: "Retrieves customer engagement metrics from HubSpot for pet parent marketing campaigns."
  tags:
    - marketing
    - engagement
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: marketing-engagement
      port: 8080
      tools:
        - name: get-campaign-engagement
          description: "Fetch campaign engagement data from HubSpot."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "HubSpot campaign ID."
          call: "hubspot.get-campaign"
          with:
            campaign_id: "{{campaign_id}}"
          outputParameters:
            - name: opens
              type: integer
              mapping: "$.counters.open"
            - name: clicks
              type: integer
              mapping: "$.counters.click"
            - name: delivered
              type: integer
              mapping: "$.counters.delivered"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: campaigns
          path: "/email/public/v1/campaigns/{{campaign_id}}"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign
              method: GET

Manages job postings on Indeed for Chewy's fulfillment center and customer service roles.

naftiko: "0.5"
info:
  label: "Indeed Job Posting Manager"
  description: "Manages job postings on Indeed for Chewy's fulfillment center and customer service roles."
  tags:
    - hr
    - recruiting
    - indeed
capability:
  exposes:
    - type: mcp
      namespace: job-postings
      port: 8080
      tools:
        - name: create-job-posting
          description: "Create a job posting on Indeed."
          inputParameters:
            - name: title
              in: body
              type: string
              description: "Job title."
            - name: location
              in: body
              type: string
              description: "Job location."
            - name: description
              in: body
              type: string
              description: "Job description."
            - name: job_type
              in: body
              type: string
              description: "Job type (full_time, part_time, seasonal)."
          call: "indeed.create-posting"
          with:
            title: "{{title}}"
            location: "{{location}}"
            description: "{{description}}"
            type: "{{job_type}}"
            company: "Chewy"
          outputParameters:
            - name: posting_id
              type: string
              mapping: "$.id"
            - name: url
              type: string
              mapping: "$.url"
  consumes:
    - type: http
      namespace: indeed
      baseUri: "https://apis.indeed.com/v2"
      authentication:
        type: bearer
        token: "$secrets.indeed_token"
      resources:
        - name: postings
          path: "/jobs"
          operations:
            - name: create-posting
              method: POST

On low inventory detection, queries SAP HANA for stock levels, creates a Coupa purchase order, notifies the vendor via email, and updates the dashboard in Power BI.

naftiko: "0.5"
info:
  label: "Inventory Restock Alert Orchestrator"
  description: "On low inventory detection, queries SAP HANA for stock levels, creates a Coupa purchase order, notifies the vendor via email, and updates the dashboard in Power BI."
  tags:
    - inventory
    - procurement
    - sap-hana
    - coupa
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: inventory-restock
      port: 8080
      tools:
        - name: process-restock
          description: "Orchestrate inventory restock across SAP HANA, Coupa, email, and Power BI."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "Product SKU."
            - name: warehouse_id
              in: body
              type: string
              description: "Warehouse identifier."
          steps:
            - name: check-stock
              type: call
              call: "sap-hana.get-inventory"
              with:
                product_id: "{{product_id}}"
                warehouse_id: "{{warehouse_id}}"
            - name: create-po
              type: call
              call: "coupa.create-purchase-order"
              with:
                supplier_id: "{{check-stock.preferred_supplier}}"
                item: "{{product_id}}"
                quantity: "{{check-stock.reorder_quantity}}"
            - name: notify-vendor
              type: call
              call: "ses.send-email"
              with:
                to: "{{check-stock.supplier_email}}"
                subject: "Chewy PO: {{create-po.po_number}} - {{product_id}}"
                body: "Please fulfill PO {{create-po.po_number}} for {{check-stock.reorder_quantity}} units of {{product_id}}."
            - name: refresh-dashboard
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "inventory-levels"
  consumes:
    - type: http
      namespace: sap-hana
      baseUri: "https://chewy-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: inventory
          path: "/inventory"
          operations:
            - name: get-inventory
              method: GET
    - type: http
      namespace: coupa
      baseUri: "https://chewy.coupahost.com/api"
      authentication:
        type: bearer
        token: "$secrets.coupa_api_token"
      resources:
        - name: purchase-orders
          path: "/purchase_orders"
          operations:
            - name: create-purchase-order
              method: POST
    - type: http
      namespace: ses
      baseUri: "https://email.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: emails
          path: "/v2/email/outbound-emails"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Retrieves current sprint status from Jira for Chewy's platform engineering team.

naftiko: "0.5"
info:
  label: "Jira Engineering Sprint Tracker"
  description: "Retrieves current sprint status from Jira for Chewy's platform engineering team."
  tags:
    - development
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: dev-tracking
      port: 8080
      tools:
        - name: get-sprint-progress
          description: "Fetch current sprint progress from Jira."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "Jira board ID."
          call: "jira.get-active-sprint"
          with:
            board_id: "{{board_id}}"
          outputParameters:
            - name: sprint_name
              type: string
              mapping: "$.values[0].name"
            - name: start_date
              type: string
              mapping: "$.values[0].startDate"
            - name: end_date
              type: string
              mapping: "$.values[0].endDate"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://chewy.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-active-sprint
              method: GET

Monitors Apache Kafka consumer lag and throughput for Chewy's order processing event streams.

naftiko: "0.5"
info:
  label: "Kafka Order Event Stream Monitor"
  description: "Monitors Apache Kafka consumer lag and throughput for Chewy's order processing event streams."
  tags:
    - streaming
    - kafka
    - order-processing
capability:
  exposes:
    - type: mcp
      namespace: order-streaming
      port: 8080
      tools:
        - name: get-order-stream-health
          description: "Check Kafka topic health for order event streams."
          inputParameters:
            - name: topic_name
              in: body
              type: string
              description: "Kafka topic name."
          call: "kafka.get-consumer-lag"
          with:
            topic: "{{topic_name}}"
          outputParameters:
            - name: total_lag
              type: integer
              mapping: "$.total_lag"
            - name: throughput
              type: number
              mapping: "$.messages_per_second"
  consumes:
    - type: http
      namespace: kafka
      baseUri: "https://kafka-rest.chewy.com/v3"
      authentication:
        type: bearer
        token: "$secrets.kafka_rest_token"
      resources:
        - name: consumer-groups
          path: "/clusters/chewy-prod/consumer-groups/order-processors/lags"
          operations:
            - name: get-consumer-lag
              method: GET

Manages rate limiting configurations on Kong API Gateway for Chewy's public API endpoints.

naftiko: "0.5"
info:
  label: "Kong API Gateway Rate Limit Manager"
  description: "Manages rate limiting configurations on Kong API Gateway for Chewy's public API endpoints."
  tags:
    - infrastructure
    - api-gateway
    - kong
capability:
  exposes:
    - type: mcp
      namespace: api-gateway
      port: 8080
      tools:
        - name: get-rate-limits
          description: "Retrieve current rate limit configurations from Kong."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "Kong service name."
          call: "kong.get-plugins"
          with:
            service_name: "{{service_name}}"
            plugin_name: "rate-limiting"
          outputParameters:
            - name: config
              type: object
              mapping: "$.data[0].config"
            - name: enabled
              type: boolean
              mapping: "$.data[0].enabled"
  consumes:
    - type: http
      namespace: kong
      baseUri: "https://kong-admin.chewy.com"
      authentication:
        type: apiKey
        key: "$secrets.kong_admin_key"
      resources:
        - name: plugins
          path: "/services/{{service_name}}/plugins"
          inputParameters:
            - name: service_name
              in: path
          operations:
            - name: get-plugins
              method: GET

Publishes employer brand and pet industry thought leadership content on the Chewy LinkedIn company page.

naftiko: "0.5"
info:
  label: "LinkedIn Pet Brand Content Publisher"
  description: "Publishes employer brand and pet industry thought leadership content on the Chewy LinkedIn company page."
  tags:
    - marketing
    - employer-brand
    - linkedin
capability:
  exposes:
    - type: mcp
      namespace: brand-content
      port: 8080
      tools:
        - name: publish-linkedin-post
          description: "Post content to the Chewy LinkedIn page."
          inputParameters:
            - name: text
              in: body
              type: string
              description: "Post content."
            - name: media_url
              in: body
              type: string
              description: "Optional media URL."
          call: "linkedin.create-post"
          with:
            author: "urn:li:organization:{{chewy_org_id}}"
            text: "{{text}}"
            media_url: "{{media_url}}"
          outputParameters:
            - name: post_id
              type: string
              mapping: "$.id"
  consumes:
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: ugcPosts
          path: "/ugcPosts"
          operations:
            - name: create-post
              method: POST

Coordinates live nutrition consultations between Chewy veterinary nutritionists and pet parents, including scheduling, video session setup, and follow-up product recommendations.

naftiko: "0.5"
info:
  label: "Live Pet Nutrition Consultation Orchestrator"
  description: "Coordinates live nutrition consultations between Chewy veterinary nutritionists and pet parents, including scheduling, video session setup, and follow-up product recommendations."
  tags:
    - pet-nutrition
    - telehealth
    - consultation
capability:
  exposes:
    - type: mcp
      namespace: nutrition-consultation
      port: 8080
      tools:
        - name: schedule-consultation
          description: "Schedule a live pet nutrition consultation session."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Chewy customer identifier."
            - name: pet_profile_id
              in: body
              type: string
              description: "The pet profile identifier with dietary history."
            - name: consultation_type
              in: body
              type: string
              description: "Type of consultation such as weight-management or allergy-diet."
          call: "telehealth-api.create-session"
          with:
            customer: "{{customer_id}}"
            pet: "{{pet_profile_id}}"
            type: "{{consultation_type}}"
          outputParameters:
            - name: session_id
              type: string
              mapping: "$.session.id"
            - name: scheduled_time
              type: string
              mapping: "$.session.scheduledAt"
            - name: nutritionist_name
              type: string
              mapping: "$.session.assignedNutritionist"
  consumes:
    - type: http
      namespace: telehealth-api
      baseUri: "https://api.chewy.com/telehealth/v1"
      authentication:
        type: bearer
        token: "$secrets.chewy_telehealth_token"
      resources:
        - name: sessions
          path: "/consultations/nutrition"
          operations:
            - name: create-session
              method: POST

Creates targeted email campaigns in MailChimp for pet parents based on pet type, purchase history, and Autoship status from Salesforce.

naftiko: "0.5"
info:
  label: "MailChimp Pet Parent Email Campaign"
  description: "Creates targeted email campaigns in MailChimp for pet parents based on pet type, purchase history, and Autoship status from Salesforce."
  tags:
    - marketing
    - email
    - mailchimp
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: email-marketing
      port: 8080
      tools:
        - name: create-pet-campaign
          description: "Build a targeted email campaign using Salesforce segments and MailChimp."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "Campaign name."
            - name: pet_type
              in: body
              type: string
              description: "Target pet type."
            - name: template_id
              in: body
              type: string
              description: "MailChimp template."
            - name: subject_line
              in: body
              type: string
              description: "Email subject."
          steps:
            - name: get-segment
              type: call
              call: "salesforce.query"
              with:
                q: "SELECT Email, FirstName, Pet_Type__c FROM Contact WHERE Pet_Type__c = '{{pet_type}}' AND Has_Autoship__c = true AND Email != null"
            - name: create-campaign
              type: call
              call: "mailchimp.create-campaign"
              with:
                type: "regular"
                recipients_list_id: "chewy_pet_parents"
                subject_line: "{{subject_line}}"
                template_id: "{{template_id}}"
                from_name: "Chewy"
            - name: send-campaign
              type: call
              call: "mailchimp.send-campaign"
              with:
                campaign_id: "{{create-campaign.id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          operations:
            - name: query
              method: GET
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: create-campaign
              method: POST
        - name: campaign-actions
          path: "/campaigns/{{campaign_id}}/actions/send"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: send-campaign
              method: POST

Reviews marketplace seller performance by querying Snowflake for metrics, evaluating quality scores, updating seller status in Salesforce, and sending performance reports via email.

naftiko: "0.5"
info:
  label: "Marketplace Seller Performance Review Pipeline"
  description: "Reviews marketplace seller performance by querying Snowflake for metrics, evaluating quality scores, updating seller status in Salesforce, and sending performance reports via email."
  tags:
    - marketplace
    - seller-management
    - snowflake
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: seller-performance
      port: 8080
      tools:
        - name: review-seller-performance
          description: "Orchestrate seller performance review across Snowflake, scoring, Salesforce, and email."
          inputParameters:
            - name: seller_id
              in: body
              type: string
              description: "Marketplace seller ID."
            - name: review_period
              in: body
              type: string
              description: "Review period (e.g., 2026-Q1)."
          steps:
            - name: get-metrics
              type: call
              call: "snowflake.query-seller-metrics"
              with:
                statement: "SELECT * FROM SELLER_METRICS WHERE seller_id = '{{seller_id}}' AND period = '{{review_period}}'"
                warehouse: "CHEWY_MARKETPLACE_WH"
            - name: calculate-score
              type: call
              call: "scoring.evaluate-seller"
              with:
                metrics: "{{get-metrics.data}}"
            - name: update-status
              type: call
              call: "salesforce.update-seller"
              with:
                seller_id: "{{seller_id}}"
                performance_score: "{{calculate-score.score}}"
                tier: "{{calculate-score.tier}}"
            - name: send-report
              type: call
              call: "ses.send-email"
              with:
                to: "{{get-metrics.seller_email}}"
                subject: "Chewy Marketplace: Your {{review_period}} Performance Report"
                body: "Your performance score: {{calculate-score.score}}. Tier: {{calculate-score.tier}}. Full report available in Seller Portal."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-seller-metrics
              method: POST
    - type: http
      namespace: scoring
      baseUri: "https://marketplace-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.marketplace_api_token"
      resources:
        - name: scoring
          path: "/seller-scoring"
          operations:
            - name: evaluate-seller
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: sellers
          path: "/sobjects/Seller__c/{{seller_id}}"
          inputParameters:
            - name: seller_id
              in: path
          operations:
            - name: update-seller
              method: PATCH
    - type: http
      namespace: ses
      baseUri: "https://email.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: emails
          path: "/v2/email/outbound-emails"
          operations:
            - name: send-email
              method: POST

Queries MongoDB for Chewy customer profiles including pet information, preferences, order history summary, and loyalty tier.

naftiko: "0.5"
info:
  label: "MongoDB Customer Profile Lookup"
  description: "Queries MongoDB for Chewy customer profiles including pet information, preferences, order history summary, and loyalty tier."
  tags:
    - customer-data
    - profiles
    - mongodb
capability:
  exposes:
    - type: mcp
      namespace: customer-profiles
      port: 8080
      tools:
        - name: get-customer-profile
          description: "Look up a customer profile from MongoDB."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Chewy customer ID."
          call: "mongodb.find-one"
          with:
            collection: "customer_profiles"
            filter: "{\"customer_id\": \"{{customer_id}}\"}"
          outputParameters:
            - name: pets
              type: array
              mapping: "$.pets"
            - name: loyalty_tier
              type: string
              mapping: "$.loyalty_tier"
            - name: lifetime_value
              type: number
              mapping: "$.lifetime_value"
  consumes:
    - type: http
      namespace: mongodb
      baseUri: "https://data.mongodb-api.chewy.com/app/data-chewy/endpoint/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mongodb_api_key"
      resources:
        - name: find
          path: "/action/findOne"
          operations:
            - name: find-one
              method: POST

Launches a new pet product by adding to Elasticsearch catalog, creating SAP HANA inventory records, publishing marketing content via MailChimp, and posting to Instagram.

naftiko: "0.5"
info:
  label: "New Product Launch Orchestrator"
  description: "Launches a new pet product by adding to Elasticsearch catalog, creating SAP HANA inventory records, publishing marketing content via MailChimp, and posting to Instagram."
  tags:
    - product-launch
    - catalog
    - elasticsearch
    - sap-hana
    - mailchimp
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: product-launch
      port: 8080
      tools:
        - name: launch-product
          description: "Orchestrate new product launch across Elasticsearch, SAP HANA, MailChimp, and Instagram."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "New product SKU."
            - name: product_name
              in: body
              type: string
              description: "Product display name."
            - name: category
              in: body
              type: string
              description: "Product category."
            - name: price
              in: body
              type: number
              description: "Retail price."
          steps:
            - name: add-to-catalog
              type: call
              call: "elasticsearch.index-product"
              with:
                index: "chewy_products"
                body: "{\"product_id\":\"{{product_id}}\",\"title\":\"{{product_name}}\",\"category\":\"{{category}}\",\"price\":{{price}},\"status\":\"active\"}"
            - name: create-inventory
              type: call
              call: "sap-hana.create-material"
              with:
                material_id: "{{product_id}}"
                description: "{{product_name}}"
                category: "{{category}}"
            - name: send-announcement
              type: call
              call: "mailchimp.send-campaign"
              with:
                list_id: "pet-parents-opted-in"
                template: "new-product"
                subject: "New at Chewy: {{product_name}}"
            - name: social-post
              type: call
              call: "instagram.create-post"
              with:
                caption: "New arrival! {{product_name}} is now available on Chewy. Shop now! #NewAtChewy #PetLovers"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://search.chewy.com"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token"
      resources:
        - name: products
          path: "/{{index}}/_doc"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: index-product
              method: POST
    - type: http
      namespace: sap-hana
      baseUri: "https://chewy-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: materials
          path: "/materials"
          operations:
            - name: create-material
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: send-campaign
              method: POST
    - type: http
      namespace: instagram
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: media
          path: "/$secrets.instagram_account_id/media"
          operations:
            - name: create-post
              method: POST

Retrieves application performance metrics from New Relic for Chewy's web and mobile applications.

naftiko: "0.5"
info:
  label: "New Relic Application Performance Monitor"
  description: "Retrieves application performance metrics from New Relic for Chewy's web and mobile applications."
  tags:
    - monitoring
    - devops
    - new-relic
capability:
  exposes:
    - type: mcp
      namespace: app-health
      port: 8080
      tools:
        - name: get-app-health
          description: "Fetch application health metrics from New Relic."
          inputParameters:
            - name: app_name
              in: body
              type: string
              description: "New Relic application name."
          call: "newrelic.get-app-metrics"
          with:
            app_name: "{{app_name}}"
          outputParameters:
            - name: error_rate
              type: number
              mapping: "$.application.application_summary.error_rate"
            - name: response_time
              type: number
              mapping: "$.application.application_summary.response_time"
            - name: throughput
              type: number
              mapping: "$.application.application_summary.throughput"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apiKey
        key: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications.json"
          operations:
            - name: get-app-metrics
              method: GET

Coordinates new fulfillment center launch by verifying network in SolarWinds, staffing in Workday, equipment in ServiceNow, and publishing go-live announcement to Microsoft Teams.

naftiko: "0.5"
info:
  label: "New Warehouse Launch Orchestrator"
  description: "Coordinates new fulfillment center launch by verifying network in SolarWinds, staffing in Workday, equipment in ServiceNow, and publishing go-live announcement to Microsoft Teams."
  tags:
    - fulfillment
    - launch
    - solarwinds
    - workday
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: warehouse-launch
      port: 8080
      tools:
        - name: verify-launch-readiness
          description: "Orchestrate warehouse launch readiness across SolarWinds, Workday, ServiceNow, and Teams."
          inputParameters:
            - name: warehouse_id
              in: body
              type: string
              description: "New fulfillment center ID."
            - name: launch_date
              in: body
              type: string
              description: "Planned launch date."
          steps:
            - name: verify-network
              type: call
              call: "solarwinds.check-site"
              with:
                site_id: "fc-{{warehouse_id}}"
            - name: verify-staffing
              type: call
              call: "workday.get-site-headcount"
              with:
                location: "{{warehouse_id}}"
            - name: verify-equipment
              type: call
              call: "servicenow.get-assets"
              with:
                location: "{{warehouse_id}}"
            - name: announce-launch
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "fulfillment-ops"
                channel: "announcements"
                text: "FC {{warehouse_id}} launch readiness: Network={{verify-network.status}}, Staff={{verify-staffing.headcount}}/{{verify-staffing.target}}, Equipment={{verify-equipment.deployed}}/{{verify-equipment.required}}. Launch: {{launch_date}}."
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://solarwinds.chewy.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.solarwinds_token"
      resources:
        - name: sites
          path: "/sites/{{site_id}}/health"
          inputParameters:
            - name: site_id
              in: path
          operations:
            - name: check-site
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: headcount
          path: "/workers/headcount"
          operations:
            - name: get-site-headcount
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://chewy.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: assets
          path: "/table/alm_hardware"
          operations:
            - name: get-assets
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST

Checks employee authentication status and application access in Okta for Chewy internal systems.

naftiko: "0.5"
info:
  label: "Okta Employee Access Status"
  description: "Checks employee authentication status and application access in Okta for Chewy internal systems."
  tags:
    - identity
    - authentication
    - okta
capability:
  exposes:
    - type: mcp
      namespace: identity-management
      port: 8080
      tools:
        - name: get-user-status
          description: "Check an employee's authentication status in Okta."
          inputParameters:
            - name: user_email
              in: body
              type: string
              description: "Employee email address."
          call: "okta.get-user"
          with:
            login: "{{user_email}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: last_login
              type: string
              mapping: "$.lastLogin"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://chewy.okta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.okta_api_token"
      resources:
        - name: users
          path: "/users/{{login}}"
          inputParameters:
            - name: login
              in: path
          operations:
            - name: get-user
              method: GET

Processes product returns by looking up the order in the OMS, initiating a Stripe refund, updating inventory in SAP HANA, and creating a Zendesk resolution ticket.

naftiko: "0.5"
info:
  label: "Order Return Processing Orchestrator"
  description: "Processes product returns by looking up the order in the OMS, initiating a Stripe refund, updating inventory in SAP HANA, and creating a Zendesk resolution ticket."
  tags:
    - returns
    - e-commerce
    - stripe
    - sap-hana
    - zendesk
capability:
  exposes:
    - type: mcp
      namespace: return-processing
      port: 8080
      tools:
        - name: process-return
          description: "Orchestrate return processing across OMS, Stripe, SAP HANA, and Zendesk."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "Original order ID."
            - name: return_reason
              in: body
              type: string
              description: "Reason for return."
            - name: items
              in: body
              type: string
              description: "Comma-separated SKUs to return."
          steps:
            - name: get-order
              type: call
              call: "oms.get-order"
              with:
                order_id: "{{order_id}}"
            - name: issue-refund
              type: call
              call: "stripe.create-refund"
              with:
                charge_id: "{{get-order.charge_id}}"
                amount: "{{get-order.return_amount}}"
            - name: update-inventory
              type: call
              call: "sap-hana.update-stock"
              with:
                items: "{{items}}"
                action: "return_to_stock"
            - name: create-ticket
              type: call
              call: "zendesk.create-ticket"
              with:
                subject: "Return processed: Order {{order_id}}"
                description: "Return for order {{order_id}}. Reason: {{return_reason}}. Refund: ${{issue-refund.amount}}. Items: {{items}}."
                requester_email: "{{get-order.customer_email}}"
  consumes:
    - type: http
      namespace: oms
      baseUri: "https://oms-api.chewy.com/v2"
      authentication:
        type: bearer
        token: "$secrets.oms_api_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: refunds
          path: "/refunds"
          operations:
            - name: create-refund
              method: POST
    - type: http
      namespace: sap-hana
      baseUri: "https://chewy-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: inventory
          path: "/inventory/update"
          operations:
            - name: update-stock
              method: POST
    - type: http
      namespace: zendesk
      baseUri: "https://chewy.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets"
          operations:
            - name: create-ticket
              method: POST

Retrieves the current on-call schedule from PagerDuty for Chewy e-commerce platform engineering teams.

naftiko: "0.5"
info:
  label: "PagerDuty On-Call Schedule Lookup"
  description: "Retrieves the current on-call schedule from PagerDuty for Chewy e-commerce platform engineering teams."
  tags:
    - incident-management
    - on-call
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: oncall-management
      port: 8080
      tools:
        - name: get-oncall
          description: "Fetch current on-call engineers from PagerDuty."
          inputParameters:
            - name: schedule_id
              in: body
              type: string
              description: "PagerDuty schedule ID."
          call: "pagerduty.get-oncall"
          with:
            schedule_ids: "{{schedule_id}}"
          outputParameters:
            - name: oncall_user
              type: string
              mapping: "$.oncalls[0].user.summary"
            - name: escalation_level
              type: integer
              mapping: "$.oncalls[0].escalation_level"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: oncalls
          path: "/oncalls"
          operations:
            - name: get-oncall
              method: GET

Retrieves firewall rules from Palo Alto protecting Chewy's e-commerce payment processing infrastructure.

naftiko: "0.5"
info:
  label: "Palo Alto Networks E-Commerce Security Audit"
  description: "Retrieves firewall rules from Palo Alto protecting Chewy's e-commerce payment processing infrastructure."
  tags:
    - security
    - compliance
    - palo-alto-networks
capability:
  exposes:
    - type: mcp
      namespace: network-security
      port: 8080
      tools:
        - name: audit-firewall-rules
          description: "Fetch firewall rules from Palo Alto Panorama."
          inputParameters:
            - name: device_group
              in: body
              type: string
              description: "Device group."
          call: "paloalto.get-security-rules"
          with:
            device_group: "{{device_group}}"
          outputParameters:
            - name: rules
              type: array
              mapping: "$.result.entry"
            - name: total_rules
              type: integer
              mapping: "$.result.@count"
  consumes:
    - type: http
      namespace: paloalto
      baseUri: "https://panorama.chewy.com/restapi/v10.2"
      authentication:
        type: apiKey
        key: "$secrets.paloalto_api_key"
      resources:
        - name: security-rules
          path: "/Policies/SecurityRules"
          operations:
            - name: get-security-rules
              method: GET

Manages referral partnerships with animal shelters and rescue organizations, tracking adoption events and triggering welcome kit shipments for newly adopted pets.

naftiko: "0.5"
info:
  label: "Pet Adoption Partner Referral Pipeline"
  description: "Manages referral partnerships with animal shelters and rescue organizations, tracking adoption events and triggering welcome kit shipments for newly adopted pets."
  tags:
    - pet-adoption
    - partnerships
    - fulfillment
capability:
  exposes:
    - type: mcp
      namespace: adoption-referral
      port: 8080
      tools:
        - name: process-adoption-referral
          description: "Process an adoption referral from a shelter partner and trigger welcome kit."
          inputParameters:
            - name: shelter_partner_id
              in: body
              type: string
              description: "The shelter or rescue organization partner ID."
            - name: adopter_email
              in: body
              type: string
              description: "Email address of the new pet adopter."
            - name: pet_species
              in: body
              type: string
              description: "Species of the adopted pet such as dog or cat."
            - name: pet_size
              in: body
              type: string
              description: "Size category of the adopted pet."
          call: "adoption-api.create-referral"
          with:
            partner: "{{shelter_partner_id}}"
            email: "{{adopter_email}}"
            species: "{{pet_species}}"
            size: "{{pet_size}}"
          outputParameters:
            - name: referral_id
              type: string
              mapping: "$.referral.id"
            - name: welcome_kit_tracking
              type: string
              mapping: "$.referral.kitShipmentTracking"
            - name: coupon_code
              type: string
              mapping: "$.referral.welcomeCouponCode"
  consumes:
    - type: http
      namespace: adoption-api
      baseUri: "https://api.chewy.com/partnerships/v1"
      authentication:
        type: bearer
        token: "$secrets.chewy_partnerships_token"
      resources:
        - name: referrals
          path: "/adoption-referrals"
          operations:
            - name: create-referral
              method: POST

Sends pet birthday surprises by querying MongoDB for upcoming birthdays, generating personalized offers, sending emails via MailChimp, and logging in Salesforce.

naftiko: "0.5"
info:
  label: "Pet Birthday Surprise Orchestrator"
  description: "Sends pet birthday surprises by querying MongoDB for upcoming birthdays, generating personalized offers, sending emails via MailChimp, and logging in Salesforce."
  tags:
    - customer-engagement
    - personalization
    - mongodb
    - mailchimp
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: pet-birthdays
      port: 8080
      tools:
        - name: send-birthday-surprise
          description: "Orchestrate pet birthday surprise across MongoDB, promotions, MailChimp, and Salesforce."
          inputParameters:
            - name: date_range
              in: body
              type: integer
              description: "Days ahead to check for birthdays."
          steps:
            - name: get-birthdays
              type: call
              call: "mongodb.find-birthdays"
              with:
                collection: "customer_profiles"
                days_ahead: "{{date_range}}"
            - name: generate-offers
              type: call
              call: "promotions.create-birthday-offers"
              with:
                customers: "{{get-birthdays.data}}"
            - name: send-emails
              type: call
              call: "mailchimp.send-campaign"
              with:
                list_id: "birthday-pets"
                template: "pet-birthday"
                recipients: "{{get-birthdays.emails}}"
            - name: log-outreach
              type: call
              call: "salesforce.create-bulk-activities"
              with:
                activities: "{{generate-offers.activity_log}}"
                type: "pet_birthday_outreach"
  consumes:
    - type: http
      namespace: mongodb
      baseUri: "https://data.mongodb-api.chewy.com/app/data-chewy/endpoint/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mongodb_api_key"
      resources:
        - name: find
          path: "/action/find"
          operations:
            - name: find-birthdays
              method: POST
    - type: http
      namespace: promotions
      baseUri: "https://promotions-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.promotions_api_token"
      resources:
        - name: birthday
          path: "/birthday-offers"
          operations:
            - name: create-birthday-offers
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: send-campaign
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: activities
          path: "/composite/sobjects/Activity__c"
          operations:
            - name: create-bulk-activities
              method: POST

Screens pet food products against known pet allergen profiles, flagging ingredients that may trigger allergic reactions and suggesting safe alternatives.

naftiko: "0.5"
info:
  label: "Pet Food Allergen Screening Pipeline"
  description: "Screens pet food products against known pet allergen profiles, flagging ingredients that may trigger allergic reactions and suggesting safe alternatives."
  tags:
    - pet-health
    - food-safety
    - product-catalog
capability:
  exposes:
    - type: mcp
      namespace: allergen-screening
      port: 8080
      tools:
        - name: screen-product-allergens
          description: "Screen a product for allergens against a pet allergy profile."
          inputParameters:
            - name: product_sku
              in: body
              type: string
              description: "The product SKU to screen."
            - name: pet_id
              in: body
              type: string
              description: "The pet profile ID with known allergies."
          call: "product-safety-api.check-allergens"
          with:
            sku: "{{product_sku}}"
            pet: "{{pet_id}}"
          outputParameters:
            - name: is_safe
              type: boolean
              mapping: "$.screening.isSafe"
            - name: flagged_ingredients
              type: array
              mapping: "$.screening.flaggedIngredients"
            - name: safe_alternatives
              type: array
              mapping: "$.screening.safeAlternatives"
  consumes:
    - type: http
      namespace: product-safety-api
      baseUri: "https://api.chewy.com/product-safety/v1"
      authentication:
        type: bearer
        token: "$secrets.chewy_product_safety_token"
      resources:
        - name: allergen-checks
          path: "/allergen-screening"
          operations:
            - name: check-allergens
              method: POST

Adjusts autoship subscriptions based on pet profile changes by updating the subscription engine, recalculating pricing, notifying the customer via WhatsApp, and logging in Salesforce.

naftiko: "0.5"
info:
  label: "Pet Food Subscription Adjustment Orchestrator"
  description: "Adjusts autoship subscriptions based on pet profile changes by updating the subscription engine, recalculating pricing, notifying the customer via WhatsApp, and logging in Salesforce."
  tags:
    - subscriptions
    - pet-profiles
    - whatsapp
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: subscription-adjustment
      port: 8080
      tools:
        - name: adjust-subscription
          description: "Orchestrate subscription adjustment across subscription engine, pricing, WhatsApp, and Salesforce."
          inputParameters:
            - name: subscription_id
              in: body
              type: string
              description: "Autoship subscription ID."
            - name: pet_weight
              in: body
              type: number
              description: "Updated pet weight in lbs."
            - name: pet_age
              in: body
              type: integer
              description: "Updated pet age in months."
          steps:
            - name: recalculate
              type: call
              call: "subscriptions.recalculate-quantity"
              with:
                subscription_id: "{{subscription_id}}"
                pet_weight: "{{pet_weight}}"
                pet_age: "{{pet_age}}"
            - name: update-pricing
              type: call
              call: "subscriptions.update-pricing"
              with:
                subscription_id: "{{subscription_id}}"
                new_quantity: "{{recalculate.recommended_quantity}}"
            - name: notify-customer
              type: call
              call: "whatsapp.send-message"
              with:
                phone: "{{recalculate.customer_phone}}"
                message: "Your Chewy autoship has been adjusted based on your pet's updated profile. New delivery: {{recalculate.recommended_quantity}} units every {{recalculate.frequency}} days."
            - name: log-change
              type: call
              call: "salesforce.create-activity"
              with:
                customer_id: "{{recalculate.customer_id}}"
                subject: "Autoship adjusted: {{subscription_id}}"
                description: "Quantity: {{recalculate.recommended_quantity}}. Pet weight: {{pet_weight}}lbs, age: {{pet_age}}mo."
  consumes:
    - type: http
      namespace: subscriptions
      baseUri: "https://subscriptions-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.subscriptions_api_token"
      resources:
        - name: recalculate
          path: "/autoship/{{subscription_id}}/recalculate"
          inputParameters:
            - name: subscription_id
              in: path
          operations:
            - name: recalculate-quantity
              method: POST
        - name: pricing
          path: "/autoship/{{subscription_id}}/pricing"
          inputParameters:
            - name: subscription_id
              in: path
          operations:
            - name: update-pricing
              method: PUT
    - type: http
      namespace: whatsapp
      baseUri: "https://graph.facebook.com/v18.0/$secrets.whatsapp_business_id"
      authentication:
        type: bearer
        token: "$secrets.whatsapp_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: activities
          path: "/sobjects/Activity__c"
          operations:
            - name: create-activity
              method: POST

Syncs pet health records from veterinary partners into Chewy customer profiles, enabling personalized product recommendations based on pet health needs.

naftiko: "0.5"
info:
  label: "Pet Health Records Integration Pipeline"
  description: "Syncs pet health records from veterinary partners into Chewy customer profiles, enabling personalized product recommendations based on pet health needs."
  tags:
    - pet-health
    - data-integration
    - veterinary
capability:
  exposes:
    - type: mcp
      namespace: pet-health-records
      port: 8080
      tools:
        - name: sync-health-records
          description: "Sync pet health records from veterinary partner systems."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Chewy customer identifier."
            - name: pet_id
              in: body
              type: string
              description: "The pet profile identifier."
            - name: vet_partner_id
              in: body
              type: string
              description: "The veterinary partner system ID."
          call: "vet-integration-api.fetch-records"
          with:
            customer: "{{customer_id}}"
            pet: "{{pet_id}}"
            partner: "{{vet_partner_id}}"
          outputParameters:
            - name: records_synced
              type: integer
              mapping: "$.sync.recordCount"
            - name: last_visit_date
              type: string
              mapping: "$.sync.lastVisitDate"
            - name: health_alerts
              type: array
              mapping: "$.sync.alerts"
  consumes:
    - type: http
      namespace: vet-integration-api
      baseUri: "https://api.chewy.com/vet-connect/v1"
      authentication:
        type: bearer
        token: "$secrets.chewy_vet_connect_token"
      resources:
        - name: records
          path: "/customers/{{customer}}/pets/{{pet}}/records"
          inputParameters:
            - name: customer
              in: path
            - name: pet
              in: path
          operations:
            - name: fetch-records
              method: GET

Verifies pet pharmacy prescriptions by validating the vet license, checking the prescription database, approving the order in the OMS, and sending a confirmation SMS via Twilio.

naftiko: "0.5"
info:
  label: "Pet Prescription Verification Pipeline"
  description: "Verifies pet pharmacy prescriptions by validating the vet license, checking the prescription database, approving the order in the OMS, and sending a confirmation SMS via Twilio."
  tags:
    - pharmacy
    - prescription
    - e-commerce
    - twilio
capability:
  exposes:
    - type: mcp
      namespace: prescription-verification
      port: 8080
      tools:
        - name: verify-prescription
          description: "Orchestrate prescription verification across vet validation, pharmacy DB, OMS, and Twilio."
          inputParameters:
            - name: prescription_id
              in: body
              type: string
              description: "Prescription identifier."
            - name: order_id
              in: body
              type: string
              description: "Associated order ID."
          steps:
            - name: validate-vet
              type: call
              call: "pharmacy.verify-vet-license"
              with:
                prescription_id: "{{prescription_id}}"
            - name: check-prescription
              type: call
              call: "pharmacy.validate-prescription"
              with:
                prescription_id: "{{prescription_id}}"
                vet_valid: "{{validate-vet.valid}}"
            - name: approve-order
              type: call
              call: "oms.approve-rx-order"
              with:
                order_id: "{{order_id}}"
                prescription_status: "{{check-prescription.status}}"
            - name: notify-customer
              type: call
              call: "twilio.send-message"
              with:
                To: "{{approve-order.customer_phone}}"
                Body: "Your Chewy pharmacy order #{{order_id}} has been verified and is being processed. Estimated delivery: {{approve-order.delivery_date}}."
                From: "+18886337569"
  consumes:
    - type: http
      namespace: pharmacy
      baseUri: "https://pharmacy-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.pharmacy_api_token"
      resources:
        - name: vet-license
          path: "/vet-verification"
          operations:
            - name: verify-vet-license
              method: POST
        - name: prescriptions
          path: "/prescriptions/validate"
          operations:
            - name: validate-prescription
              method: POST
    - type: http
      namespace: oms
      baseUri: "https://oms-api.chewy.com/v2"
      authentication:
        type: bearer
        token: "$secrets.oms_api_token"
      resources:
        - name: rx-orders
          path: "/orders/{{order_id}}/approve-rx"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: approve-rx-order
              method: POST
    - type: http
      namespace: twilio
      baseUri: "https://api.twilio.com/2010-04-01/Accounts/$secrets.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-message
              method: POST

Generates pet weight tracking dashboards for customers, pulling historical weight data and correlating with food consumption patterns to provide health insights.

naftiko: "0.5"
info:
  label: "Pet Weight Tracking Dashboard Generator"
  description: "Generates pet weight tracking dashboards for customers, pulling historical weight data and correlating with food consumption patterns to provide health insights."
  tags:
    - pet-health
    - analytics
    - dashboard
capability:
  exposes:
    - type: mcp
      namespace: pet-weight-tracker
      port: 8080
      tools:
        - name: generate-weight-dashboard
          description: "Generate a weight tracking dashboard for a specific pet."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The Chewy customer identifier."
            - name: pet_id
              in: body
              type: string
              description: "The pet profile identifier."
            - name: time_range
              in: body
              type: string
              description: "Time range for weight history such as 6m or 1y."
          call: "pet-analytics-api.get-weight-trends"
          with:
            customer: "{{customer_id}}"
            pet: "{{pet_id}}"
            range: "{{time_range}}"
          outputParameters:
            - name: current_weight
              type: number
              mapping: "$.weightData.currentWeight"
            - name: target_weight
              type: number
              mapping: "$.weightData.targetWeight"
            - name: trend_direction
              type: string
              mapping: "$.weightData.trendDirection"
  consumes:
    - type: http
      namespace: pet-analytics-api
      baseUri: "https://api.chewy.com/pet-analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.chewy_pet_analytics_token"
      resources:
        - name: weight-trends
          path: "/pets/{{pet}}/weight-trends"
          inputParameters:
            - name: pet
              in: path
          operations:
            - name: get-weight-trends
              method: GET

Assigns learning paths in Pluralsight for Chewy's technology and customer service teams.

naftiko: "0.5"
info:
  label: "Pluralsight Employee Learning Manager"
  description: "Assigns learning paths in Pluralsight for Chewy's technology and customer service teams."
  tags:
    - training
    - learning
    - pluralsight
capability:
  exposes:
    - type: mcp
      namespace: learning-management
      port: 8080
      tools:
        - name: assign-learning-path
          description: "Assign a Pluralsight learning path to an employee."
          inputParameters:
            - name: user_email
              in: body
              type: string
              description: "Employee email."
            - name: path_id
              in: body
              type: string
              description: "Learning path ID."
            - name: due_date
              in: body
              type: string
              description: "Due date."
          call: "pluralsight.assign-path"
          with:
            email: "{{user_email}}"
            path_id: "{{path_id}}"
            due_date: "{{due_date}}"
          outputParameters:
            - name: assignment_id
              type: string
              mapping: "$.id"
  consumes:
    - type: http
      namespace: pluralsight
      baseUri: "https://api.pluralsight.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: assignments
          path: "/learning-paths/{{path_id}}/assignments"
          inputParameters:
            - name: path_id
              in: path
          operations:
            - name: assign-path
              method: POST

Runs Postman API test collections for Chewy's e-commerce APIs including cart, checkout, and Autoship endpoints.

naftiko: "0.5"
info:
  label: "Postman E-Commerce API Test Suite"
  description: "Runs Postman API test collections for Chewy's e-commerce APIs including cart, checkout, and Autoship endpoints."
  tags:
    - qa
    - api-testing
    - postman
capability:
  exposes:
    - type: mcp
      namespace: api-testing
      port: 8080
      tools:
        - name: run-api-tests
          description: "Run Postman e-commerce API test collection."
          inputParameters:
            - name: collection_id
              in: body
              type: string
              description: "Collection UID."
            - name: environment_id
              in: body
              type: string
              description: "Environment UID."
          call: "postman.run-collection"
          with:
            collection: "{{collection_id}}"
            environment: "{{environment_id}}"
          outputParameters:
            - name: total_tests
              type: integer
              mapping: "$.run.stats.tests.total"
            - name: failed_tests
              type: integer
              mapping: "$.run.stats.tests.failed"
  consumes:
    - type: http
      namespace: postman
      baseUri: "https://api.getpostman.com"
      authentication:
        type: apiKey
        key: "$secrets.postman_api_key"
      resources:
        - name: collection-runs
          path: "/monitors/{{collection_id}}/run"
          inputParameters:
            - name: collection_id
              in: path
          operations:
            - name: run-collection
              method: POST

Triggers a refresh of the Power BI revenue dashboard tracking daily sales, Autoship revenue, and customer lifetime value.

naftiko: "0.5"
info:
  label: "Power BI Revenue Dashboard Refresh"
  description: "Triggers a refresh of the Power BI revenue dashboard tracking daily sales, Autoship revenue, and customer lifetime value."
  tags:
    - analytics
    - revenue
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: revenue-reporting
      port: 8080
      tools:
        - name: refresh-revenue-dashboard
          description: "Trigger a Power BI dataset refresh for the revenue dashboard."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Power BI dataset ID."
          call: "powerbi.trigger-refresh"
          with:
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: refreshes
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST

Monitors competitor pricing by querying the price intelligence database, comparing with current Chewy prices, auto-adjusting via the pricing engine, and logging changes in Snowflake.

naftiko: "0.5"
info:
  label: "Price Match Competitor Pipeline"
  description: "Monitors competitor pricing by querying the price intelligence database, comparing with current Chewy prices, auto-adjusting via the pricing engine, and logging changes in Snowflake."
  tags:
    - pricing
    - competitive-intelligence
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: price-matching
      port: 8080
      tools:
        - name: run-price-match
          description: "Orchestrate price matching across intelligence DB, pricing engine, and Snowflake."
          inputParameters:
            - name: category
              in: body
              type: string
              description: "Product category to check."
          steps:
            - name: get-competitor-prices
              type: call
              call: "pricing-intel.get-competitive-prices"
              with:
                category: "{{category}}"
            - name: get-current-prices
              type: call
              call: "snowflake.query-prices"
              with:
                statement: "SELECT * FROM PRODUCT_PRICES WHERE category = '{{category}}' AND active = TRUE"
                warehouse: "CHEWY_PRICING_WH"
            - name: adjust-prices
              type: call
              call: "pricing-engine.apply-adjustments"
              with:
                competitor_data: "{{get-competitor-prices.data}}"
                current_prices: "{{get-current-prices.data}}"
                strategy: "competitive_match"
            - name: log-changes
              type: call
              call: "snowflake.insert-price-changes"
              with:
                statement: "INSERT INTO PRICE_CHANGE_LOG SELECT * FROM TABLE(FLATTEN(input => parse_json('{{adjust-prices.changes}}')))"
                warehouse: "CHEWY_PRICING_WH"
  consumes:
    - type: http
      namespace: pricing-intel
      baseUri: "https://pricing-intel.chewy.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.pricing_intel_token"
      resources:
        - name: competitive
          path: "/competitive-prices"
          operations:
            - name: get-competitive-prices
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-prices
              method: POST
            - name: insert-price-changes
              method: POST
    - type: http
      namespace: pricing-engine
      baseUri: "https://pricing-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.pricing_api_token"
      resources:
        - name: adjustments
          path: "/adjustments"
          operations:
            - name: apply-adjustments
              method: POST

Searches the Chewy product catalog using Elasticsearch for pet products by category, brand, and attributes.

naftiko: "0.5"
info:
  label: "Product Catalog Search"
  description: "Searches the Chewy product catalog using Elasticsearch for pet products by category, brand, and attributes."
  tags:
    - e-commerce
    - catalog
    - elasticsearch
capability:
  exposes:
    - type: mcp
      namespace: product-catalog
      port: 8080
      tools:
        - name: search-products
          description: "Search the Chewy product catalog by keywords, category, and filters."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search query text."
            - name: pet_type
              in: body
              type: string
              description: "Pet type filter (dog, cat, fish, bird)."
            - name: category
              in: body
              type: string
              description: "Product category (food, treats, toys, health, supplies)."
          call: "elasticsearch.search"
          with:
            index: "chewy_products"
            query: "{\"bool\": {\"must\": [{\"match\": {\"title\": \"{{query}}\"}}], \"filter\": [{\"term\": {\"pet_type\": \"{{pet_type}}\"}}, {\"term\": {\"category\": \"{{category}}\"}}]}}"
          outputParameters:
            - name: products
              type: array
              mapping: "$.hits.hits"
            - name: total
              type: integer
              mapping: "$.hits.total.value"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://search.chewy.com"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token"
      resources:
        - name: search
          path: "/{{index}}/_search"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: search
              method: POST

Reviews product content quality by fetching listings from Elasticsearch, running AI content analysis via Gemini, flagging issues in Jira, and notifying the content team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Product Content Review Orchestrator"
  description: "Reviews product content quality by fetching listings from Elasticsearch, running AI content analysis via Gemini, flagging issues in Jira, and notifying the content team via Microsoft Teams."
  tags:
    - content-management
    - quality
    - elasticsearch
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: content-review
      port: 8080
      tools:
        - name: review-product-content
          description: "Orchestrate product content review across Elasticsearch, Gemini AI, Jira, and Teams."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "Product SKU to review."
          steps:
            - name: get-listing
              type: call
              call: "elasticsearch.get-product"
              with:
                index: "chewy_products"
                id: "{{product_id}}"
            - name: analyze-content
              type: call
              call: "gemini.analyze-content"
              with:
                title: "{{get-listing.title}}"
                description: "{{get-listing.description}}"
            - name: flag-issues
              type: call
              call: "jira.create-issue"
              with:
                project: "CONTENT"
                summary: "Content review: {{product_id}} - {{analyze-content.issues_count}} issues"
                description: "Product: {{get-listing.title}}\nIssues: {{analyze-content.issues}}\nScore: {{analyze-content.quality_score}}"
                issuetype: "Task"
            - name: notify-team
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "content-team"
                channel: "reviews"
                text: "Content review completed: {{product_id}}. Score: {{analyze-content.quality_score}}. Issues: {{analyze-content.issues_count}}. Jira: {{flag-issues.key}}."
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://search.chewy.com"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token"
      resources:
        - name: products
          path: "/{{index}}/_doc/{{id}}"
          inputParameters:
            - name: index
              in: path
            - name: id
              in: path
          operations:
            - name: get-product
              method: GET
    - type: http
      namespace: gemini
      baseUri: "https://generativelanguage.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.gemini_api_key"
      resources:
        - name: content
          path: "/models/gemini-pro:generateContent"
          operations:
            - name: analyze-content
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://chewy.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST

On product recall, identifies affected customers from Snowflake, removes product from catalog in Elasticsearch, sends recall notices via email, and logs actions in Salesforce.

naftiko: "0.5"
info:
  label: "Product Recall Notification Pipeline"
  description: "On product recall, identifies affected customers from Snowflake, removes product from catalog in Elasticsearch, sends recall notices via email, and logs actions in Salesforce."
  tags:
    - product-safety
    - recall
    - snowflake
    - elasticsearch
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: product-recall
      port: 8080
      tools:
        - name: process-recall
          description: "Orchestrate product recall across Snowflake, Elasticsearch, email, and Salesforce."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "Recalled product SKU."
            - name: recall_reason
              in: body
              type: string
              description: "Reason for recall."
          steps:
            - name: find-affected-customers
              type: call
              call: "snowflake.query-affected"
              with:
                statement: "SELECT * FROM ORDER_ITEMS WHERE product_id = '{{product_id}}' AND order_date >= DATEADD(year, -1, CURRENT_DATE)"
                warehouse: "CHEWY_OPERATIONS_WH"
            - name: remove-from-catalog
              type: call
              call: "elasticsearch.update-product"
              with:
                index: "chewy_products"
                id: "{{product_id}}"
                body: "{\"doc\":{\"status\":\"recalled\",\"available\":false}}"
            - name: send-notices
              type: call
              call: "ses.send-bulk-email"
              with:
                recipients: "{{find-affected-customers.customer_emails}}"
                subject: "Important Safety Notice - Product Recall"
                body: "A product you recently purchased from Chewy has been recalled: {{product_id}}. Reason: {{recall_reason}}. A full refund will be issued automatically."
            - name: log-recall
              type: call
              call: "salesforce.create-campaign"
              with:
                name: "Recall: {{product_id}}"
                description: "{{recall_reason}}. Affected customers: {{find-affected-customers.count}}."
                status: "In Progress"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-affected
              method: POST
    - type: http
      namespace: elasticsearch
      baseUri: "https://search.chewy.com"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token"
      resources:
        - name: products
          path: "/{{index}}/_update/{{id}}"
          inputParameters:
            - name: index
              in: path
            - name: id
              in: path
          operations:
            - name: update-product
              method: POST
    - type: http
      namespace: ses
      baseUri: "https://email.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: bulk-email
          path: "/v2/email/outbound-bulk-emails"
          operations:
            - name: send-bulk-email
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST

Generates personalized product recommendations by fetching pet profiles from MongoDB, running the ML model in Databricks, caching results in Redis, and updating the search index in Elasticsearch.

naftiko: "0.5"
info:
  label: "Product Recommendation Personalization Pipeline"
  description: "Generates personalized product recommendations by fetching pet profiles from MongoDB, running the ML model in Databricks, caching results in Redis, and updating the search index in Elasticsearch."
  tags:
    - personalization
    - recommendations
    - mongodb
    - databricks
    - redis
    - elasticsearch
capability:
  exposes:
    - type: mcp
      namespace: recommendations
      port: 8080
      tools:
        - name: generate-recommendations
          description: "Orchestrate personalized recommendations across MongoDB, Databricks, Redis, and Elasticsearch."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Chewy customer ID."
          steps:
            - name: get-profile
              type: call
              call: "mongodb.get-customer"
              with:
                collection: "customer_profiles"
                filter: "{\"customer_id\": \"{{customer_id}}\"}"
            - name: run-model
              type: call
              call: "databricks.score-recommendations"
              with:
                customer_data: "{{get-profile}}"
                model: "product-reco-v4"
            - name: cache-results
              type: call
              call: "redis.set-key"
              with:
                key: "reco:{{customer_id}}"
                value: "{{run-model.recommendations}}"
                ttl: 3600
            - name: update-search
              type: call
              call: "elasticsearch.update-personalization"
              with:
                index: "personalized_rankings"
                customer_id: "{{customer_id}}"
                rankings: "{{run-model.product_scores}}"
  consumes:
    - type: http
      namespace: mongodb
      baseUri: "https://data.mongodb-api.chewy.com/app/data-chewy/endpoint/data/v1"
      authentication:
        type: bearer
        token: "$secrets.mongodb_api_key"
      resources:
        - name: find
          path: "/action/findOne"
          operations:
            - name: get-customer
              method: POST
    - type: http
      namespace: databricks
      baseUri: "https://chewy.cloud.databricks.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: serving
          path: "/serving-endpoints/product-reco-v4/invocations"
          operations:
            - name: score-recommendations
              method: POST
    - type: http
      namespace: redis
      baseUri: "https://redis-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.redis_api_token"
      resources:
        - name: keys
          path: "/set"
          operations:
            - name: set-key
              method: POST
    - type: http
      namespace: elasticsearch
      baseUri: "https://search.chewy.com"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token"
      resources:
        - name: personalization
          path: "/{{index}}/_update/{{customer_id}}"
          inputParameters:
            - name: index
              in: path
            - name: customer_id
              in: path
          operations:
            - name: update-personalization
              method: POST

Queries Prometheus for fulfillment center operational metrics including pick rate, pack rate, ship rate, and error rates.

naftiko: "0.5"
info:
  label: "Prometheus Fulfillment Metrics"
  description: "Queries Prometheus for fulfillment center operational metrics including pick rate, pack rate, ship rate, and error rates."
  tags:
    - fulfillment
    - monitoring
    - prometheus
capability:
  exposes:
    - type: mcp
      namespace: fulfillment-metrics
      port: 8080
      tools:
        - name: query-fulfillment-metrics
          description: "Query Prometheus for fulfillment center performance metrics."
          inputParameters:
            - name: warehouse_id
              in: body
              type: string
              description: "Fulfillment center identifier."
            - name: metric
              in: body
              type: string
              description: "Metric name (pick_rate, pack_rate, ship_rate)."
          call: "prometheus.query"
          with:
            query: "{{metric}}{warehouse=\"{{warehouse_id}}\"}"
          outputParameters:
            - name: value
              type: number
              mapping: "$.data.result[0].value[1]"
  consumes:
    - type: http
      namespace: prometheus
      baseUri: "https://prometheus.chewy.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.prometheus_token"
      resources:
        - name: query
          path: "/query"
          operations:
            - name: query
              method: POST

Triggers a Qlik Sense app reload for customer behavior analytics including repeat purchase rates and category affinity.

naftiko: "0.5"
info:
  label: "Qlik Sense Customer Analytics Dashboard"
  description: "Triggers a Qlik Sense app reload for customer behavior analytics including repeat purchase rates and category affinity."
  tags:
    - analytics
    - customer-behavior
    - qlik-sense
capability:
  exposes:
    - type: mcp
      namespace: customer-analytics
      port: 8080
      tools:
        - name: reload-customer-dashboard
          description: "Trigger Qlik Sense reload for customer analytics."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "Qlik Sense app ID."
          call: "qlik.reload-app"
          with:
            app_id: "{{app_id}}"
          outputParameters:
            - name: reload_id
              type: string
              mapping: "$.id"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: qlik
      baseUri: "https://chewy.us.qlikcloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.qlik_api_key"
      resources:
        - name: reloads
          path: "/reloads"
          operations:
            - name: reload-app
              method: POST

Queries Redis cache for product availability, pricing, and inventory data for the Chewy e-commerce storefront.

naftiko: "0.5"
info:
  label: "Redis Product Cache Lookup"
  description: "Queries Redis cache for product availability, pricing, and inventory data for the Chewy e-commerce storefront."
  tags:
    - caching
    - product-data
    - redis
capability:
  exposes:
    - type: mcp
      namespace: product-cache
      port: 8080
      tools:
        - name: get-product-cache
          description: "Look up product data from Redis cache."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "Chewy product SKU."
          call: "redis.get-key"
          with:
            key: "product:{{product_id}}"
          outputParameters:
            - name: price
              type: number
              mapping: "$.price"
            - name: in_stock
              type: boolean
              mapping: "$.in_stock"
            - name: warehouse_qty
              type: integer
              mapping: "$.warehouse_quantity"
  consumes:
    - type: http
      namespace: redis
      baseUri: "https://redis-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.redis_api_token"
      resources:
        - name: keys
          path: "/get/{{key}}"
          inputParameters:
            - name: key
              in: path
          operations:
            - name: get-key
              method: GET

Retrieves a complete customer profile from Salesforce including pet information, order history, Autoship subscriptions, and support cases.

naftiko: "0.5"
info:
  label: "Salesforce Customer 360 Viewer"
  description: "Retrieves a complete customer profile from Salesforce including pet information, order history, Autoship subscriptions, and support cases."
  tags:
    - crm
    - customer-360
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: customer-360
      port: 8080
      tools:
        - name: get-customer-profile
          description: "Fetch complete customer profile from Salesforce."
          inputParameters:
            - name: customer_email
              in: body
              type: string
              description: "Customer email address."
          call: "salesforce.query"
          with:
            q: "SELECT Id, Name, Email, Pet_Type__c, Pet_Name__c, Has_Autoship__c, Lifetime_Value__c, Last_Order_Date__c, Total_Orders__c, Open_Cases__c FROM Contact WHERE Email = '{{customer_email}}'"
          outputParameters:
            - name: customer
              type: object
              mapping: "$.records[0]"
            - name: found
              type: boolean
              mapping: "$.totalSize > 0"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          operations:
            - name: query
              method: GET

Retrieves vendor inventory availability data from SAP HANA to coordinate product availability across fulfillment centers.

naftiko: "0.5"
info:
  label: "SAP HANA Vendor Inventory Sync"
  description: "Retrieves vendor inventory availability data from SAP HANA to coordinate product availability across fulfillment centers."
  tags:
    - supply-chain
    - inventory
    - sap-hana
capability:
  exposes:
    - type: mcp
      namespace: vendor-inventory
      port: 8080
      tools:
        - name: get-vendor-inventory
          description: "Query SAP HANA for vendor product availability."
          inputParameters:
            - name: vendor_id
              in: body
              type: string
              description: "Vendor ID."
            - name: product_category
              in: body
              type: string
              description: "Product category."
          call: "sap-hana.run-query"
          with:
            query: "SELECT product_id, available_qty, lead_time_days, next_available_date FROM vendor_inventory WHERE vendor_id='{{vendor_id}}' AND category='{{product_category}}' AND available_qty > 0"
          outputParameters:
            - name: items
              type: array
              mapping: "$.results"
            - name: total_skus
              type: integer
              mapping: "$.count"
  consumes:
    - type: http
      namespace: sap-hana
      baseUri: "https://sap-hana.chewy.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: queries
          path: "/sql"
          operations:
            - name: run-query
              method: POST

Runs seasonal demand forecasting by querying Snowflake for historical sales, executing the ML model in Databricks, updating inventory targets in SAP HANA, and publishing results in Tableau.

naftiko: "0.5"
info:
  label: "Seasonal Demand Forecasting Pipeline"
  description: "Runs seasonal demand forecasting by querying Snowflake for historical sales, executing the ML model in Databricks, updating inventory targets in SAP HANA, and publishing results in Tableau."
  tags:
    - forecasting
    - demand-planning
    - snowflake
    - databricks
    - sap-hana
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: demand-forecasting
      port: 8080
      tools:
        - name: run-forecast
          description: "Orchestrate seasonal demand forecast across Snowflake, Databricks, SAP HANA, and Tableau."
          inputParameters:
            - name: category
              in: body
              type: string
              description: "Product category to forecast."
            - name: forecast_horizon
              in: body
              type: integer
              description: "Forecast horizon in weeks."
          steps:
            - name: get-historical
              type: call
              call: "snowflake.query-sales-history"
              with:
                statement: "SELECT * FROM SALES_HISTORY WHERE category = '{{category}}' AND order_date >= DATEADD(year, -3, CURRENT_DATE)"
                warehouse: "CHEWY_ANALYTICS_WH"
            - name: run-model
              type: call
              call: "databricks.run-forecast-model"
              with:
                historical_data: "{{get-historical.data}}"
                horizon: "{{forecast_horizon}}"
                model: "seasonal-demand-v3"
            - name: update-targets
              type: call
              call: "sap-hana.update-inventory-targets"
              with:
                category: "{{category}}"
                targets: "{{run-model.forecasted_demand}}"
            - name: publish-report
              type: call
              call: "tableau.refresh-workbook"
              with:
                workbook_id: "demand-forecast-dashboard"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-sales-history
              method: POST
    - type: http
      namespace: databricks
      baseUri: "https://chewy.cloud.databricks.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/run-now"
          operations:
            - name: run-forecast-model
              method: POST
    - type: http
      namespace: sap-hana
      baseUri: "https://chewy-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: targets
          path: "/inventory-targets"
          operations:
            - name: update-inventory-targets
              method: PUT
    - type: http
      namespace: tableau
      baseUri: "https://tableau.chewy.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: workbooks
          path: "/sites/default/workbooks/{{workbook_id}}/refresh"
          inputParameters:
            - name: workbook_id
              in: path
          operations:
            - name: refresh-workbook
              method: POST

Retrieves customer behavioral event data from Segment for Chewy's product analytics including page views, cart actions, and purchase events.

naftiko: "0.5"
info:
  label: "Segment Customer Event Tracker"
  description: "Retrieves customer behavioral event data from Segment for Chewy's product analytics including page views, cart actions, and purchase events."
  tags:
    - analytics
    - customer-behavior
    - segment
capability:
  exposes:
    - type: mcp
      namespace: event-tracking
      port: 8080
      tools:
        - name: get-customer-events
          description: "Fetch customer behavioral events from Segment."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Chewy customer ID."
            - name: event_type
              in: body
              type: string
              description: "Event type filter (page_view, add_to_cart, purchase)."
          call: "segment.get-profile-events"
          with:
            user_id: "{{customer_id}}"
            event: "{{event_type}}"
          outputParameters:
            - name: events
              type: array
              mapping: "$.data"
            - name: count
              type: integer
              mapping: "$.cursor.total"
  consumes:
    - type: http
      namespace: segment
      baseUri: "https://profiles.segment.com/v1/spaces/$secrets.segment_space_id"
      authentication:
        type: bearer
        token: "$secrets.segment_api_token"
      resources:
        - name: events
          path: "/collections/users/profiles/user_id:{{user_id}}/events"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: get-profile-events
              method: GET

Retrieves an IT incident from ServiceNow and returns current status and resolution details.

naftiko: "0.5"
info:
  label: "ServiceNow IT Incident Lookup"
  description: "Retrieves an IT incident from ServiceNow and returns current status and resolution details."
  tags:
    - it-support
    - incident-management
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-support
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "Incident number."
          call: "servicenow.get-incident"
          with:
            number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result[0].state"
            - name: assigned_to
              type: string
              mapping: "$.result[0].assigned_to.display_value"
            - name: short_description
              type: string
              mapping: "$.result[0].short_description"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://chewy.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: get-incident
              method: GET

Optimizes shipping rates by querying Snowflake for order patterns, comparing carrier rates via ShipStation, updating routing rules, and publishing savings reports in Google Sheets.

naftiko: "0.5"
info:
  label: "Shipping Rate Optimization Pipeline"
  description: "Optimizes shipping rates by querying Snowflake for order patterns, comparing carrier rates via ShipStation, updating routing rules, and publishing savings reports in Google Sheets."
  tags:
    - shipping
    - cost-optimization
    - snowflake
    - shipstation
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: shipping-optimization
      port: 8080
      tools:
        - name: optimize-shipping-rates
          description: "Orchestrate shipping rate optimization across Snowflake, ShipStation, and Google Sheets."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "Shipping region to optimize."
          steps:
            - name: get-patterns
              type: call
              call: "snowflake.query-shipping-data"
              with:
                statement: "SELECT * FROM SHIPPING_PATTERNS WHERE region = '{{region}}' AND ship_date >= DATEADD(month, -3, CURRENT_DATE)"
                warehouse: "CHEWY_LOGISTICS_WH"
            - name: compare-rates
              type: call
              call: "shipstation.compare-carrier-rates"
              with:
                region: "{{region}}"
                volume: "{{get-patterns.avg_daily_volume}}"
            - name: update-routing
              type: call
              call: "shipping.update-routing-rules"
              with:
                region: "{{region}}"
                optimal_carrier: "{{compare-rates.recommended_carrier}}"
                rate: "{{compare-rates.best_rate}}"
            - name: publish-report
              type: call
              call: "googlesheets.update-sheet"
              with:
                spreadsheet_id: "shipping-optimization-tracker"
                range: "{{region}}!A:F"
                values: "{{compare-rates.comparison_data}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-shipping-data
              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: compare-carrier-rates
              method: POST
    - type: http
      namespace: shipping
      baseUri: "https://shipping-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.shipping_api_token"
      resources:
        - name: routing
          path: "/routing-rules"
          operations:
            - name: update-routing-rules
              method: PUT
    - type: http
      namespace: googlesheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: update-sheet
              method: PUT

Retrieves shipment tracking details from ShipStation for Chewy customer orders including carrier, status, and estimated delivery date.

naftiko: "0.5"
info:
  label: "ShipStation Shipment Tracking Lookup"
  description: "Retrieves shipment tracking details from ShipStation for Chewy customer orders including carrier, status, and estimated delivery date."
  tags:
    - shipping
    - fulfillment
    - shipstation
capability:
  exposes:
    - type: mcp
      namespace: shipment-tracking
      port: 8080
      tools:
        - name: get-shipment-tracking
          description: "Look up shipment tracking details from ShipStation."
          inputParameters:
            - name: order_number
              in: body
              type: string
              description: "Chewy order number."
          call: "shipstation.get-shipment"
          with:
            orderNumber: "{{order_number}}"
          outputParameters:
            - name: tracking_number
              type: string
              mapping: "$.shipments[0].trackingNumber"
            - name: carrier
              type: string
              mapping: "$.shipments[0].carrierCode"
            - name: status
              type: string
              mapping: "$.shipments[0].shipmentStatus"
            - name: estimated_delivery
              type: string
              mapping: "$.shipments[0].estimatedDeliveryDate"
  consumes:
    - type: http
      namespace: shipstation
      baseUri: "https://ssapi.shipstation.com"
      authentication:
        type: basic
        username: "$secrets.shipstation_api_key"
        password: "$secrets.shipstation_api_secret"
      resources:
        - name: shipments
          path: "/shipments"
          operations:
            - name: get-shipment
              method: GET

Executes Snowflake SQL queries against Chewy's analytics warehouse for customer segmentation, cohort analysis, and purchasing trends.

naftiko: "0.5"
info:
  label: "Snowflake Customer Analytics Query"
  description: "Executes Snowflake SQL queries against Chewy's analytics warehouse for customer segmentation, cohort analysis, and purchasing trends."
  tags:
    - analytics
    - data-warehouse
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: customer-analytics
      port: 8080
      tools:
        - name: query-customer-analytics
          description: "Execute a Snowflake analytics query for customer data."
          inputParameters:
            - name: sql
              in: body
              type: string
              description: "The SQL query to execute."
          call: "snowflake.execute-statement"
          with:
            statement: "{{sql}}"
            warehouse: "CHEWY_ANALYTICS_WH"
            database: "CHEWY_ANALYTICS"
          outputParameters:
            - name: data
              type: array
              mapping: "$.data"
            - name: row_count
              type: integer
              mapping: "$.resultSetMetaData.numRows"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-statement
              method: POST

Creates coordinated social media campaigns across Instagram, Facebook, and YouTube promoting pet products and Chewy brand content.

naftiko: "0.5"
info:
  label: "Social Media Pet Content Campaign"
  description: "Creates coordinated social media campaigns across Instagram, Facebook, and YouTube promoting pet products and Chewy brand content."
  tags:
    - marketing
    - social-media
    - instagram
    - facebook
    - youtube
capability:
  exposes:
    - type: mcp
      namespace: social-campaigns
      port: 8080
      tools:
        - name: launch-pet-campaign
          description: "Create social media posts across Instagram, Facebook, and YouTube for a pet product campaign."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "Campaign name."
            - name: post_content
              in: body
              type: string
              description: "Post text."
            - name: image_url
              in: body
              type: string
              description: "Campaign image URL."
            - name: product_url
              in: body
              type: string
              description: "Product page URL."
          steps:
            - name: post-instagram
              type: call
              call: "instagram.create-post"
              with:
                caption: "{{post_content}} Shop now at chewy.com! #Chewy #PetLove"
                image_url: "{{image_url}}"
            - name: post-facebook
              type: call
              call: "facebook.create-post"
              with:
                message: "{{post_content}}"
                link: "{{product_url}}"
            - name: schedule-youtube
              type: call
              call: "youtube.insert-video"
              with:
                title: "{{campaign_name}}"
                description: "{{post_content}}"
  consumes:
    - type: http
      namespace: instagram
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: media
          path: "/{{ig_account_id}}/media"
          operations:
            - name: create-post
              method: POST
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_token"
      resources:
        - name: posts
          path: "/{{page_id}}/feed"
          operations:
            - name: create-post
              method: POST
    - type: http
      namespace: youtube
      baseUri: "https://www.googleapis.com/youtube/v3"
      authentication:
        type: bearer
        token: "$secrets.youtube_token"
      resources:
        - name: videos
          path: "/videos"
          operations:
            - name: insert-video
              method: POST

Monitors network connectivity across Chewy's fulfillment centers via SolarWinds.

naftiko: "0.5"
info:
  label: "SolarWinds Fulfillment Center Network Monitor"
  description: "Monitors network connectivity across Chewy's fulfillment centers via SolarWinds."
  tags:
    - infrastructure
    - networking
    - solarwinds
capability:
  exposes:
    - type: mcp
      namespace: fc-network
      port: 8080
      tools:
        - name: get-fc-network-health
          description: "Retrieve network health for a fulfillment center from SolarWinds."
          inputParameters:
            - name: fc_code
              in: body
              type: string
              description: "Fulfillment center code."
          call: "solarwinds.get-node-stats"
          with:
            node: "{{fc_code}}"
          outputParameters:
            - name: availability
              type: number
              mapping: "$.availability_pct"
            - name: avg_latency
              type: number
              mapping: "$.avg_response_time_ms"
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://solarwinds.chewy.com/SolarWinds/InformationService/v3/Json"
      authentication:
        type: basic
        username: "$secrets.solarwinds_user"
        password: "$secrets.solarwinds_password"
      resources:
        - name: query
          path: "/Query"
          operations:
            - name: get-node-stats
              method: POST

Retrieves payment transaction details from Stripe for Chewy customer orders including charge status, refunds, and payment method.

naftiko: "0.5"
info:
  label: "Stripe Payment Transaction Lookup"
  description: "Retrieves payment transaction details from Stripe for Chewy customer orders including charge status, refunds, and payment method."
  tags:
    - payments
    - e-commerce
    - stripe
capability:
  exposes:
    - type: mcp
      namespace: payment-lookup
      port: 8080
      tools:
        - name: get-payment
          description: "Look up a Stripe payment transaction by charge ID."
          inputParameters:
            - name: charge_id
              in: body
              type: string
              description: "Stripe charge identifier."
          call: "stripe.get-charge"
          with:
            charge_id: "{{charge_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: amount
              type: number
              mapping: "$.amount"
            - name: refunded
              type: boolean
              mapping: "$.refunded"
  consumes:
    - 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

Conducts supplier quality audits by pulling defect data from Snowflake, generating audit reports in Google Docs, notifying suppliers via email, and updating Coupa supplier scores.

naftiko: "0.5"
info:
  label: "Supplier Quality Audit Orchestrator"
  description: "Conducts supplier quality audits by pulling defect data from Snowflake, generating audit reports in Google Docs, notifying suppliers via email, and updating Coupa supplier scores."
  tags:
    - quality-assurance
    - supplier-management
    - snowflake
    - google-docs
    - coupa
capability:
  exposes:
    - type: mcp
      namespace: supplier-audit
      port: 8080
      tools:
        - name: conduct-quality-audit
          description: "Orchestrate supplier quality audit across Snowflake, Google Docs, email, and Coupa."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "Supplier identifier."
            - name: audit_period
              in: body
              type: string
              description: "Audit period (e.g., 2026-Q1)."
          steps:
            - name: get-defect-data
              type: call
              call: "snowflake.query-defects"
              with:
                statement: "SELECT * FROM PRODUCT_DEFECTS WHERE supplier_id = '{{supplier_id}}' AND period = '{{audit_period}}'"
                warehouse: "CHEWY_QUALITY_WH"
            - name: generate-report
              type: call
              call: "googledocs.create-document"
              with:
                title: "Quality Audit: {{supplier_id}} - {{audit_period}}"
                content: "Defect rate: {{get-defect-data.defect_rate}}%. Total units: {{get-defect-data.total_units}}. Defective: {{get-defect-data.defective_count}}."
            - name: notify-supplier
              type: call
              call: "ses.send-email"
              with:
                to: "{{get-defect-data.supplier_email}}"
                subject: "Chewy Quality Audit Results - {{audit_period}}"
                body: "Your quality audit for {{audit_period}} is complete. Defect rate: {{get-defect-data.defect_rate}}%. Report: {{generate-report.url}}."
            - name: update-score
              type: call
              call: "coupa.update-supplier-score"
              with:
                supplier_id: "{{supplier_id}}"
                quality_score: "{{get-defect-data.quality_score}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-defects
              method: POST
    - type: http
      namespace: googledocs
      baseUri: "https://docs.googleapis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_docs_token"
      resources:
        - name: documents
          path: "/documents"
          operations:
            - name: create-document
              method: POST
    - type: http
      namespace: ses
      baseUri: "https://email.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: emails
          path: "/v2/email/outbound-emails"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: coupa
      baseUri: "https://chewy.coupahost.com/api"
      authentication:
        type: bearer
        token: "$secrets.coupa_api_token"
      resources:
        - name: suppliers
          path: "/suppliers/{{supplier_id}}"
          inputParameters:
            - name: supplier_id
              in: path
          operations:
            - name: update-supplier-score
              method: PUT

Generates a trusted ticket for embedding the Chewy e-commerce analytics Tableau dashboard.

naftiko: "0.5"
info:
  label: "Tableau E-Commerce Analytics Embed"
  description: "Generates a trusted ticket for embedding the Chewy e-commerce analytics Tableau dashboard."
  tags:
    - analytics
    - visualization
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: ecommerce-dashboards
      port: 8080
      tools:
        - name: get-tableau-embed
          description: "Generate a Tableau trusted ticket for e-commerce dashboards."
          inputParameters:
            - name: username
              in: body
              type: string
              description: "Tableau username."
          call: "tableau.get-trusted-ticket"
          with:
            username: "{{username}}"
          outputParameters:
            - name: ticket
              type: string
              mapping: "$"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://tableau.chewy.com"
      authentication:
        type: basic
        username: "$secrets.tableau_admin_user"
        password: "$secrets.tableau_admin_password"
      resources:
        - name: trusted
          path: "/trusted"
          operations:
            - name: get-trusted-ticket
              method: POST

Sends SMS notifications to Chewy customers via Twilio for order confirmations, shipping updates, and delivery alerts.

naftiko: "0.5"
info:
  label: "Twilio Order SMS Notification Sender"
  description: "Sends SMS notifications to Chewy customers via Twilio for order confirmations, shipping updates, and delivery alerts."
  tags:
    - notifications
    - sms
    - twilio
capability:
  exposes:
    - type: mcp
      namespace: customer-notifications
      port: 8080
      tools:
        - name: send-order-sms
          description: "Send an SMS notification to a customer via Twilio."
          inputParameters:
            - name: phone_number
              in: body
              type: string
              description: "Customer phone number in E.164 format."
            - name: message
              in: body
              type: string
              description: "SMS message body."
          call: "twilio.send-message"
          with:
            To: "{{phone_number}}"
            Body: "{{message}}"
            From: "+18886337569"
          outputParameters:
            - name: message_sid
              type: string
              mapping: "$.sid"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: twilio
      baseUri: "https://api.twilio.com/2010-04-01/Accounts/$secrets.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-message
              method: POST

Onboards new pet product vendors by creating a Coupa supplier profile, setting up EDI integration, provisioning a Salesforce partner account, and assigning training in Pluralsight.

naftiko: "0.5"
info:
  label: "Vendor Onboarding Orchestrator"
  description: "Onboards new pet product vendors by creating a Coupa supplier profile, setting up EDI integration, provisioning a Salesforce partner account, and assigning training in Pluralsight."
  tags:
    - vendor-management
    - onboarding
    - coupa
    - salesforce
    - pluralsight
capability:
  exposes:
    - type: mcp
      namespace: vendor-onboarding
      port: 8080
      tools:
        - name: onboard-vendor
          description: "Orchestrate vendor onboarding across Coupa, EDI, Salesforce, and Pluralsight."
          inputParameters:
            - name: vendor_name
              in: body
              type: string
              description: "Vendor company name."
            - name: contact_email
              in: body
              type: string
              description: "Vendor contact email."
            - name: product_categories
              in: body
              type: string
              description: "Product categories (food, treats, toys, health)."
          steps:
            - name: create-supplier
              type: call
              call: "coupa.create-supplier"
              with:
                name: "{{vendor_name}}"
                contact_email: "{{contact_email}}"
                categories: "{{product_categories}}"
            - name: setup-edi
              type: call
              call: "edi.provision-partner"
              with:
                supplier_id: "{{create-supplier.supplier_id}}"
                partner_name: "{{vendor_name}}"
            - name: create-partner-account
              type: call
              call: "salesforce.create-account"
              with:
                name: "{{vendor_name}}"
                type: "Vendor"
                email: "{{contact_email}}"
                supplier_id: "{{create-supplier.supplier_id}}"
            - name: assign-training
              type: call
              call: "pluralsight.assign-channel"
              with:
                email: "{{contact_email}}"
                channel_id: "chewy-vendor-portal-training"
  consumes:
    - type: http
      namespace: coupa
      baseUri: "https://chewy.coupahost.com/api"
      authentication:
        type: bearer
        token: "$secrets.coupa_api_token"
      resources:
        - name: suppliers
          path: "/suppliers"
          operations:
            - name: create-supplier
              method: POST
    - type: http
      namespace: edi
      baseUri: "https://edi-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.edi_api_token"
      resources:
        - name: partners
          path: "/partners"
          operations:
            - name: provision-partner
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: create-account
              method: POST
    - type: http
      namespace: pluralsight
      baseUri: "https://api.pluralsight.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: assignments
          path: "/channel-assignments"
          operations:
            - name: assign-channel
              method: POST

Verifies the status of Veritas Cluster backup jobs for Chewy's database and application clusters.

naftiko: "0.5"
info:
  label: "Veritas Cluster Backup Verification"
  description: "Verifies the status of Veritas Cluster backup jobs for Chewy's database and application clusters."
  tags:
    - infrastructure
    - backup
    - veritas
capability:
  exposes:
    - type: mcp
      namespace: backup-verification
      port: 8080
      tools:
        - name: check-backup-status
          description: "Verify Veritas Cluster backup job status."
          inputParameters:
            - name: cluster_name
              in: body
              type: string
              description: "Cluster name."
            - name: backup_date
              in: body
              type: string
              description: "Backup date."
          call: "veritas.get-backup-status"
          with:
            cluster: "{{cluster_name}}"
            date: "{{backup_date}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.job.status"
            - name: completion_pct
              type: number
              mapping: "$.job.completion_pct"
            - name: data_size_gb
              type: number
              mapping: "$.job.data_size_gb"
  consumes:
    - type: http
      namespace: veritas
      baseUri: "https://veritas.chewy.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.veritas_token"
      resources:
        - name: backup-jobs
          path: "/clusters/{{cluster}}/backups"
          inputParameters:
            - name: cluster
              in: path
          operations:
            - name: get-backup-status
              method: GET

Onboards vet clinic partners by creating accounts in Salesforce, provisioning API credentials in Okta, setting up EDI integration, and sending welcome kits via email.

naftiko: "0.5"
info:
  label: "Vet Clinic Partnership Onboarding Pipeline"
  description: "Onboards vet clinic partners by creating accounts in Salesforce, provisioning API credentials in Okta, setting up EDI integration, and sending welcome kits via email."
  tags:
    - partnerships
    - veterinary
    - salesforce
    - okta
capability:
  exposes:
    - type: mcp
      namespace: vet-partnership
      port: 8080
      tools:
        - name: onboard-vet-clinic
          description: "Orchestrate vet clinic partner onboarding across Salesforce, Okta, EDI, and email."
          inputParameters:
            - name: clinic_name
              in: body
              type: string
              description: "Veterinary clinic name."
            - name: contact_email
              in: body
              type: string
              description: "Primary contact email."
            - name: license_number
              in: body
              type: string
              description: "Veterinary license number."
          steps:
            - name: create-account
              type: call
              call: "salesforce.create-partner-account"
              with:
                name: "{{clinic_name}}"
                type: "Vet_Partner"
                email: "{{contact_email}}"
                license: "{{license_number}}"
            - name: provision-api
              type: call
              call: "okta.create-app-user"
              with:
                email: "{{contact_email}}"
                group: "Vet_Partners_API"
                app: "chewy-partner-portal"
            - name: setup-integration
              type: call
              call: "edi.provision-partner"
              with:
                partner_id: "{{create-account.account_id}}"
                partner_type: "veterinary"
            - name: send-welcome
              type: call
              call: "ses.send-email"
              with:
                to: "{{contact_email}}"
                subject: "Welcome to Chewy Vet Partner Program - {{clinic_name}}"
                body: "Welcome to the Chewy Vet Partner program! Your API credentials and partner portal access details are enclosed. Partner ID: {{create-account.account_id}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://chewy.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: create-partner-account
              method: POST
    - type: http
      namespace: okta
      baseUri: "https://chewy.okta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.okta_api_token"
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-app-user
              method: POST
    - type: http
      namespace: edi
      baseUri: "https://edi-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.edi_api_token"
      resources:
        - name: partners
          path: "/partners"
          operations:
            - name: provision-partner
              method: POST
    - type: http
      namespace: ses
      baseUri: "https://email.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: emails
          path: "/v2/email/outbound-emails"
          operations:
            - name: send-email
              method: POST

Plans warehouse capacity by querying Snowflake for volume projections, checking SAP HANA for current utilization, updating capacity targets, and publishing forecasts in Tableau.

naftiko: "0.5"
info:
  label: "Warehouse Capacity Planning Pipeline"
  description: "Plans warehouse capacity by querying Snowflake for volume projections, checking SAP HANA for current utilization, updating capacity targets, and publishing forecasts in Tableau."
  tags:
    - capacity-planning
    - warehousing
    - snowflake
    - sap-hana
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: capacity-planning
      port: 8080
      tools:
        - name: plan-warehouse-capacity
          description: "Orchestrate warehouse capacity planning across Snowflake, SAP HANA, and Tableau."
          inputParameters:
            - name: warehouse_id
              in: body
              type: string
              description: "Fulfillment center ID."
            - name: planning_horizon
              in: body
              type: integer
              description: "Planning horizon in weeks."
          steps:
            - name: get-projections
              type: call
              call: "snowflake.query-projections"
              with:
                statement: "SELECT * FROM VOLUME_PROJECTIONS WHERE warehouse_id = '{{warehouse_id}}' AND week_offset <= {{planning_horizon}}"
                warehouse: "CHEWY_OPERATIONS_WH"
            - name: get-utilization
              type: call
              call: "sap-hana.get-capacity"
              with:
                warehouse_id: "{{warehouse_id}}"
            - name: update-targets
              type: call
              call: "sap-hana.update-capacity-targets"
              with:
                warehouse_id: "{{warehouse_id}}"
                projections: "{{get-projections.data}}"
                current_utilization: "{{get-utilization.utilization_pct}}"
            - name: publish-forecast
              type: call
              call: "tableau.refresh-workbook"
              with:
                workbook_id: "warehouse-capacity"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-projections
              method: POST
    - type: http
      namespace: sap-hana
      baseUri: "https://chewy-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: capacity
          path: "/warehouse-capacity"
          operations:
            - name: get-capacity
              method: GET
            - name: update-capacity-targets
              method: PUT
    - type: http
      namespace: tableau
      baseUri: "https://tableau.chewy.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: workbooks
          path: "/sites/default/workbooks/{{workbook_id}}/refresh"
          inputParameters:
            - name: workbook_id
              in: path
          operations:
            - name: refresh-workbook
              method: POST

On fulfillment center incident, queries Datadog for system health, creates a Jira ticket, pages the on-call engineer via PagerDuty, and posts a status update to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Warehouse Incident Response Orchestrator"
  description: "On fulfillment center incident, queries Datadog for system health, creates a Jira ticket, pages the on-call engineer via PagerDuty, and posts a status update to Microsoft Teams."
  tags:
    - incident-response
    - fulfillment
    - datadog
    - jira
    - pagerduty
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: warehouse-incident
      port: 8080
      tools:
        - name: respond-to-incident
          description: "Orchestrate warehouse incident response across Datadog, Jira, PagerDuty, and Teams."
          inputParameters:
            - name: warehouse_id
              in: body
              type: string
              description: "Fulfillment center ID."
            - name: severity
              in: body
              type: string
              description: "Incident severity (P1, P2, P3)."
            - name: description
              in: body
              type: string
              description: "Incident description."
          steps:
            - name: check-health
              type: call
              call: "datadog.get-service-status"
              with:
                service: "warehouse-{{warehouse_id}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "WAREHOUSE"
                summary: "{{severity}} - FC {{warehouse_id}}: {{description}}"
                description: "Warehouse: {{warehouse_id}}\nSeverity: {{severity}}\nSystem Health: {{check-health.status}}\nDescription: {{description}}"
                issuetype: "Incident"
            - name: page-oncall
              type: call
              call: "pagerduty.create-incident"
              with:
                service_id: "warehouse-ops"
                title: "{{severity}} FC {{warehouse_id}}: {{description}}"
                body: "Jira: {{create-ticket.key}}"
            - name: post-status
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "fulfillment-ops"
                channel: "incidents"
                text: "{{severity}} INCIDENT FC {{warehouse_id}}: {{description}}. Jira: {{create-ticket.key}}. On-call paged."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: services
          path: "/check_run"
          operations:
            - name: get-service-status
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://chewy.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST

Monitors DynamoDB inventory levels at fulfillment centers, triggers Coupa purchase requisitions when stock drops below thresholds, and notifies supply chain via Teams.

naftiko: "0.5"
info:
  label: "Warehouse Inventory Reorder Pipeline"
  description: "Monitors DynamoDB inventory levels at fulfillment centers, triggers Coupa purchase requisitions when stock drops below thresholds, and notifies supply chain via Teams."
  tags:
    - supply-chain
    - inventory
    - dynamodb
    - coupa
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: inventory-management
      port: 8080
      tools:
        - name: check-and-reorder
          description: "Check inventory in DynamoDB, create Coupa requisitions for low stock, and notify supply chain."
          inputParameters:
            - name: fulfillment_center
              in: body
              type: string
              description: "Fulfillment center code."
            - name: product_category
              in: body
              type: string
              description: "Product category to check."
          steps:
            - name: check-levels
              type: call
              call: "dynamodb.query-items"
              with:
                table_name: "chewy_inventory"
                key_condition: "fc_code = :fc AND category = :cat"
                expression_values: "{\":fc\": \"{{fulfillment_center}}\", \":cat\": \"{{product_category}}\"}"
            - name: create-requisition
              type: call
              call: "coupa.create-requisition"
              with:
                supplier_id: "{{check-levels.preferred_supplier}}"
                items: "{{check-levels.low_stock_items}}"
                ship_to: "{{fulfillment_center}}"
            - name: notify-supply-chain
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "supply_chain_ops"
                text: "Reorder triggered for FC {{fulfillment_center}} ({{product_category}}). Coupa requisition: {{create-requisition.id}}."
  consumes:
    - type: http
      namespace: dynamodb
      baseUri: "https://dynamodb.us-east-1.amazonaws.com"
      authentication:
        type: aws-sig-v4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: items
          path: "/"
          operations:
            - name: query-items
              method: POST
    - type: http
      namespace: coupa
      baseUri: "https://chewy.coupahost.com/api"
      authentication:
        type: bearer
        token: "$secrets.coupa_api_token"
      resources:
        - name: requisitions
          path: "/requisitions"
          operations:
            - name: create-requisition
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Optimizes warehouse shift schedules by pulling volume forecasts from Snowflake, checking worker availability in Workday, generating schedules, and posting shifts in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Warehouse Worker Scheduling Orchestrator"
  description: "Optimizes warehouse shift schedules by pulling volume forecasts from Snowflake, checking worker availability in Workday, generating schedules, and posting shifts in Microsoft Teams."
  tags:
    - workforce-management
    - scheduling
    - snowflake
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: shift-scheduling
      port: 8080
      tools:
        - name: optimize-schedules
          description: "Orchestrate warehouse shift scheduling across Snowflake, Workday, and Teams."
          inputParameters:
            - name: warehouse_id
              in: body
              type: string
              description: "Fulfillment center ID."
            - name: week_start
              in: body
              type: string
              description: "Week start date in YYYY-MM-DD."
          steps:
            - name: get-forecast
              type: call
              call: "snowflake.query-volume-forecast"
              with:
                statement: "SELECT * FROM VOLUME_FORECAST WHERE warehouse_id = '{{warehouse_id}}' AND week_start = '{{week_start}}'"
                warehouse: "CHEWY_OPERATIONS_WH"
            - name: get-availability
              type: call
              call: "workday.get-worker-availability"
              with:
                location: "{{warehouse_id}}"
                week: "{{week_start}}"
            - name: generate-schedule
              type: call
              call: "scheduling.optimize-shifts"
              with:
                forecast: "{{get-forecast.data}}"
                available_workers: "{{get-availability.workers}}"
                warehouse_id: "{{warehouse_id}}"
            - name: post-schedule
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "fc-{{warehouse_id}}"
                channel: "schedules"
                text: "Updated schedule for week of {{week_start}}: {{generate-schedule.shift_count}} shifts, {{generate-schedule.worker_count}} workers assigned."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://chewy.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-volume-forecast
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: availability
          path: "/workers/availability"
          operations:
            - name: get-worker-availability
              method: GET
    - type: http
      namespace: scheduling
      baseUri: "https://scheduling-api.chewy.com/v1"
      authentication:
        type: bearer
        token: "$secrets.scheduling_api_token"
      resources:
        - name: shifts
          path: "/optimize"
          operations:
            - name: optimize-shifts
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST

On website performance degradation, checks Dynatrace for bottlenecks, queries Cloudflare for CDN status, creates a Jira incident, and alerts engineering via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Website Performance Degradation Pipeline"
  description: "On website performance degradation, checks Dynatrace for bottlenecks, queries Cloudflare for CDN status, creates a Jira incident, and alerts engineering via Microsoft Teams."
  tags:
    - performance
    - e-commerce
    - dynatrace
    - cloudflare
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: web-performance
      port: 8080
      tools:
        - name: investigate-degradation
          description: "Orchestrate web performance investigation across Dynatrace, Cloudflare, Jira, and Teams."
          inputParameters:
            - name: page_url
              in: body
              type: string
              description: "Affected page URL."
            - name: response_time_ms
              in: body
              type: integer
              description: "Current response time in milliseconds."
          steps:
            - name: check-apm
              type: call
              call: "dynatrace.get-page-health"
              with:
                url: "{{page_url}}"
            - name: check-cdn
              type: call
              call: "cloudflare.get-zone-analytics"
              with:
                zone_id: "chewy.com"
            - name: create-incident
              type: call
              call: "jira.create-issue"
              with:
                project: "PLATFORM"
                summary: "Performance degradation: {{page_url}} - {{response_time_ms}}ms"
                description: "Page: {{page_url}}\nResponse time: {{response_time_ms}}ms\nAPM bottleneck: {{check-apm.bottleneck}}\nCDN status: {{check-cdn.status}}"
                issuetype: "Incident"
            - name: alert-team
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "web-engineering"
                channel: "alerts"
                text: "Performance alert: {{page_url}} at {{response_time_ms}}ms. Jira: {{create-incident.key}}. Bottleneck: {{check-apm.bottleneck}}."
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://chewy.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: metrics
          path: "/metrics/query"
          operations:
            - name: get-page-health
              method: GET
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: analytics
          path: "/zones/{{zone_id}}/analytics/dashboard"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-zone-analytics
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://chewy.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel
              in: path
          operations:
            - name: send-channel-message
              method: POST

Sends order delivery status notifications to customers via WhatsApp Business API.

naftiko: "0.5"
info:
  label: "WhatsApp Order Delivery Notification"
  description: "Sends order delivery status notifications to customers via WhatsApp Business API."
  tags:
    - customer-service
    - notifications
    - whatsapp
capability:
  exposes:
    - type: mcp
      namespace: delivery-notifications
      port: 8080
      tools:
        - name: send-delivery-update
          description: "Send a delivery status update to a customer via WhatsApp."
          inputParameters:
            - name: phone_number
              in: body
              type: string
              description: "Customer phone in E.164 format."
            - name: order_id
              in: body
              type: string
              description: "Order ID."
            - name: status
              in: body
              type: string
              description: "Delivery status (shipped, out_for_delivery, delivered)."
            - name: tracking_url
              in: body
              type: string
              description: "Tracking URL."
          call: "whatsapp.send-message"
          with:
            to: "{{phone_number}}"
            template: "delivery_update"
            parameters: "[\"{{order_id}}\", \"{{status}}\", \"{{tracking_url}}\"]"
          outputParameters:
            - name: message_id
              type: string
              mapping: "$.messages[0].id"
  consumes:
    - type: http
      namespace: whatsapp
      baseUri: "https://graph.facebook.com/v18.0/{{phone_number_id}}"
      authentication:
        type: bearer
        token: "$secrets.whatsapp_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST

Searches the Workday employee directory by name or department.

naftiko: "0.5"
info:
  label: "Workday Employee Directory"
  description: "Searches the Workday employee directory by name or department."
  tags:
    - hr
    - directory
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: search-employees
          description: "Search for employees in Workday."
          inputParameters:
            - name: search_term
              in: body
              type: string
              description: "Search term."
          call: "workday.search-workers"
          with:
            search: "{{search_term}}"
          outputParameters:
            - name: employees
              type: array
              mapping: "$.workers"
            - name: total_count
              type: integer
              mapping: "$.total"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers"
          operations:
            - name: search-workers
              method: GET

Retrieves payroll summary data from Workday Payroll for HR and finance teams.

naftiko: "0.5"
info:
  label: "Workday Payroll Summary Report"
  description: "Retrieves payroll summary data from Workday Payroll for HR and finance teams."
  tags:
    - hr
    - payroll
    - workday
capability:
  exposes:
    - type: mcp
      namespace: payroll-reporting
      port: 8080
      tools:
        - name: get-payroll-summary
          description: "Fetch payroll summary from Workday Payroll."
          inputParameters:
            - name: pay_period
              in: body
              type: string
              description: "Pay period."
            - name: department
              in: body
              type: string
              description: "Department filter."
          call: "workday-payroll.get-summary"
          with:
            period: "{{pay_period}}"
            department: "{{department}}"
          outputParameters:
            - name: total_gross
              type: number
              mapping: "$.summary.total_gross_pay"
            - name: headcount
              type: integer
              mapping: "$.summary.employee_count"
  consumes:
    - type: http
      namespace: workday-payroll
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: payroll
          path: "/payroll/summaries"
          operations:
            - name: get-summary
              method: GET

Retrieves recruiting pipeline data from Workday Recruiting for fulfillment center and customer service hiring.

naftiko: "0.5"
info:
  label: "Workday Recruiting Pipeline Tracker"
  description: "Retrieves recruiting pipeline data from Workday Recruiting for fulfillment center and customer service hiring."
  tags:
    - hr
    - recruiting
    - workday
capability:
  exposes:
    - type: mcp
      namespace: recruiting
      port: 8080
      tools:
        - name: get-recruiting-pipeline
          description: "Fetch recruiting pipeline data from Workday Recruiting."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "Requisition ID."
          call: "workday-recruiting.get-pipeline"
          with:
            requisition_id: "{{requisition_id}}"
          outputParameters:
            - name: total_applicants
              type: integer
              mapping: "$.pipeline.total"
            - name: stage_counts
              type: object
              mapping: "$.pipeline.stages"
  consumes:
    - type: http
      namespace: workday-recruiting
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/recruiting/requisitions/{{requisition_id}}/pipeline"
          inputParameters:
            - name: requisition_id
              in: path
          operations:
            - name: get-pipeline
              method: GET

Creates a Zoom meeting for vendor partnership discussions and sends calendar invites via Outlook.

naftiko: "0.5"
info:
  label: "Zoom Vendor Partnership Meeting"
  description: "Creates a Zoom meeting for vendor partnership discussions and sends calendar invites via Outlook."
  tags:
    - partnerships
    - meetings
    - zoom
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: vendor-meetings
      port: 8080
      tools:
        - name: schedule-vendor-meeting
          description: "Schedule a Zoom meeting with a vendor and send Outlook invites."
          inputParameters:
            - name: vendor_name
              in: body
              type: string
              description: "Vendor name."
            - name: date_time
              in: body
              type: string
              description: "Meeting date/time."
            - name: attendees
              in: body
              type: string
              description: "Attendee emails."
            - name: topic
              in: body
              type: string
              description: "Meeting topic."
          steps:
            - name: create-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                topic: "{{topic}} - {{vendor_name}}"
                start_time: "{{date_time}}"
                duration: 60
            - name: send-invite
              type: call
              call: "outlook.create-event"
              with:
                subject: "{{topic}} - {{vendor_name}}"
                start_time: "{{date_time}}"
                body: "Join Zoom: {{create-meeting.join_url}}"
                attendees: "{{attendees}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: meetings
          path: "/users/me/meetings"
          operations:
            - name: create-meeting
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: events
          path: "/me/events"
          operations:
            - name: create-event
              method: POST