Chewy Capabilities
Naftiko 0.5 capability definitions for Chewy - 100 capabilities showing integration workflows and service orchestrations.
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