Wayfair Capabilities
Naftiko 0.5 capability definitions for Wayfair - 100 capabilities showing integration workflows and service orchestrations.
Fetches experiment results from the internal experimentation platform, pulls conversion metrics from Google Analytics, computes statistical significance, and creates a summary Jira ticket for the product team.
naftiko: "0.5"
info:
label: "A/B Test Results Analyzer"
description: "Fetches experiment results from the internal experimentation platform, pulls conversion metrics from Google Analytics, computes statistical significance, and creates a summary Jira ticket for the product team."
tags:
- e-commerce
- experimentation
- google-analytics
- jira
- data-science
capability:
exposes:
- type: mcp
namespace: experiment-analysis
port: 8080
tools:
- name: analyze-experiment
description: "Given an experiment ID, fetch results from the experimentation platform, pull GA conversion data, and create a Jira summary ticket."
inputParameters:
- name: experiment_id
in: body
type: string
description: "The internal experiment/A/B test ID."
- name: primary_metric
in: body
type: string
description: "The primary success metric to evaluate (e.g., conversion_rate, revenue_per_session)."
steps:
- name: get-experiment
type: call
call: "experimentation-api.get-experiment"
with:
experiment_id: "{{experiment_id}}"
- name: get-ga-conversions
type: call
call: "ga.get-experiment-report"
with:
experiment_id: "{{experiment_id}}"
metric: "{{primary_metric}}"
- name: create-results-ticket
type: call
call: "jira.create-issue"
with:
project: "EXP"
issue_type: "Story"
summary: "Experiment Results: {{get-experiment.name}} — {{get-experiment.status}}"
description: "Experiment: {{get-experiment.name}}\nVariants: {{get-experiment.variant_count}}\nTraffic Split: {{get-experiment.traffic_pct}}%\nPrimary Metric ({{primary_metric}}): Control={{get-ga-conversions.control_value}}, Treatment={{get-ga-conversions.treatment_value}}\nLift: {{get-ga-conversions.lift_pct}}%\nStatistical Significance: {{get-ga-conversions.p_value}}"
consumes:
- type: http
namespace: experimentation-api
baseUri: "https://experimentation.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.experimentation_token"
resources:
- name: experiments
path: "/experiments/{{experiment_id}}"
inputParameters:
- name: experiment_id
in: path
operations:
- name: get-experiment
method: GET
- type: http
namespace: ga
baseUri: "https://analyticsreporting.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: reports
path: "/reports:batchGet"
operations:
- name: get-experiment-report
method: POST
- type: http
namespace: jira
baseUri: "https://wayfair.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
Detects abandoned carts from the e-commerce platform, looks up the customer profile, sends a personalized recovery email via MailChimp, and creates a Facebook retargeting audience segment for the cart items.
naftiko: "0.5"
info:
label: "Abandoned Cart Recovery Orchestrator"
description: "Detects abandoned carts from the e-commerce platform, looks up the customer profile, sends a personalized recovery email via MailChimp, and creates a Facebook retargeting audience segment for the cart items."
tags:
- e-commerce
- marketing
- customer-experience
- mailchimp
- facebook
- personalization
capability:
exposes:
- type: mcp
namespace: cart-recovery
port: 8080
tools:
- name: recover-abandoned-cart
description: "Given a cart ID and customer ID, retrieve the abandoned cart, look up the customer, send a recovery email, and add the customer to a Facebook retargeting audience."
inputParameters:
- name: cart_id
in: body
type: string
description: "The abandoned cart session ID."
- name: customer_id
in: body
type: string
description: "The Wayfair customer ID."
steps:
- name: get-cart
type: call
call: "cart-api.get-cart"
with:
cart_id: "{{cart_id}}"
- name: get-customer
type: call
call: "customer-api.get-customer"
with:
customer_id: "{{customer_id}}"
- name: send-recovery-email
type: call
call: "mailchimp.send-transactional"
with:
template_name: "abandoned-cart-recovery"
email: "{{get-customer.email}}"
merge_vars: "{\"FIRST_NAME\":\"{{get-customer.first_name}}\",\"CART_URL\":\"https://www.wayfair.com/cart/{{cart_id}}\",\"ITEMS\":\"{{get-cart.item_summary}}\",\"TOTAL\":\"{{get-cart.total}}\"}"
- name: add-to-retargeting
type: call
call: "facebook.add-to-audience"
with:
audience_id: "abandoned_cart_retarget"
email_hash: "{{get-customer.email_hash}}"
category: "{{get-cart.primary_category}}"
consumes:
- type: http
namespace: cart-api
baseUri: "https://cart-api.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.cart_api_token"
resources:
- name: carts
path: "/carts/{{cart_id}}"
inputParameters:
- name: cart_id
in: path
operations:
- name: get-cart
method: GET
- type: http
namespace: customer-api
baseUri: "https://customer-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.customer_api_token"
resources:
- name: customers
path: "/customers/{{customer_id}}"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.facebook_marketing_token"
resources:
- name: audiences
path: "/{{audience_id}}/users"
inputParameters:
- name: audience_id
in: path
operations:
- name: add-to-audience
method: POST
Retrieves metadata for an object stored in an Amazon S3 bucket including size, content type, last modified date, and storage class. Used by data engineering to inspect catalog feed files and image assets.
naftiko: "0.5"
info:
label: "Amazon S3 Object Metadata"
description: "Retrieves metadata for an object stored in an Amazon S3 bucket including size, content type, last modified date, and storage class. Used by data engineering to inspect catalog feed files and image assets."
tags:
- data
- storage
- amazon-s3
capability:
exposes:
- type: mcp
namespace: object-storage
port: 8080
tools:
- name: get-object-metadata
description: "Retrieve S3 object metadata by bucket and key. Returns size, content type, last modified, and storage class."
inputParameters:
- name: bucket
in: body
type: string
description: "The S3 bucket name."
- name: object_key
in: body
type: string
description: "The full object key path."
call: "s3.head-object"
with:
bucket: "{{bucket}}"
object_key: "{{object_key}}"
outputParameters:
- name: content_length
type: number
mapping: "$.ContentLength"
- name: content_type
type: string
mapping: "$.ContentType"
- name: last_modified
type: string
mapping: "$.LastModified"
- name: storage_class
type: string
mapping: "$.StorageClass"
consumes:
- type: http
namespace: s3
baseUri: "https://s3.us-east-1.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_session_token"
resources:
- name: objects
path: "/{{bucket}}/{{object_key}}"
inputParameters:
- name: bucket
in: path
- name: object_key
in: path
operations:
- name: head-object
method: HEAD
Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.
naftiko: "0.5"
info:
label: "Annual Compliance Certification Orchestrator"
description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
tags:
- compliance
- hr
- legal
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-annual-compliance-certification-orchestrator
description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Annual Compliance Certification Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.
naftiko: "0.5"
info:
label: "API Lifecycle Management Orchestrator"
description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
tags:
- engineering
- api
- operations
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: run-api-lifecycle-management-orchestrator
description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed API Lifecycle Management Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Fetches recent GitHub Actions workflow run data, queries SonarQube for code quality metrics, pulls deployment frequency from the internal deploy tracker, and compiles a weekly engineering health report in Google Drive.
naftiko: "0.5"
info:
label: "CI/CD Pipeline Health Dashboard"
description: "Fetches recent GitHub Actions workflow run data, queries SonarQube for code quality metrics, pulls deployment frequency from the internal deploy tracker, and compiles a weekly engineering health report in Google Drive."
tags:
- engineering
- ci-cd
- github-actions
- sonarqube
- google-drive
capability:
exposes:
- type: mcp
namespace: cicd-health
port: 8080
tools:
- name: generate-pipeline-health-report
description: "Given a repository name and date range, compile CI/CD pipeline metrics, code quality data, and deployment frequency into a report."
inputParameters:
- name: repository
in: body
type: string
description: "The GitHub repository (e.g., wayfair-incubator/storefront)."
- name: start_date
in: body
type: string
description: "Report start date (YYYY-MM-DD)."
- name: end_date
in: body
type: string
description: "Report end date (YYYY-MM-DD)."
steps:
- name: get-workflow-runs
type: call
call: "github.list-workflow-runs"
with:
repository: "{{repository}}"
created: "{{start_date}}..{{end_date}}"
- name: get-code-quality
type: call
call: "sonarqube.get-project-measures"
with:
project_key: "{{repository}}"
metrics: "bugs,vulnerabilities,code_smells,coverage,duplicated_lines_density"
- name: create-report
type: call
call: "gdrive.create-document"
with:
title: "CI/CD Health Report — {{repository}} — {{start_date}} to {{end_date}}"
folder_id: "engineering_reports"
content: "Total Runs: {{get-workflow-runs.total_count}} | Success Rate: {{get-workflow-runs.success_rate}}% | Avg Duration: {{get-workflow-runs.avg_duration_min}}m | Bugs: {{get-code-quality.bugs}} | Vulnerabilities: {{get-code-quality.vulnerabilities}} | Coverage: {{get-code-quality.coverage}}% | Code Smells: {{get-code-quality.code_smells}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/{{repository}}/actions/runs"
inputParameters:
- name: repository
in: path
operations:
- name: list-workflow-runs
method: GET
- type: http
namespace: sonarqube
baseUri: "https://sonarqube.wayfair.com/api"
authentication:
type: bearer
token: "$secrets.sonarqube_token"
resources:
- name: measures
path: "/measures/component"
operations:
- name: get-project-measures
method: GET
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
operations:
- name: create-document
method: POST
Retrieves the current state of an AWS CloudWatch alarm by alarm name. Returns the alarm state, reason, metric name, and threshold. Used by SRE teams for incident triage.
naftiko: "0.5"
info:
label: "CloudWatch Alarm Status"
description: "Retrieves the current state of an AWS CloudWatch alarm by alarm name. Returns the alarm state, reason, metric name, and threshold. Used by SRE teams for incident triage."
tags:
- operations
- monitoring
- cloudwatch
- amazon-web-services
capability:
exposes:
- type: mcp
namespace: aws-monitoring
port: 8080
tools:
- name: get-alarm-status
description: "Look up a CloudWatch alarm by name. Returns current state, state reason, metric name, and threshold value."
inputParameters:
- name: alarm_name
in: body
type: string
description: "The CloudWatch alarm name."
call: "cloudwatch.describe-alarm"
with:
alarm_name: "{{alarm_name}}"
outputParameters:
- name: state
type: string
mapping: "$.MetricAlarms[0].StateValue"
- name: state_reason
type: string
mapping: "$.MetricAlarms[0].StateReason"
- name: metric_name
type: string
mapping: "$.MetricAlarms[0].MetricName"
- name: threshold
type: number
mapping: "$.MetricAlarms[0].Threshold"
consumes:
- type: http
namespace: cloudwatch
baseUri: "https://monitoring.us-east-1.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_session_token"
resources:
- name: alarms
path: "/?Action=DescribeAlarms&AlarmNames.member.1={{alarm_name}}"
inputParameters:
- name: alarm_name
in: path
operations:
- name: describe-alarm
method: GET
Retrieves a Confluence wiki page.
naftiko: "0.5"
info:
label: "Confluence Page Viewer"
description: "Retrieves a Confluence wiki page."
tags:
- collaboration
- confluence
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-confluence
description: "Retrieves a Confluence wiki page."
inputParameters:
- name: entity_id
in: body
type: string
description: "The confluence page viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.wayfair.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: confluence
path: "/confluence/page/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-confluence
method: GET
Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.
naftiko: "0.5"
info:
label: "Cross-Functional Project Kickoff Orchestrator"
description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
tags:
- project-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: run-cross-functional-project-kickoff-orchestrator
description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
After order delivery, fetches the order details, generates cross-sell recommendations using the ML model, creates a personalized email campaign in MailChimp, and logs the recommendation event to Google Analytics.
naftiko: "0.5"
info:
label: "Cross-Sell Recommendation Email Pipeline"
description: "After order delivery, fetches the order details, generates cross-sell recommendations using the ML model, creates a personalized email campaign in MailChimp, and logs the recommendation event to Google Analytics."
tags:
- e-commerce
- marketing
- personalization
- machine-learning
- mailchimp
- google-analytics
capability:
exposes:
- type: mcp
namespace: cross-sell
port: 8080
tools:
- name: send-cross-sell-recommendations
description: "Given an order ID, fetch order details, generate cross-sell suggestions, send a personalized email, and log the event to GA."
inputParameters:
- name: order_id
in: body
type: string
description: "The delivered order ID."
- name: customer_id
in: body
type: string
description: "The Wayfair customer ID."
steps:
- name: get-order
type: call
call: "orders-api.get-order"
with:
order_id: "{{order_id}}"
- name: get-recommendations
type: call
call: "ml-reco.cross-sell"
with:
purchased_skus: "{{get-order.sku_list}}"
customer_id: "{{customer_id}}"
count: "6"
- name: send-email
type: call
call: "mailchimp.send-transactional"
with:
template_name: "cross-sell-post-delivery"
email: "{{get-order.customer_email}}"
merge_vars: "{\"FIRST_NAME\":\"{{get-order.customer_name}}\",\"ORDER_ID\":\"{{order_id}}\",\"RECOMMENDATIONS\":\"{{get-recommendations.product_cards}}\"}"
- name: log-event
type: call
call: "ga.send-event"
with:
category: "cross-sell"
action: "email_sent"
label: "{{order_id}}"
value: "{{get-recommendations.count}}"
consumes:
- type: http
namespace: orders-api
baseUri: "https://orders-api.wayfair.com/api/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
- type: http
namespace: ml-reco
baseUri: "https://ml-platform.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.ml_platform_token"
resources:
- name: cross-sell
path: "/models/cross-sell/predict"
operations:
- name: cross-sell
method: POST
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
- type: http
namespace: ga
baseUri: "https://www.google-analytics.com"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: collect
path: "/mp/collect"
operations:
- name: send-event
method: POST
Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.
naftiko: "0.5"
info:
label: "Customer Data Privacy Request Handler"
description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
tags:
- compliance
- privacy
- customer-service
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-customer-data-privacy-request-handler
description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Data Privacy Request Handler for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.
naftiko: "0.5"
info:
label: "Customer Journey Mapping Orchestrator"
description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
tags:
- customer-experience
- analytics
- product-management
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: run-customer-journey-mapping-orchestrator
description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Journey Mapping Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Evaluates a customer's loyalty tier by fetching order history, calculating lifetime spend, updating the customer tier in the CRM, and sending a tier notification email through MailChimp.
naftiko: "0.5"
info:
label: "Customer Loyalty Tier Evaluation"
description: "Evaluates a customer's loyalty tier by fetching order history, calculating lifetime spend, updating the customer tier in the CRM, and sending a tier notification email through MailChimp."
tags:
- e-commerce
- customer-experience
- loyalty
- salesforce
- mailchimp
capability:
exposes:
- type: mcp
namespace: loyalty-program
port: 8080
tools:
- name: evaluate-loyalty-tier
description: "Given a customer ID, calculate lifetime spend, determine the loyalty tier, update the CRM, and send a notification email."
inputParameters:
- name: customer_id
in: body
type: string
description: "The Wayfair customer ID."
steps:
- name: get-order-history
type: call
call: "orders-api.get-customer-orders"
with:
customer_id: "{{customer_id}}"
- name: get-customer
type: call
call: "customer-api.get-customer"
with:
customer_id: "{{customer_id}}"
- name: update-crm-tier
type: call
call: "salesforce.update-contact"
with:
contact_id: "{{get-customer.salesforce_id}}"
loyalty_tier: "{{get-order-history.calculated_tier}}"
lifetime_value: "{{get-order-history.lifetime_spend}}"
- name: send-tier-email
type: call
call: "mailchimp.send-transactional"
with:
template_name: "loyalty-tier-update"
email: "{{get-customer.email}}"
merge_vars: "{\"FIRST_NAME\":\"{{get-customer.first_name}}\",\"NEW_TIER\":\"{{get-order-history.calculated_tier}}\",\"LIFETIME_SPEND\":\"{{get-order-history.lifetime_spend}}\",\"BENEFITS_URL\":\"https://www.wayfair.com/loyalty/{{get-order-history.calculated_tier}}\"}"
consumes:
- type: http
namespace: orders-api
baseUri: "https://orders-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.orders_api_token"
resources:
- name: customer-orders
path: "/customers/{{customer_id}}/orders"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer-orders
method: GET
- type: http
namespace: customer-api
baseUri: "https://customer-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.customer_api_token"
resources:
- name: customers
path: "/customers/{{customer_id}}"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
- type: http
namespace: salesforce
baseUri: "https://wayfair.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contacts
path: "/sobjects/Contact/{{contact_id}}"
inputParameters:
- name: contact_id
in: path
operations:
- name: update-contact
method: PATCH
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Retrieves order history for a customer.
naftiko: "0.5"
info:
label: "Customer Order History"
description: "Retrieves order history for a customer."
tags:
- e-commerce
- customer-service
capability:
exposes:
- type: mcp
namespace: e-commerce
port: 8080
tools:
- name: get-customer
description: "Retrieves order history for a customer."
inputParameters:
- name: entity_id
in: body
type: string
description: "The customer order history identifier."
call: "e-commerce-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: e-commerce-api
baseUri: "https://api.wayfair.com/e-commerce/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: customer
path: "/customer/order/history/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-customer
method: GET
Processes a customer return by looking up the order, creating a return authorization, issuing a refund, updating the Zendesk ticket, and notifying the customer via email.
naftiko: "0.5"
info:
label: "Customer Return Processing"
description: "Processes a customer return by looking up the order, creating a return authorization, issuing a refund, updating the Zendesk ticket, and notifying the customer via email."
tags:
- e-commerce
- customer-service
- returns
- zendesk
- mailchimp
capability:
exposes:
- type: mcp
namespace: returns-processing
port: 8080
tools:
- name: process-return
description: "Given an order ID and Zendesk ticket ID, look up the order, create a return authorization, issue a refund, update the support ticket, and notify the customer."
inputParameters:
- name: order_id
in: body
type: string
description: "The original order ID."
- name: ticket_id
in: body
type: string
description: "The Zendesk support ticket ID."
- name: return_reason
in: body
type: string
description: "Reason for the return (e.g., damaged, wrong_item, not_as_described)."
steps:
- name: get-order
type: call
call: "orders-api.get-order"
with:
order_id: "{{order_id}}"
- name: create-return
type: call
call: "orders-api.create-return-auth"
with:
order_id: "{{order_id}}"
reason: "{{return_reason}}"
- name: issue-refund
type: call
call: "payments-api.create-refund"
with:
order_id: "{{order_id}}"
amount: "{{get-order.total_amount}}"
return_auth_id: "{{create-return.return_auth_id}}"
- name: update-ticket
type: call
call: "zendesk.update-ticket"
with:
ticket_id: "{{ticket_id}}"
status: "solved"
comment: "Return authorized ({{create-return.return_auth_id}}). Refund of ${{get-order.total_amount}} initiated. RMA label sent to customer."
- name: send-return-email
type: call
call: "mailchimp.send-transactional"
with:
template_name: "return-confirmation"
email: "{{get-order.customer_email}}"
merge_vars: "{\"ORDER_ID\":\"{{order_id}}\",\"RETURN_AUTH\":\"{{create-return.return_auth_id}}\",\"REFUND_AMOUNT\":\"{{get-order.total_amount}}\"}"
consumes:
- type: http
namespace: orders-api
baseUri: "https://orders-api.wayfair.com/api/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
- name: returns
path: "/orders/{{order_id}}/returns"
inputParameters:
- name: order_id
in: path
operations:
- name: create-return-auth
method: POST
- type: http
namespace: payments-api
baseUri: "https://payments-api.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.payments_api_token"
resources:
- name: refunds
path: "/refunds"
operations:
- name: create-refund
method: POST
- type: http
namespace: zendesk
baseUri: "https://wayfair.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets/{{ticket_id}}.json"
inputParameters:
- name: ticket_id
in: path
operations:
- name: update-ticket
method: PUT
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
After order delivery, sends a CSAT survey via Google Forms, waits for the response webhook, and updates the customer record with the satisfaction score and routes negative feedback to Zendesk.
naftiko: "0.5"
info:
label: "Customer Satisfaction Survey Pipeline"
description: "After order delivery, sends a CSAT survey via Google Forms, waits for the response webhook, and updates the customer record with the satisfaction score and routes negative feedback to Zendesk."
tags:
- customer-experience
- feedback
- google-forms
- zendesk
- mailchimp
capability:
exposes:
- type: mcp
namespace: csat-survey
port: 8080
tools:
- name: send-post-delivery-survey
description: "Given an order ID and customer email, send a CSAT survey and route the response to the appropriate channel."
inputParameters:
- name: order_id
in: body
type: string
description: "The delivered order ID."
- name: customer_email
in: body
type: string
description: "The customer email address."
- name: customer_name
in: body
type: string
description: "The customer first name."
steps:
- name: get-order
type: call
call: "orders-api.get-order"
with:
order_id: "{{order_id}}"
- name: send-survey-email
type: call
call: "mailchimp.send-transactional"
with:
template_name: "csat-survey"
email: "{{customer_email}}"
merge_vars: "{\"FIRST_NAME\":\"{{customer_name}}\",\"ORDER_ID\":\"{{order_id}}\",\"PRODUCT_NAME\":\"{{get-order.primary_product_name}}\",\"SURVEY_URL\":\"https://forms.wayfair.com/csat/{{order_id}}\"}"
- name: create-feedback-ticket
type: call
call: "zendesk.create-ticket"
with:
subject: "Post-Delivery CSAT Follow-up: Order {{order_id}}"
description: "Survey sent to {{customer_email}} for order {{order_id}} ({{get-order.primary_product_name}}). Monitor for negative responses."
tags: "csat,post-delivery,{{order_id}}"
priority: "low"
consumes:
- type: http
namespace: orders-api
baseUri: "https://orders-api.wayfair.com/api/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
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
- type: http
namespace: zendesk
baseUri: "https://wayfair.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets.json"
operations:
- name: create-ticket
method: POST
Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.
naftiko: "0.5"
info:
label: "Data Governance Review Orchestrator"
description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
tags:
- data-governance
- compliance
- analytics
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: run-data-governance-review-orchestrator
description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Data Governance Review Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Queries Datadog for the current health status and key metrics of a specified Wayfair microservice. Returns error rate, latency p99, and active monitors in alert state.
naftiko: "0.5"
info:
label: "Datadog Service Health Check"
description: "Queries Datadog for the current health status and key metrics of a specified Wayfair microservice. Returns error rate, latency p99, and active monitors in alert state."
tags:
- operations
- monitoring
- datadog
capability:
exposes:
- type: mcp
namespace: platform-monitoring
port: 8080
tools:
- name: get-service-health
description: "Given a Datadog service name, return the current error rate, p99 latency, and any active monitor alerts."
inputParameters:
- name: service_name
in: body
type: string
description: "The Datadog APM service name (e.g., storefront-api, checkout-service)."
call: "datadog.get-service-summary"
with:
service_name: "{{service_name}}"
outputParameters:
- name: error_rate
type: number
mapping: "$.data.attributes.error_rate"
- name: latency_p99
type: number
mapping: "$.data.attributes.latency_p99"
- name: active_alerts
type: number
mapping: "$.data.attributes.alert_count"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: services
path: "/services/{{service_name}}/summary"
inputParameters:
- name: service_name
in: path
operations:
- name: get-service-summary
method: GET
When a shipment status changes, updates the order tracking in the orders API, sends a delivery status email to the customer via MailChimp, and updates the Zendesk ticket if one exists for the order.
naftiko: "0.5"
info:
label: "Delivery Tracking Notification Pipeline"
description: "When a shipment status changes, updates the order tracking in the orders API, sends a delivery status email to the customer via MailChimp, and updates the Zendesk ticket if one exists for the order."
tags:
- logistics
- e-commerce
- shipping
- mailchimp
- zendesk
capability:
exposes:
- type: mcp
namespace: delivery-tracking
port: 8080
tools:
- name: process-tracking-update
description: "Given an order ID, tracking number, and new status, update the order, notify the customer, and update any associated support ticket."
inputParameters:
- name: order_id
in: body
type: string
description: "The Wayfair order ID."
- name: tracking_number
in: body
type: string
description: "The carrier tracking number."
- name: new_status
in: body
type: string
description: "The new shipment status (e.g., in_transit, out_for_delivery, delivered)."
steps:
- name: get-order
type: call
call: "orders-api.get-order"
with:
order_id: "{{order_id}}"
- name: update-tracking
type: call
call: "orders-api.update-tracking"
with:
order_id: "{{order_id}}"
tracking_number: "{{tracking_number}}"
status: "{{new_status}}"
- name: send-status-email
type: call
call: "mailchimp.send-transactional"
with:
template_name: "delivery-status-update"
email: "{{get-order.customer_email}}"
merge_vars: "{\"FIRST_NAME\":\"{{get-order.customer_name}}\",\"ORDER_ID\":\"{{order_id}}\",\"STATUS\":\"{{new_status}}\",\"TRACKING\":\"{{tracking_number}}\"}"
- name: update-support-ticket
type: call
call: "zendesk.search-and-update"
with:
query: "type:ticket tags:order_{{order_id}}"
comment: "Shipment status updated to {{new_status}}. Tracking: {{tracking_number}}"
consumes:
- type: http
namespace: orders-api
baseUri: "https://orders-api.wayfair.com/api/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
- name: tracking
path: "/orders/{{order_id}}/tracking"
inputParameters:
- name: order_id
in: path
operations:
- name: update-tracking
method: PUT
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
- type: http
namespace: zendesk
baseUri: "https://wayfair.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: search
path: "/search.json"
operations:
- name: search-and-update
method: GET
After a GitHub Actions deployment completes, posts a summary to the Microsoft Teams engineering channel, creates a Datadog event marker, and updates the Jira release ticket with deployment details.
naftiko: "0.5"
info:
label: "Deployment Notification Pipeline"
description: "After a GitHub Actions deployment completes, posts a summary to the Microsoft Teams engineering channel, creates a Datadog event marker, and updates the Jira release ticket with deployment details."
tags:
- engineering
- deployment
- github-actions
- microsoft-teams
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: deploy-notify
port: 8080
tools:
- name: notify-deployment
description: "Given a GitHub Actions run ID and Jira release ticket key, post deployment details to Teams, create a Datadog event, and update the Jira ticket."
inputParameters:
- name: run_id
in: body
type: string
description: "The GitHub Actions workflow run ID."
- name: repository
in: body
type: string
description: "The GitHub repository (e.g., wayfair-incubator/storefront)."
- name: jira_ticket
in: body
type: string
description: "The Jira release ticket key (e.g., REL-456)."
steps:
- name: get-run
type: call
call: "github.get-workflow-run"
with:
repository: "{{repository}}"
run_id: "{{run_id}}"
- name: post-teams-message
type: call
call: "msteams.send-channel-message"
with:
channel_id: "engineering-deploys"
text: "Deployment Complete: {{repository}} | Commit: {{get-run.head_sha}} | Status: {{get-run.conclusion}} | Branch: {{get-run.head_branch}} | Run: {{get-run.html_url}}"
- name: create-dd-event
type: call
call: "datadog.create-event"
with:
title: "Deployment: {{repository}}"
text: "SHA: {{get-run.head_sha}} | Branch: {{get-run.head_branch}} | Status: {{get-run.conclusion}}"
tags: "service:{{repository}},env:production"
- name: update-jira
type: call
call: "jira.add-comment"
with:
issue_key: "{{jira_ticket}}"
body: "Deployed to production. SHA: {{get-run.head_sha}}. Status: {{get-run.conclusion}}. Run: {{get-run.html_url}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/{{repository}}/actions/runs/{{run_id}}"
inputParameters:
- name: repository
in: path
- name: run_id
in: path
operations:
- name: get-workflow-run
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/wayfair-eng/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: jira
baseUri: "https://wayfair.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: comments
path: "/issue/{{issue_key}}/comment"
inputParameters:
- name: issue_key
in: path
operations:
- name: add-comment
method: POST
Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.
naftiko: "0.5"
info:
label: "Digital Transformation Progress Orchestrator"
description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
tags:
- strategy
- analytics
- project-management
capability:
exposes:
- type: mcp
namespace: strategy
port: 8080
tools:
- name: run-digital-transformation-progress-orchestrator
description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Digital Transformation Progress Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.
naftiko: "0.5"
info:
label: "Disaster Recovery Test Orchestrator"
description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
tags:
- infrastructure
- operations
- compliance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-disaster-recovery-test-orchestrator
description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Disaster Recovery Test Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Triggers a security scan on a Docker container image, queries SonarQube for dependency vulnerabilities, creates a Jira security ticket for critical findings, and alerts the security team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Docker Container Security Scan Pipeline"
description: "Triggers a security scan on a Docker container image, queries SonarQube for dependency vulnerabilities, creates a Jira security ticket for critical findings, and alerts the security team in Microsoft Teams."
tags:
- security
- engineering
- docker
- sonarqube
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: container-security
port: 8080
tools:
- name: scan-container-image
description: "Given a Docker image tag, scan for vulnerabilities, check SonarQube for dependency issues, create a Jira ticket for critical findings, and alert the security team."
inputParameters:
- name: image_tag
in: body
type: string
description: "The Docker image tag to scan (e.g., registry.wayfair.com/storefront:v2.3.1)."
- name: repository
in: body
type: string
description: "The source code repository for SonarQube lookup."
steps:
- name: scan-image
type: call
call: "container-scan.scan-image"
with:
image: "{{image_tag}}"
- name: get-sonar-vulns
type: call
call: "sonarqube.get-vulnerabilities"
with:
project_key: "{{repository}}"
severities: "CRITICAL,BLOCKER"
- name: create-security-ticket
type: call
call: "jira.create-issue"
with:
project: "SEC"
issue_type: "Bug"
summary: "Container Security: {{image_tag}} — {{scan-image.critical_count}} critical vulnerabilities"
description: "Image: {{image_tag}}\nCritical CVEs: {{scan-image.critical_count}}\nHigh CVEs: {{scan-image.high_count}}\nSonarQube Critical Issues: {{get-sonar-vulns.total}}\nTop CVE: {{scan-image.top_cve}}"
priority: "Critical"
- name: alert-security
type: call
call: "msteams.send-channel-message"
with:
channel_id: "security-alerts"
text: "Container Security Alert: {{image_tag}} | Critical: {{scan-image.critical_count}} | High: {{scan-image.high_count}} | Jira: {{create-security-ticket.key}}"
consumes:
- type: http
namespace: container-scan
baseUri: "https://security-scan.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.security_scan_token"
resources:
- name: scans
path: "/scans"
operations:
- name: scan-image
method: POST
- type: http
namespace: sonarqube
baseUri: "https://sonarqube.wayfair.com/api"
authentication:
type: bearer
token: "$secrets.sonarqube_token"
resources:
- name: issues
path: "/issues/search"
operations:
- name: get-vulnerabilities
method: GET
- type: http
namespace: jira
baseUri: "https://wayfair.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/wayfair-security/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Fetches competitor pricing data from Circana, runs the ML pricing model to calculate optimal price, updates the product price in the catalog API, and logs the change to Google Analytics as a custom event.
naftiko: "0.5"
info:
label: "Dynamic Pricing Update Pipeline"
description: "Fetches competitor pricing data from Circana, runs the ML pricing model to calculate optimal price, updates the product price in the catalog API, and logs the change to Google Analytics as a custom event."
tags:
- e-commerce
- pricing
- machine-learning
- circana
- google-analytics
capability:
exposes:
- type: mcp
namespace: dynamic-pricing
port: 8080
tools:
- name: update-product-price
description: "Given a SKU, fetch competitor pricing intelligence, run the ML pricing model, update the catalog price, and log the change to GA."
inputParameters:
- name: sku
in: body
type: string
description: "The product SKU to reprice."
- name: current_price
in: body
type: number
description: "The current listed price."
- name: category
in: body
type: string
description: "The product category for competitive analysis."
steps:
- name: get-competitor-pricing
type: call
call: "circana.get-pricing-data"
with:
category: "{{category}}"
sku: "{{sku}}"
- name: calculate-optimal-price
type: call
call: "ml-pricing.predict-price"
with:
sku: "{{sku}}"
current_price: "{{current_price}}"
competitor_avg: "{{get-competitor-pricing.average_price}}"
competitor_min: "{{get-competitor-pricing.min_price}}"
demand_score: "{{get-competitor-pricing.demand_index}}"
- name: update-catalog-price
type: call
call: "catalog-api.update-price"
with:
sku: "{{sku}}"
new_price: "{{calculate-optimal-price.recommended_price}}"
effective_date: "{{calculate-optimal-price.effective_date}}"
- name: log-price-change
type: call
call: "ga.send-event"
with:
category: "pricing"
action: "price_update"
label: "{{sku}}"
value: "{{calculate-optimal-price.recommended_price}}"
consumes:
- type: http
namespace: circana
baseUri: "https://api.circana.com/v2"
authentication:
type: bearer
token: "$secrets.circana_token"
resources:
- name: pricing
path: "/pricing/competitive-analysis"
operations:
- name: get-pricing-data
method: POST
- type: http
namespace: ml-pricing
baseUri: "https://ml-platform.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.ml_platform_token"
resources:
- name: pricing-model
path: "/models/dynamic-pricing/predict"
operations:
- name: predict-price
method: POST
- type: http
namespace: catalog-api
baseUri: "https://catalog-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.catalog_api_token"
resources:
- name: products
path: "/products/{{sku}}/price"
inputParameters:
- name: sku
in: path
operations:
- name: update-price
method: PUT
- type: http
namespace: ga
baseUri: "https://www.google-analytics.com"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: collect
path: "/mp/collect"
operations:
- name: send-event
method: POST
Orchestrates e commerce workflow 1 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "E Commerce Workflow 1"
description: "Orchestrates e commerce workflow 1 by coordinating across systems, validating data, and sending notifications."
tags:
- e
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: run-e-commerce-workflow-001
description: "Orchestrates e commerce workflow 1 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed E Commerce Workflow 1 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates e commerce workflow 2 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "E Commerce Workflow 2"
description: "Orchestrates e commerce workflow 2 by coordinating across systems, validating data, and sending notifications."
tags:
- e
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: run-e-commerce-workflow-002
description: "Orchestrates e commerce workflow 2 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed E Commerce Workflow 2 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves e commerce operational data for workflow 3.
naftiko: "0.5"
info:
label: "E Commerce Data Query 3"
description: "Retrieves e commerce operational data for workflow 3."
tags:
- e
- operations
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: get-data-3
description: "Query e commerce data for workflow 3."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "e-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: e-api
baseUri: "https://api.wayfair.com/e-commerce/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-3
method: GET
Orchestrates e commerce workflow 4 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "E Commerce Workflow 4"
description: "Orchestrates e commerce workflow 4 by coordinating across systems, validating data, and sending notifications."
tags:
- e
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: run-e-commerce-workflow-004
description: "Orchestrates e commerce workflow 4 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed E Commerce Workflow 4 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates e commerce workflow 5 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "E Commerce Workflow 5"
description: "Orchestrates e commerce workflow 5 by coordinating across systems, validating data, and sending notifications."
tags:
- e
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: run-e-commerce-workflow-005
description: "Orchestrates e commerce workflow 5 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed E Commerce Workflow 5 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves e commerce operational data for workflow 6.
naftiko: "0.5"
info:
label: "E Commerce Data Query 6"
description: "Retrieves e commerce operational data for workflow 6."
tags:
- e
- operations
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: get-data-6
description: "Query e commerce data for workflow 6."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "e-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: e-api
baseUri: "https://api.wayfair.com/e-commerce/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-6
method: GET
Orchestrates e commerce workflow 7 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "E Commerce Workflow 7"
description: "Orchestrates e commerce workflow 7 by coordinating across systems, validating data, and sending notifications."
tags:
- e
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: run-e-commerce-workflow-007
description: "Orchestrates e commerce workflow 7 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed E Commerce Workflow 7 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates e commerce workflow 8 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "E Commerce Workflow 8"
description: "Orchestrates e commerce workflow 8 by coordinating across systems, validating data, and sending notifications."
tags:
- e
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: run-e-commerce-workflow-008
description: "Orchestrates e commerce workflow 8 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed E Commerce Workflow 8 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves e commerce operational data for workflow 9.
naftiko: "0.5"
info:
label: "E Commerce Data Query 9"
description: "Retrieves e commerce operational data for workflow 9."
tags:
- e
- operations
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: get-data-9
description: "Query e commerce data for workflow 9."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "e-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: e-api
baseUri: "https://api.wayfair.com/e-commerce/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-9
method: GET
Orchestrates e commerce workflow 10 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "E Commerce Workflow 10"
description: "Orchestrates e commerce workflow 10 by coordinating across systems, validating data, and sending notifications."
tags:
- e
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: run-e-commerce-workflow-010
description: "Orchestrates e commerce workflow 10 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed E Commerce Workflow 10 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates e commerce workflow 11 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "E Commerce Workflow 11"
description: "Orchestrates e commerce workflow 11 by coordinating across systems, validating data, and sending notifications."
tags:
- e
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: run-e-commerce-workflow-011
description: "Orchestrates e commerce workflow 11 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed E Commerce Workflow 11 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves e commerce operational data for workflow 12.
naftiko: "0.5"
info:
label: "E Commerce Data Query 12"
description: "Retrieves e commerce operational data for workflow 12."
tags:
- e
- operations
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: get-data-12
description: "Query e commerce data for workflow 12."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "e-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: e-api
baseUri: "https://api.wayfair.com/e-commerce/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-12
method: GET
Orchestrates e commerce workflow 13 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "E Commerce Workflow 13"
description: "Orchestrates e commerce workflow 13 by coordinating across systems, validating data, and sending notifications."
tags:
- e
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: run-e-commerce-workflow-013
description: "Orchestrates e commerce workflow 13 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed E Commerce Workflow 13 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates e commerce workflow 14 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "E Commerce Workflow 14"
description: "Orchestrates e commerce workflow 14 by coordinating across systems, validating data, and sending notifications."
tags:
- e
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: run-e-commerce-workflow-014
description: "Orchestrates e commerce workflow 14 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed E Commerce Workflow 14 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves e commerce operational data for workflow 15.
naftiko: "0.5"
info:
label: "E Commerce Data Query 15"
description: "Retrieves e commerce operational data for workflow 15."
tags:
- e
- operations
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: get-data-15
description: "Query e commerce data for workflow 15."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "e-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: e-api
baseUri: "https://api.wayfair.com/e-commerce/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-15
method: GET
Executes a product search query against the Wayfair Elasticsearch product catalog index. Returns matching SKUs, titles, prices, and relevance scores for merchandising and search quality analysis.
naftiko: "0.5"
info:
label: "Elasticsearch Product Search"
description: "Executes a product search query against the Wayfair Elasticsearch product catalog index. Returns matching SKUs, titles, prices, and relevance scores for merchandising and search quality analysis."
tags:
- search
- e-commerce
- elasticsearch
capability:
exposes:
- type: mcp
namespace: product-search
port: 8080
tools:
- name: search-products
description: "Search the product catalog by keyword query. Returns matching SKU IDs, product titles, prices, and relevance scores."
inputParameters:
- name: query
in: body
type: string
description: "The search query string."
- name: category_filter
in: body
type: string
description: "Optional category slug to narrow results (e.g., living-room-furniture)."
- name: limit
in: body
type: number
description: "Maximum number of results to return."
call: "es.search-products"
with:
query: "{{query}}"
category_filter: "{{category_filter}}"
limit: "{{limit}}"
outputParameters:
- name: total_hits
type: number
mapping: "$.hits.total.value"
- name: results
type: array
mapping: "$.hits.hits"
consumes:
- type: http
namespace: es
baseUri: "https://es-prod.wayfair.com"
authentication:
type: basic
username: "$secrets.es_user"
password: "$secrets.es_password"
resources:
- name: product-index
path: "/products/_search"
operations:
- name: search-products
method: POST
Pulls campaign performance data from MailChimp, cross-references with Google Analytics conversion data, and creates a Jira ticket summarizing the campaign results for the marketing team.
naftiko: "0.5"
info:
label: "Email Campaign Performance Report"
description: "Pulls campaign performance data from MailChimp, cross-references with Google Analytics conversion data, and creates a Jira ticket summarizing the campaign results for the marketing team."
tags:
- marketing
- email-marketing
- mailchimp
- google-analytics
- jira
capability:
exposes:
- type: mcp
namespace: email-performance
port: 8080
tools:
- name: report-campaign-performance
description: "Given a MailChimp campaign ID, pull open/click rates, cross-reference with GA conversions, and create a Jira summary ticket."
inputParameters:
- name: campaign_id
in: body
type: string
description: "The MailChimp campaign ID."
steps:
- name: get-campaign-stats
type: call
call: "mailchimp.get-campaign-report"
with:
campaign_id: "{{campaign_id}}"
- name: get-ga-conversions
type: call
call: "ga.get-campaign-report"
with:
campaign_name: "{{get-campaign-stats.campaign_title}}"
- name: create-results-ticket
type: call
call: "jira.create-issue"
with:
project: "MKT"
issue_type: "Task"
summary: "Email Campaign Results: {{get-campaign-stats.campaign_title}}"
description: "Campaign: {{get-campaign-stats.campaign_title}}\nSent: {{get-campaign-stats.emails_sent}}\nOpen Rate: {{get-campaign-stats.open_rate}}%\nClick Rate: {{get-campaign-stats.click_rate}}%\nUnsubscribes: {{get-campaign-stats.unsubscribes}}\nGA Sessions: {{get-ga-conversions.sessions}}\nGA Conversions: {{get-ga-conversions.conversions}}\nRevenue: ${{get-ga-conversions.revenue}}"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: reports
path: "/reports/{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
- type: http
namespace: ga
baseUri: "https://analyticsreporting.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: reports
path: "/reports:batchGet"
operations:
- name: get-campaign-report
method: POST
- type: http
namespace: jira
baseUri: "https://wayfair.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
Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.
naftiko: "0.5"
info:
label: "Employee Offboarding Orchestrator"
description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
tags:
- hr
- identity
- operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-employee-offboarding-orchestrator
description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Employee Offboarding Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.
naftiko: "0.5"
info:
label: "Executive Dashboard Refresh Orchestrator"
description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
tags:
- analytics
- power-bi
- business
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-executive-dashboard-refresh-orchestrator
description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
When the ML fraud model flags a suspicious order, freezes the order in the orders API, creates a Salesforce case for the fraud team, sends an SMS alert to the customer via Twilio, and logs the event to Kafka.
naftiko: "0.5"
info:
label: "Fraud Detection Alert Pipeline"
description: "When the ML fraud model flags a suspicious order, freezes the order in the orders API, creates a Salesforce case for the fraud team, sends an SMS alert to the customer via Twilio, and logs the event to Kafka."
tags:
- e-commerce
- security
- fraud-detection
- salesforce
- twilio
- apache-kafka
capability:
exposes:
- type: mcp
namespace: fraud-detection
port: 8080
tools:
- name: process-fraud-alert
description: "Given an order ID and fraud score, freeze the order, create a fraud case, alert the customer, and log the event."
inputParameters:
- name: order_id
in: body
type: string
description: "The flagged order ID."
- name: fraud_score
in: body
type: number
description: "The ML fraud model confidence score (0-100)."
- name: customer_phone
in: body
type: string
description: "The customer phone number in E.164 format."
steps:
- name: freeze-order
type: call
call: "orders-api.freeze-order"
with:
order_id: "{{order_id}}"
reason: "fraud_detection"
- name: get-order
type: call
call: "orders-api.get-order"
with:
order_id: "{{order_id}}"
- name: create-fraud-case
type: call
call: "salesforce.create-case"
with:
subject: "Fraud Alert: Order {{order_id}} — Score {{fraud_score}}"
description: "Order {{order_id}} flagged with fraud score {{fraud_score}}/100. Amount: ${{get-order.total_amount}}. Customer: {{get-order.customer_email}}. Order frozen pending review."
priority: "High"
type: "Fraud Investigation"
- name: notify-customer
type: call
call: "twilio.send-sms"
with:
to: "{{customer_phone}}"
body: "Wayfair Security: Your order {{order_id}} is under review. If you did not place this order, please call 1-866-263-8325 immediately."
- name: log-fraud-event
type: call
call: "kafka-bridge.publish-event"
with:
topic: "fraud.alerts"
key: "{{order_id}}"
payload: "{\"order_id\":\"{{order_id}}\",\"fraud_score\":{{fraud_score}},\"amount\":\"{{get-order.total_amount}}\",\"case_id\":\"{{create-fraud-case.case_id}}\"}"
consumes:
- type: http
namespace: orders-api
baseUri: "https://orders-api.wayfair.com/api/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
- name: order-actions
path: "/orders/{{order_id}}/freeze"
inputParameters:
- name: order_id
in: path
operations:
- name: freeze-order
method: POST
- type: http
namespace: salesforce
baseUri: "https://wayfair.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: twilio
baseUri: "https://api.twilio.com/2010-04-01"
authentication:
type: basic
username: "$secrets.twilio_account_sid"
password: "$secrets.twilio_auth_token"
resources:
- name: messages
path: "/Accounts/$secrets.twilio_account_sid/Messages.json"
operations:
- name: send-sms
method: POST
- type: http
namespace: kafka-bridge
baseUri: "https://kafka-rest.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.kafka_rest_token"
resources:
- name: topics
path: "/topics/{{topic}}"
inputParameters:
- name: topic
in: path
operations:
- name: publish-event
method: POST
Retrieves real-time page view and session metrics from Google Analytics for a given product page URL. Used by merchandising and marketing teams to gauge product interest without accessing the GA console.
naftiko: "0.5"
info:
label: "Google Analytics Page View Lookup"
description: "Retrieves real-time page view and session metrics from Google Analytics for a given product page URL. Used by merchandising and marketing teams to gauge product interest without accessing the GA console."
tags:
- analytics
- marketing
- google-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-page-metrics
description: "Given a product page path, return real-time page views, unique visitors, average session duration, and bounce rate from Google Analytics."
inputParameters:
- name: page_path
in: body
type: string
description: "The relative URL path of the product page (e.g., /furniture/sofas/sku-12345)."
- name: date_range
in: body
type: string
description: "Date range in YYYY-MM-DD:YYYY-MM-DD format."
call: "ga.get-report"
with:
page_path: "{{page_path}}"
date_range: "{{date_range}}"
outputParameters:
- name: page_views
type: number
mapping: "$.reports[0].data.totals[0].values[0]"
- name: unique_visitors
type: number
mapping: "$.reports[0].data.totals[0].values[1]"
- name: avg_session_duration
type: string
mapping: "$.reports[0].data.totals[0].values[2]"
- name: bounce_rate
type: string
mapping: "$.reports[0].data.totals[0].values[3]"
consumes:
- type: http
namespace: ga
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
Retrieves a file from Google Drive.
naftiko: "0.5"
info:
label: "Google Drive File Viewer"
description: "Retrieves a file from Google Drive."
tags:
- collaboration
- google-drive
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-google
description: "Retrieves a file from Google Drive."
inputParameters:
- name: entity_id
in: body
type: string
description: "The google drive file viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.wayfair.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: google
path: "/google/drive/file/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-google
method: GET
Fetches the latest published container version from Google Tag Manager for a specified container ID. Returns version number, publish date, and tag count for marketing and analytics auditing.
naftiko: "0.5"
info:
label: "Google Tag Manager Container Version"
description: "Fetches the latest published container version from Google Tag Manager for a specified container ID. Returns version number, publish date, and tag count for marketing and analytics auditing."
tags:
- marketing
- analytics
- google-tag-manager
capability:
exposes:
- type: mcp
namespace: tag-management
port: 8080
tools:
- name: get-container-version
description: "Retrieve the latest published GTM container version by container ID."
inputParameters:
- name: container_id
in: body
type: string
description: "The GTM container ID (e.g., GTM-XXXX)."
call: "gtm.get-version"
with:
container_id: "{{container_id}}"
outputParameters:
- name: version_number
type: string
mapping: "$.containerVersion.containerVersionId"
- name: publish_date
type: string
mapping: "$.containerVersion.fingerprint"
- name: tag_count
type: number
mapping: "$.containerVersion.tag.length"
consumes:
- type: http
namespace: gtm
baseUri: "https://www.googleapis.com/tagmanager/v2"
authentication:
type: bearer
token: "$secrets.google_gtm_token"
resources:
- name: containers
path: "/accounts/wayfair/containers/{{container_id}}/versions:live"
inputParameters:
- name: container_id
in: path
operations:
- name: get-version
method: GET
When a Datadog alert fires, creates a ServiceNow incident, posts an alert to the Microsoft Teams on-call channel, and pages the on-call engineer via Twilio SMS.
naftiko: "0.5"
info:
label: "Incident Response Orchestrator"
description: "When a Datadog alert fires, creates a ServiceNow incident, posts an alert to the Microsoft Teams on-call channel, and pages the on-call engineer via Twilio SMS."
tags:
- operations
- incident-response
- datadog
- servicenow
- microsoft-teams
- twilio
capability:
exposes:
- type: mcp
namespace: incident-response
port: 8080
tools:
- name: trigger-incident-response
description: "Given a Datadog alert ID and on-call engineer phone number, create a ServiceNow incident, alert the Teams channel, and send an SMS page."
inputParameters:
- name: alert_id
in: body
type: string
description: "The Datadog alert/monitor ID that triggered."
- name: service_name
in: body
type: string
description: "The affected service name."
- name: oncall_phone
in: body
type: string
description: "The on-call engineer phone number in E.164 format."
steps:
- name: get-alert
type: call
call: "datadog.get-monitor"
with:
monitor_id: "{{alert_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "P1 Alert: {{service_name}} — {{get-alert.name}}"
description: "Datadog monitor {{alert_id}} triggered for {{service_name}}. Message: {{get-alert.message}}. Status: {{get-alert.overall_state}}"
urgency: "1"
category: "infrastructure"
assigned_group: "SRE_OnCall"
- name: alert-teams
type: call
call: "msteams.send-channel-message"
with:
channel_id: "sre-incidents"
text: "INCIDENT: {{service_name}} | {{get-alert.name}} | ServiceNow: {{create-incident.number}} | Monitor: {{get-alert.overall_state}}"
- name: page-oncall
type: call
call: "twilio.send-sms"
with:
to: "{{oncall_phone}}"
body: "P1 INCIDENT: {{service_name}} — {{get-alert.name}}. INC: {{create-incident.number}}. Respond immediately."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: servicenow
baseUri: "https://wayfair.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/wayfair-eng/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
- type: http
namespace: twilio
baseUri: "https://api.twilio.com/2010-04-01"
authentication:
type: basic
username: "$secrets.twilio_account_sid"
password: "$secrets.twilio_auth_token"
resources:
- name: messages
path: "/Accounts/$secrets.twilio_account_sid/Messages.json"
operations:
- name: send-sms
method: POST
Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.
naftiko: "0.5"
info:
label: "Infrastructure Capacity Planning Orchestrator"
description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
tags:
- infrastructure
- planning
- finance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-infrastructure-capacity-planning-orchestrator
description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Pulls AWS cost data from CloudWatch, correlates with service ownership in ServiceNow CMDB, generates a cost breakdown by team, and shares the report via Microsoft Teams and Google Drive.
naftiko: "0.5"
info:
label: "Infrastructure Cost Report Pipeline"
description: "Pulls AWS cost data from CloudWatch, correlates with service ownership in ServiceNow CMDB, generates a cost breakdown by team, and shares the report via Microsoft Teams and Google Drive."
tags:
- operations
- finops
- cloudwatch
- servicenow
- microsoft-teams
- google-drive
capability:
exposes:
- type: mcp
namespace: infra-cost
port: 8080
tools:
- name: generate-cost-report
description: "Given a date range, pull AWS cost metrics, correlate with CMDB service owners, generate team-level cost breakdown, and distribute the report."
inputParameters:
- name: start_date
in: body
type: string
description: "Report start date (YYYY-MM-DD)."
- name: end_date
in: body
type: string
description: "Report end date (YYYY-MM-DD)."
steps:
- name: get-cost-data
type: call
call: "aws-cost.get-cost-report"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: get-service-owners
type: call
call: "servicenow.get-cmdb-services"
with:
query: "operational_status=operational"
- name: create-report
type: call
call: "gdrive.create-spreadsheet"
with:
title: "AWS Cost Report {{start_date}} to {{end_date}}"
folder_id: "finops_reports"
data: "{{get-cost-data.cost_by_service}}"
- name: notify-leadership
type: call
call: "msteams.send-channel-message"
with:
channel_id: "platform-finops"
text: "AWS Cost Report ({{start_date}} to {{end_date}}): Total spend ${{get-cost-data.total_cost}}. Top service: {{get-cost-data.top_service}} (${{get-cost-data.top_service_cost}}). Report: {{create-report.url}}"
consumes:
- type: http
namespace: aws-cost
baseUri: "https://ce.us-east-1.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_session_token"
resources:
- name: cost-reports
path: "/"
operations:
- name: get-cost-report
method: POST
- type: http
namespace: servicenow
baseUri: "https://wayfair.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cmdb
path: "/table/cmdb_ci_service"
operations:
- name: get-cmdb-services
method: GET
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
operations:
- name: create-spreadsheet
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/wayfair-platform/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When inventory for a product drops below the reorder threshold, fetches supplier lead times, creates a purchase order in the procurement system, publishes a reorder event to Kafka, and notifies the supply chain team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Inventory Reorder Orchestrator"
description: "When inventory for a product drops below the reorder threshold, fetches supplier lead times, creates a purchase order in the procurement system, publishes a reorder event to Kafka, and notifies the supply chain team in Microsoft Teams."
tags:
- supply-chain
- inventory-management
- logistics
- apache-kafka
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: inventory-reorder
port: 8080
tools:
- name: trigger-reorder
description: "Given a SKU and current stock level, check the reorder threshold, fetch supplier lead time, create a purchase order, publish the event, and notify the team."
inputParameters:
- name: sku
in: body
type: string
description: "The product SKU that is low on inventory."
- name: current_stock
in: body
type: number
description: "The current inventory quantity."
- name: warehouse_id
in: body
type: string
description: "The warehouse ID where stock is low."
steps:
- name: get-product-details
type: call
call: "catalog-api.get-product"
with:
sku: "{{sku}}"
- name: get-supplier-lead-time
type: call
call: "supplier-api.get-lead-time"
with:
supplier_id: "{{get-product-details.supplier_id}}"
sku: "{{sku}}"
- name: create-purchase-order
type: call
call: "procurement-api.create-po"
with:
supplier_id: "{{get-product-details.supplier_id}}"
sku: "{{sku}}"
quantity: "{{get-product-details.reorder_quantity}}"
warehouse_id: "{{warehouse_id}}"
- name: publish-reorder-event
type: call
call: "kafka-bridge.publish-event"
with:
topic: "inventory.reorder.created"
key: "{{sku}}"
payload: "{\"sku\":\"{{sku}}\",\"po_number\":\"{{create-purchase-order.po_number}}\",\"quantity\":\"{{get-product-details.reorder_quantity}}\",\"eta_days\":{{get-supplier-lead-time.lead_days}}}"
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "supply-chain-ops"
text: "Reorder Triggered: {{get-product-details.product_name}} ({{sku}}) | Current Stock: {{current_stock}} | PO: {{create-purchase-order.po_number}} | Qty: {{get-product-details.reorder_quantity}} | ETA: {{get-supplier-lead-time.lead_days}} days"
consumes:
- type: http
namespace: catalog-api
baseUri: "https://catalog-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.catalog_api_token"
resources:
- name: products
path: "/products/{{sku}}"
inputParameters:
- name: sku
in: path
operations:
- name: get-product
method: GET
- type: http
namespace: supplier-api
baseUri: "https://supplier-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.supplier_api_token"
resources:
- name: lead-times
path: "/suppliers/{{supplier_id}}/lead-times/{{sku}}"
inputParameters:
- name: supplier_id
in: path
- name: sku
in: path
operations:
- name: get-lead-time
method: GET
- type: http
namespace: procurement-api
baseUri: "https://procurement-api.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.procurement_api_token"
resources:
- name: purchase-orders
path: "/purchase-orders"
operations:
- name: create-po
method: POST
- type: http
namespace: kafka-bridge
baseUri: "https://kafka-rest.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.kafka_rest_token"
resources:
- name: topics
path: "/topics/{{topic}}"
inputParameters:
- name: topic
in: path
operations:
- name: publish-event
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/wayfair-supply/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.
naftiko: "0.5"
info:
label: "IT Change Management Orchestrator"
description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
tags:
- it
- servicenow
- operations
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: run-it-change-management-orchestrator
description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed IT Change Management Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves a Jira issue by key and returns summary, status, assignee, priority, and sprint information. Used across engineering and product teams for quick status checks.
naftiko: "0.5"
info:
label: "Jira Ticket Lookup"
description: "Retrieves a Jira issue by key and returns summary, status, assignee, priority, and sprint information. Used across engineering and product teams for quick status checks."
tags:
- engineering
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: project-tracking
port: 8080
tools:
- name: get-jira-issue
description: "Look up a Jira issue by key. Returns summary, status, assignee, priority, and current sprint name."
inputParameters:
- name: issue_key
in: body
type: string
description: "The Jira issue key (e.g., STOR-1234, SHIP-567)."
call: "jira.get-issue"
with:
issue_key: "{{issue_key}}"
outputParameters:
- name: summary
type: string
mapping: "$.fields.summary"
- name: status
type: string
mapping: "$.fields.status.name"
- name: assignee
type: string
mapping: "$.fields.assignee.displayName"
- name: priority
type: string
mapping: "$.fields.priority.name"
consumes:
- type: http
namespace: jira
baseUri: "https://wayfair.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue/{{issue_key}}"
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Retrieves a Jira ticket by issue key.
naftiko: "0.5"
info:
label: "Jira Ticket Viewer"
description: "Retrieves a Jira ticket by issue key."
tags:
- engineering
- jira
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-jira
description: "Retrieves a Jira ticket by issue key."
inputParameters:
- name: entity_id
in: body
type: string
description: "The jira ticket viewer identifier."
call: "engineering-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: engineering-api
baseUri: "https://api.wayfair.com/engineering/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: jira
path: "/jira/ticket/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-jira
method: GET
Checks Apache Kafka consumer group lag for a specified topic, evaluates against thresholds, creates a Datadog alert annotation, and posts a warning to the Microsoft Teams engineering channel when lag exceeds limits.
naftiko: "0.5"
info:
label: "Kafka Consumer Lag Monitor"
description: "Checks Apache Kafka consumer group lag for a specified topic, evaluates against thresholds, creates a Datadog alert annotation, and posts a warning to the Microsoft Teams engineering channel when lag exceeds limits."
tags:
- engineering
- monitoring
- apache-kafka
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: kafka-monitoring
port: 8080
tools:
- name: check-consumer-lag
description: "Given a Kafka topic and consumer group, check current lag, evaluate thresholds, annotate Datadog, and alert the team if lag is excessive."
inputParameters:
- name: topic
in: body
type: string
description: "The Kafka topic name."
- name: consumer_group
in: body
type: string
description: "The consumer group ID."
- name: lag_threshold
in: body
type: number
description: "The maximum acceptable lag in messages."
steps:
- name: get-lag
type: call
call: "kafka-admin.get-consumer-lag"
with:
topic: "{{topic}}"
group: "{{consumer_group}}"
- name: annotate-datadog
type: call
call: "datadog.create-event"
with:
title: "Kafka Lag Check: {{topic}}/{{consumer_group}}"
text: "Current lag: {{get-lag.total_lag}} messages. Threshold: {{lag_threshold}}."
tags: "kafka:{{topic}},consumer_group:{{consumer_group}}"
- name: alert-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "platform-alerts"
text: "Kafka Lag Warning: {{topic}} / {{consumer_group}} | Current Lag: {{get-lag.total_lag}} | Threshold: {{lag_threshold}} | Partitions Behind: {{get-lag.partitions_behind}}"
consumes:
- type: http
namespace: kafka-admin
baseUri: "https://kafka-admin.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.kafka_admin_token"
resources:
- name: consumer-lag
path: "/topics/{{topic}}/consumers/{{group}}/lag"
inputParameters:
- name: topic
in: path
- name: group
in: path
operations:
- name: get-consumer-lag
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: events
path: "/events"
operations:
- name: create-event
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/wayfair-eng/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.
naftiko: "0.5"
info:
label: "Knowledge Base Refresh Orchestrator"
description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
tags:
- knowledge-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: knowledge-management
port: 8080
tools:
- name: run-knowledge-base-refresh-orchestrator
description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Knowledge Base Refresh Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Fetches pending deliveries from the warehouse API, calculates optimal delivery routes using Google Maps, assigns drivers, publishes route events to Kafka, and notifies the logistics team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Last-Mile Delivery Optimization"
description: "Fetches pending deliveries from the warehouse API, calculates optimal delivery routes using Google Maps, assigns drivers, publishes route events to Kafka, and notifies the logistics team in Microsoft Teams."
tags:
- logistics
- delivery
- google-maps
- apache-kafka
- microsoft-teams
- optimization
capability:
exposes:
- type: mcp
namespace: delivery-routing
port: 8080
tools:
- name: optimize-delivery-routes
description: "Given a warehouse ID and delivery date, fetch pending deliveries, calculate optimal routes, assign drivers, and publish the route plan."
inputParameters:
- name: warehouse_id
in: body
type: string
description: "The warehouse facility ID."
- name: delivery_date
in: body
type: string
description: "The target delivery date (YYYY-MM-DD)."
steps:
- name: get-pending-deliveries
type: call
call: "warehouse-api.get-pending-deliveries"
with:
warehouse_id: "{{warehouse_id}}"
date: "{{delivery_date}}"
- name: calculate-routes
type: call
call: "google-maps.optimize-routes"
with:
origin: "{{get-pending-deliveries.warehouse_address}}"
waypoints: "{{get-pending-deliveries.delivery_addresses}}"
optimize_waypoints: "true"
- name: publish-route-plan
type: call
call: "kafka-bridge.publish-event"
with:
topic: "delivery.routes.planned"
key: "{{warehouse_id}}_{{delivery_date}}"
payload: "{\"warehouse_id\":\"{{warehouse_id}}\",\"date\":\"{{delivery_date}}\",\"total_deliveries\":{{get-pending-deliveries.count}},\"total_distance_km\":{{calculate-routes.total_distance}},\"estimated_hours\":{{calculate-routes.total_duration_hours}}}"
- name: notify-logistics
type: call
call: "msteams.send-channel-message"
with:
channel_id: "logistics-dispatch"
text: "Route Plan Ready: Warehouse {{warehouse_id}} | Date: {{delivery_date}} | Deliveries: {{get-pending-deliveries.count}} | Routes: {{calculate-routes.route_count}} | Distance: {{calculate-routes.total_distance}} km | ETA: {{calculate-routes.total_duration_hours}}h"
consumes:
- type: http
namespace: warehouse-api
baseUri: "https://warehouse-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.warehouse_api_token"
resources:
- name: deliveries
path: "/warehouses/{{warehouse_id}}/deliveries/pending"
inputParameters:
- name: warehouse_id
in: path
operations:
- name: get-pending-deliveries
method: GET
- type: http
namespace: google-maps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: bearer
token: "$secrets.google_maps_key"
resources:
- name: directions
path: "/directions/json"
operations:
- name: optimize-routes
method: GET
- type: http
namespace: kafka-bridge
baseUri: "https://kafka-rest.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.kafka_rest_token"
resources:
- name: topics
path: "/topics/{{topic}}"
inputParameters:
- name: topic
in: path
operations:
- name: publish-event
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/wayfair-logistics/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Launches a marketing campaign by creating an audience segment in MailChimp, scheduling social posts to Facebook and Instagram, setting up Google Analytics campaign tracking, and notifying the marketing team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Marketing Campaign Launch Orchestrator"
description: "Launches a marketing campaign by creating an audience segment in MailChimp, scheduling social posts to Facebook and Instagram, setting up Google Analytics campaign tracking, and notifying the marketing team in Microsoft Teams."
tags:
- marketing
- campaigns
- mailchimp
- facebook
- instagram
- google-analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: campaign-launch
port: 8080
tools:
- name: launch-campaign
description: "Given campaign details, create a MailChimp segment, schedule social posts, configure GA tracking, and notify the marketing team."
inputParameters:
- name: campaign_name
in: body
type: string
description: "The marketing campaign name."
- name: audience_criteria
in: body
type: string
description: "The audience targeting criteria for segmentation."
- name: launch_date
in: body
type: string
description: "Campaign launch date in YYYY-MM-DD format."
- name: creative_url
in: body
type: string
description: "URL to the campaign creative asset."
steps:
- name: create-segment
type: call
call: "mailchimp.create-segment"
with:
list_id: "wayfair_main"
name: "{{campaign_name}}_{{launch_date}}"
criteria: "{{audience_criteria}}"
- name: schedule-facebook
type: call
call: "facebook.create-post"
with:
page_id: "wayfair"
message: "{{campaign_name}}"
link: "https://www.wayfair.com/promo/{{campaign_name}}"
scheduled_publish_time: "{{launch_date}}T12:00:00Z"
- name: schedule-instagram
type: call
call: "instagram.create-media"
with:
image_url: "{{creative_url}}"
caption: "{{campaign_name}} — Shop now at wayfair.com"
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "marketing-campaigns"
text: "Campaign Launched: {{campaign_name}} | Segment: {{create-segment.segment_id}} ({{create-segment.member_count}} members) | Facebook: {{schedule-facebook.post_id}} | Launch: {{launch_date}}"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: segments
path: "/lists/{{list_id}}/segments"
inputParameters:
- name: list_id
in: path
operations:
- name: create-segment
method: POST
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.facebook_page_token"
resources:
- name: posts
path: "/{{page_id}}/feed"
inputParameters:
- name: page_id
in: path
operations:
- name: create-post
method: POST
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: media
path: "/wayfair_ig/media"
operations:
- name: create-media
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/wayfair-marketing/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.
naftiko: "0.5"
info:
label: "Marketing Campaign Performance Orchestrator"
description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
tags:
- marketing
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: run-marketing-campaign-performance-orchestrator
description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Marketing Campaign Performance Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Sends a message to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Message Sender"
description: "Sends a message to a Microsoft Teams channel."
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-microsoft
description: "Sends a message to a Microsoft Teams channel."
inputParameters:
- name: entity_id
in: body
type: string
description: "The microsoft teams message sender identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.wayfair.com/communications/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: microsoft
path: "/microsoft/teams/message/sender/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-microsoft
method: GET
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions access via Azure Active Directory, and sends a Microsoft Teams welcome message.
naftiko: "0.5"
info:
label: "New Employee Onboarding Orchestrator"
description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions access via Azure Active Directory, and sends a Microsoft Teams welcome message."
tags:
- hr
- onboarding
- workday
- servicenow
- azure-active-directory
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: onboard-new-hire
description: "Given a Workday employee ID, create a ServiceNow onboarding ticket, provision Azure AD access, and send a Teams welcome message."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "The Workday worker ID for the new hire."
- name: start_date
in: body
type: string
description: "The employee start date (YYYY-MM-DD)."
- name: department
in: body
type: string
description: "The department the new hire is joining."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{workday_employee_id}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New hire onboarding: {{get-employee.full_name}}"
category: "hr_onboarding"
assigned_group: "IT_Onboarding"
description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
- name: provision-aad
type: call
call: "azure-ad.create-user"
with:
display_name: "{{get-employee.full_name}}"
mail: "{{get-employee.work_email}}"
department: "{{department}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Welcome to Wayfair, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. You can log in at https://myapps.wayfair.com with your new credentials."
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://wayfair.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: azure-ad
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a new order is placed, validates inventory via the warehouse API, creates a shipment record, triggers a Kafka shipping event, and sends an order confirmation email through MailChimp.
naftiko: "0.5"
info:
label: "Order Fulfillment Orchestrator"
description: "When a new order is placed, validates inventory via the warehouse API, creates a shipment record, triggers a Kafka shipping event, and sends an order confirmation email through MailChimp."
tags:
- e-commerce
- fulfillment
- logistics
- apache-kafka
- mailchimp
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: process-new-order
description: "Given an order ID and customer email, validate inventory, create a shipment, publish a shipping event to Kafka, and send an order confirmation email."
inputParameters:
- name: order_id
in: body
type: string
description: "The Wayfair order ID."
- name: customer_email
in: body
type: string
description: "The customer email address for confirmation."
- name: warehouse_id
in: body
type: string
description: "The warehouse ID for fulfillment."
steps:
- name: check-inventory
type: call
call: "warehouse-api.check-inventory"
with:
order_id: "{{order_id}}"
warehouse_id: "{{warehouse_id}}"
- name: create-shipment
type: call
call: "warehouse-api.create-shipment"
with:
order_id: "{{order_id}}"
warehouse_id: "{{warehouse_id}}"
items: "{{check-inventory.available_items}}"
- name: publish-shipping-event
type: call
call: "kafka-bridge.publish-event"
with:
topic: "order.shipping.created"
key: "{{order_id}}"
payload: "{\"order_id\":\"{{order_id}}\",\"shipment_id\":\"{{create-shipment.shipment_id}}\",\"tracking_number\":\"{{create-shipment.tracking_number}}\"}"
- name: send-confirmation
type: call
call: "mailchimp.send-transactional"
with:
template_name: "order-confirmation"
email: "{{customer_email}}"
merge_vars: "{\"ORDER_ID\":\"{{order_id}}\",\"TRACKING\":\"{{create-shipment.tracking_number}}\"}"
consumes:
- type: http
namespace: warehouse-api
baseUri: "https://warehouse-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.warehouse_api_token"
resources:
- name: inventory
path: "/orders/{{order_id}}/inventory-check"
inputParameters:
- name: order_id
in: path
operations:
- name: check-inventory
method: POST
- name: shipments
path: "/shipments"
operations:
- name: create-shipment
method: POST
- type: http
namespace: kafka-bridge
baseUri: "https://kafka-rest.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.kafka_rest_token"
resources:
- name: topics
path: "/topics/{{topic}}"
inputParameters:
- name: topic
in: path
operations:
- name: publish-event
method: POST
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Fetches a customer's browsing history, runs the TensorFlow recommendation model, updates the personalization cache in Redis, and logs the recommendation event to Kafka for analytics.
naftiko: "0.5"
info:
label: "Personalized Recommendation Pipeline"
description: "Fetches a customer's browsing history, runs the TensorFlow recommendation model, updates the personalization cache in Redis, and logs the recommendation event to Kafka for analytics."
tags:
- e-commerce
- personalization
- machine-learning
- tensorflow
- redis
- apache-kafka
capability:
exposes:
- type: mcp
namespace: recommendations
port: 8080
tools:
- name: generate-recommendations
description: "Given a customer ID, fetch browsing history, generate ML recommendations, update the Redis personalization cache, and publish a recommendation event to Kafka."
inputParameters:
- name: customer_id
in: body
type: string
description: "The Wayfair customer ID."
- name: page_context
in: body
type: string
description: "The current page context (e.g., homepage, category, pdp)."
- name: num_recommendations
in: body
type: number
description: "Number of product recommendations to generate."
steps:
- name: get-browsing-history
type: call
call: "customer-api.get-browsing-history"
with:
customer_id: "{{customer_id}}"
limit: "50"
- name: run-model
type: call
call: "ml-reco.predict"
with:
customer_id: "{{customer_id}}"
browsing_history: "{{get-browsing-history.viewed_skus}}"
context: "{{page_context}}"
count: "{{num_recommendations}}"
- name: cache-results
type: call
call: "redis-api.set-key"
with:
cache_key: "reco:{{customer_id}}:{{page_context}}"
value: "{{run-model.recommended_skus}}"
ttl: "3600"
- name: publish-event
type: call
call: "kafka-bridge.publish-event"
with:
topic: "recommendations.generated"
key: "{{customer_id}}"
payload: "{\"customer_id\":\"{{customer_id}}\",\"context\":\"{{page_context}}\",\"model_version\":\"{{run-model.model_version}}\",\"sku_count\":{{num_recommendations}}}"
consumes:
- type: http
namespace: customer-api
baseUri: "https://customer-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.customer_api_token"
resources:
- name: browsing-history
path: "/customers/{{customer_id}}/browsing-history"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-browsing-history
method: GET
- type: http
namespace: ml-reco
baseUri: "https://ml-platform.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.ml_platform_token"
resources:
- name: recommendations
path: "/models/product-reco/predict"
operations:
- name: predict
method: POST
- type: http
namespace: redis-api
baseUri: "https://redis-gateway.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.redis_gateway_token"
resources:
- name: keys
path: "/keys/{{cache_key}}"
inputParameters:
- name: cache_key
in: path
operations:
- name: set-key
method: PUT
- type: http
namespace: kafka-bridge
baseUri: "https://kafka-rest.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.kafka_rest_token"
resources:
- name: topics
path: "/topics/{{topic}}"
inputParameters:
- name: topic
in: path
operations:
- name: publish-event
method: POST
Queries the Wayfair supplier management PostgreSQL database for a supplier record by supplier ID. Returns company name, onboarding status, payment terms, and primary contact.
naftiko: "0.5"
info:
label: "PostgreSQL Supplier Record Lookup"
description: "Queries the Wayfair supplier management PostgreSQL database for a supplier record by supplier ID. Returns company name, onboarding status, payment terms, and primary contact."
tags:
- supply-chain
- supplier-management
- postgresql
capability:
exposes:
- type: mcp
namespace: supplier-data
port: 8080
tools:
- name: get-supplier
description: "Look up a supplier by ID from the supplier management database. Returns company name, status, payment terms, and contact info."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The internal Wayfair supplier ID."
call: "supplier-db.get-supplier"
with:
supplier_id: "{{supplier_id}}"
outputParameters:
- name: company_name
type: string
mapping: "$.supplier.company_name"
- name: onboarding_status
type: string
mapping: "$.supplier.status"
- name: payment_terms
type: string
mapping: "$.supplier.payment_terms"
- name: primary_contact_email
type: string
mapping: "$.supplier.primary_contact.email"
consumes:
- type: http
namespace: supplier-db
baseUri: "https://supplier-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.supplier_api_token"
resources:
- name: suppliers
path: "/suppliers/{{supplier_id}}"
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier
method: GET
Triggers a Power BI dataset refresh.
naftiko: "0.5"
info:
label: "Power BI Dashboard Refresher"
description: "Triggers a Power BI dataset refresh."
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-power
description: "Triggers a Power BI dataset refresh."
inputParameters:
- name: entity_id
in: body
type: string
description: "The power bi dashboard refresher identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.wayfair.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: power
path: "/power/bi/dashboard/refresher/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-power
method: GET
Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.
naftiko: "0.5"
info:
label: "Procurement Spend Analysis Orchestrator"
description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
tags:
- procurement
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-procurement-spend-analysis-orchestrator
description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Procurement Spend Analysis Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Enriches a product listing by fetching supplier catalog data, generating SEO-optimized descriptions via the ML service, updating the Elasticsearch index, and invalidating the Cloudflare cache for the product page.
naftiko: "0.5"
info:
label: "Product Listing Enrichment Pipeline"
description: "Enriches a product listing by fetching supplier catalog data, generating SEO-optimized descriptions via the ML service, updating the Elasticsearch index, and invalidating the Cloudflare cache for the product page."
tags:
- e-commerce
- product-management
- elasticsearch
- cloudflare
- machine-learning
capability:
exposes:
- type: mcp
namespace: catalog-enrichment
port: 8080
tools:
- name: enrich-product-listing
description: "Given a SKU and supplier ID, fetch supplier catalog data, generate an ML-enhanced description, update the search index, and purge the CDN cache."
inputParameters:
- name: sku
in: body
type: string
description: "The Wayfair product SKU."
- name: supplier_id
in: body
type: string
description: "The supplier ID for catalog data retrieval."
steps:
- name: get-supplier-catalog
type: call
call: "supplier-api.get-product-details"
with:
supplier_id: "{{supplier_id}}"
sku: "{{sku}}"
- name: generate-description
type: call
call: "ml-service.generate-product-description"
with:
product_title: "{{get-supplier-catalog.product_title}}"
attributes: "{{get-supplier-catalog.attributes}}"
category: "{{get-supplier-catalog.category}}"
- name: update-search-index
type: call
call: "es.index-product"
with:
sku: "{{sku}}"
title: "{{get-supplier-catalog.product_title}}"
description: "{{generate-description.optimized_description}}"
category: "{{get-supplier-catalog.category}}"
price: "{{get-supplier-catalog.wholesale_price}}"
- name: purge-cdn-cache
type: call
call: "cloudflare.purge-url"
with:
url: "https://www.wayfair.com/product/{{sku}}"
consumes:
- type: http
namespace: supplier-api
baseUri: "https://supplier-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.supplier_api_token"
resources:
- name: product-details
path: "/suppliers/{{supplier_id}}/products/{{sku}}"
inputParameters:
- name: supplier_id
in: path
- name: sku
in: path
operations:
- name: get-product-details
method: GET
- type: http
namespace: ml-service
baseUri: "https://ml-platform.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.ml_platform_token"
resources:
- name: descriptions
path: "/product-descriptions/generate"
operations:
- name: generate-product-description
method: POST
- type: http
namespace: es
baseUri: "https://es-prod.wayfair.com"
authentication:
type: basic
username: "$secrets.es_user"
password: "$secrets.es_password"
resources:
- name: products
path: "/products/_doc/{{sku}}"
inputParameters:
- name: sku
in: path
operations:
- name: index-product
method: PUT
- type: http
namespace: cloudflare
baseUri: "https://api.cloudflare.com/client/v4"
authentication:
type: bearer
token: "$secrets.cloudflare_token"
resources:
- name: purge
path: "/zones/$secrets.cloudflare_zone_id/purge_cache"
operations:
- name: purge-url
method: POST
Collects product reviews from the reviews API, runs NLP topic extraction to identify common themes, updates the product search index with review sentiment, and creates a Jira ticket for products with declining ratings.
naftiko: "0.5"
info:
label: "Product Review Aggregation Pipeline"
description: "Collects product reviews from the reviews API, runs NLP topic extraction to identify common themes, updates the product search index with review sentiment, and creates a Jira ticket for products with declining ratings."
tags:
- e-commerce
- customer-experience
- reviews
- elasticsearch
- jira
- nlp
capability:
exposes:
- type: mcp
namespace: review-analysis
port: 8080
tools:
- name: analyze-product-reviews
description: "Given a SKU, aggregate recent reviews, extract common themes, update the search index with sentiment data, and flag declining products."
inputParameters:
- name: sku
in: body
type: string
description: "The product SKU to analyze."
- name: review_period_days
in: body
type: number
description: "Number of days of reviews to analyze."
steps:
- name: get-reviews
type: call
call: "reviews-api.get-product-reviews"
with:
sku: "{{sku}}"
days: "{{review_period_days}}"
- name: extract-themes
type: call
call: "ml-nlp.extract-topics"
with:
texts: "{{get-reviews.review_texts}}"
max_topics: "5"
- name: update-search-index
type: call
call: "es.update-product-sentiment"
with:
sku: "{{sku}}"
avg_rating: "{{get-reviews.average_rating}}"
review_count: "{{get-reviews.total_count}}"
top_themes: "{{extract-themes.topics}}"
sentiment_score: "{{extract-themes.overall_sentiment}}"
- name: flag-declining-product
type: call
call: "jira.create-issue"
with:
project: "MERCH"
issue_type: "Bug"
summary: "Review Alert: {{sku}} — Avg Rating {{get-reviews.average_rating}}/5 ({{get-reviews.total_count}} reviews)"
description: "Product {{sku}} has an average rating of {{get-reviews.average_rating}}/5 over the last {{review_period_days}} days.\nTop themes: {{extract-themes.topics}}\nSentiment: {{extract-themes.overall_sentiment}}\nReview count: {{get-reviews.total_count}}"
consumes:
- type: http
namespace: reviews-api
baseUri: "https://reviews-api.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.reviews_api_token"
resources:
- name: reviews
path: "/products/{{sku}}/reviews"
inputParameters:
- name: sku
in: path
operations:
- name: get-product-reviews
method: GET
- type: http
namespace: ml-nlp
baseUri: "https://ml-platform.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.ml_platform_token"
resources:
- name: topics
path: "/models/topic-extraction/predict"
operations:
- name: extract-topics
method: POST
- type: http
namespace: es
baseUri: "https://es-prod.wayfair.com"
authentication:
type: basic
username: "$secrets.es_user"
password: "$secrets.es_password"
resources:
- name: products
path: "/products/_update/{{sku}}"
inputParameters:
- name: sku
in: path
operations:
- name: update-product-sentiment
method: POST
- type: http
namespace: jira
baseUri: "https://wayfair.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves review summary for a product.
naftiko: "0.5"
info:
label: "Product Review Summary"
description: "Retrieves review summary for a product."
tags:
- e-commerce
- analytics
capability:
exposes:
- type: mcp
namespace: e-commerce
port: 8080
tools:
- name: get-product
description: "Retrieves review summary for a product."
inputParameters:
- name: entity_id
in: body
type: string
description: "The product review summary identifier."
call: "e-commerce-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: e-commerce-api
baseUri: "https://api.wayfair.com/e-commerce/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: product
path: "/product/review/summary/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-product
method: GET
Retrieves product search results by query.
naftiko: "0.5"
info:
label: "Product Search Results"
description: "Retrieves product search results by query."
tags:
- e-commerce
- product-management
capability:
exposes:
- type: mcp
namespace: e-commerce
port: 8080
tools:
- name: get-product
description: "Retrieves product search results by query."
inputParameters:
- name: entity_id
in: body
type: string
description: "The product search results identifier."
call: "e-commerce-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: e-commerce-api
baseUri: "https://api.wayfair.com/e-commerce/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: product
path: "/product/search/results/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-product
method: GET
Executes an instant PromQL query against the Wayfair Prometheus instance. Returns the current value and label set for a given metric expression. Used by SRE for ad-hoc metric checks.
naftiko: "0.5"
info:
label: "Prometheus Metric Query"
description: "Executes an instant PromQL query against the Wayfair Prometheus instance. Returns the current value and label set for a given metric expression. Used by SRE for ad-hoc metric checks."
tags:
- operations
- monitoring
- prometheus
capability:
exposes:
- type: mcp
namespace: metrics-query
port: 8080
tools:
- name: query-metric
description: "Run an instant PromQL query and return the current metric value and labels."
inputParameters:
- name: promql_expression
in: body
type: string
description: "The PromQL expression to evaluate (e.g., rate(http_requests_total{service='checkout'}[5m]))."
call: "prometheus.instant-query"
with:
promql_expression: "{{promql_expression}}"
outputParameters:
- name: result_type
type: string
mapping: "$.data.resultType"
- name: results
type: array
mapping: "$.data.result"
consumes:
- type: http
namespace: prometheus
baseUri: "https://prometheus.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.prometheus_token"
resources:
- name: queries
path: "/query"
operations:
- name: instant-query
method: POST
Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.
naftiko: "0.5"
info:
label: "Quarterly Business Review Orchestrator"
description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
tags:
- analytics
- business
- sharepoint
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-quarterly-business-review-orchestrator
description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Quarterly Business Review Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Fetches a value from a specified Redis key in the Wayfair caching layer. Used by engineering teams to inspect cached product data, session state, or feature flags without direct Redis CLI access.
naftiko: "0.5"
info:
label: "Redis Cache Key Lookup"
description: "Fetches a value from a specified Redis key in the Wayfair caching layer. Used by engineering teams to inspect cached product data, session state, or feature flags without direct Redis CLI access."
tags:
- engineering
- caching
- redis
capability:
exposes:
- type: mcp
namespace: cache-ops
port: 8080
tools:
- name: get-cache-key
description: "Retrieve the value stored at a given Redis cache key."
inputParameters:
- name: cache_key
in: body
type: string
description: "The Redis key to look up (e.g., product:sku:12345, session:abc)."
call: "redis-api.get-key"
with:
cache_key: "{{cache_key}}"
outputParameters:
- name: value
type: string
mapping: "$.value"
- name: ttl_seconds
type: number
mapping: "$.ttl"
consumes:
- type: http
namespace: redis-api
baseUri: "https://redis-gateway.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.redis_gateway_token"
resources:
- name: keys
path: "/keys/{{cache_key}}"
inputParameters:
- name: cache_key
in: path
operations:
- name: get-key
method: GET
Takes a customer's room dimensions and selected products, generates a 3D room layout via the Unity rendering service, stores the scene in S3, and sends the visualization link to the customer via email.
naftiko: "0.5"
info:
label: "Room Planner 3D Scene Pipeline"
description: "Takes a customer's room dimensions and selected products, generates a 3D room layout via the Unity rendering service, stores the scene in S3, and sends the visualization link to the customer via email."
tags:
- e-commerce
- 3d
- personalization
- unity
- amazon-s3
- mailchimp
capability:
exposes:
- type: mcp
namespace: room-planner
port: 8080
tools:
- name: generate-room-visualization
description: "Given room dimensions, selected SKUs, and customer email, render a 3D room scene, store it in S3, and email the visualization link."
inputParameters:
- name: customer_email
in: body
type: string
description: "The customer email address."
- name: room_dimensions
in: body
type: string
description: "Room dimensions as JSON (width, length, height in feet)."
- name: selected_skus
in: body
type: string
description: "Comma-separated list of product SKUs to place in the room."
steps:
- name: render-scene
type: call
call: "unity-render.create-room-scene"
with:
dimensions: "{{room_dimensions}}"
product_skus: "{{selected_skus}}"
output_format: "webgl"
- name: upload-to-s3
type: call
call: "s3-api.upload-object"
with:
bucket: "wayfair-room-planner"
key: "scenes/{{render-scene.scene_id}}/index.html"
content_url: "{{render-scene.output_url}}"
- name: send-visualization-email
type: call
call: "mailchimp.send-transactional"
with:
template_name: "room-planner-result"
email: "{{customer_email}}"
merge_vars: "{\"SCENE_URL\":\"https://roomplanner.wayfair.com/scenes/{{render-scene.scene_id}}\",\"PRODUCT_COUNT\":\"{{render-scene.product_count}}\"}"
consumes:
- type: http
namespace: unity-render
baseUri: "https://render-service.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.render_service_token"
resources:
- name: scenes
path: "/scenes"
operations:
- name: create-room-scene
method: POST
- type: http
namespace: s3-api
baseUri: "https://s3-gateway.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.aws_session_token"
resources:
- name: objects
path: "/upload/{{bucket}}/{{key}}"
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: upload-object
method: PUT
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Triggers a SailPoint access review campaign for a department, fetches the review results, creates a ServiceNow task for access revocations, and notifies the compliance team in Microsoft Teams.
naftiko: "0.5"
info:
label: "SailPoint Access Review Pipeline"
description: "Triggers a SailPoint access review campaign for a department, fetches the review results, creates a ServiceNow task for access revocations, and notifies the compliance team in Microsoft Teams."
tags:
- security
- compliance
- sailpoint
- servicenow
- microsoft-teams
- access-management
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: run-access-review
description: "Given a department name, trigger a SailPoint access certification campaign, process results, create revocation tasks, and notify compliance."
inputParameters:
- name: department
in: body
type: string
description: "The department to review (e.g., Engineering, Finance)."
- name: campaign_name
in: body
type: string
description: "The name for the access review campaign."
steps:
- name: create-campaign
type: call
call: "sailpoint.create-certification"
with:
name: "{{campaign_name}}"
department: "{{department}}"
- name: get-results
type: call
call: "sailpoint.get-certification-results"
with:
campaign_id: "{{create-campaign.campaign_id}}"
- name: create-revocation-task
type: call
call: "servicenow.create-task"
with:
short_description: "Access Revocation: {{department}} — {{get-results.revocations_count}} entitlements"
description: "SailPoint campaign {{campaign_name}} completed. Total reviewed: {{get-results.total_reviewed}}. Approved: {{get-results.approved_count}}. Revocations needed: {{get-results.revocations_count}}."
assigned_group: "IT_Security"
category: "access_management"
- name: notify-compliance
type: call
call: "msteams.send-channel-message"
with:
channel_id: "compliance-reviews"
text: "Access Review Complete: {{department}} | Reviewed: {{get-results.total_reviewed}} | Approved: {{get-results.approved_count}} | Revocations: {{get-results.revocations_count}} | ServiceNow: {{create-revocation-task.number}}"
consumes:
- type: http
namespace: sailpoint
baseUri: "https://wayfair.api.identitynow.com/v3"
authentication:
type: bearer
token: "$secrets.sailpoint_token"
resources:
- name: certifications
path: "/certifications"
operations:
- name: create-certification
method: POST
- name: certification-results
path: "/certifications/{{campaign_id}}/decisions"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-certification-results
method: GET
- type: http
namespace: servicenow
baseUri: "https://wayfair.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/wayfair-compliance/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Looks up a Salesforce account record by account ID and returns company name, account owner, annual revenue, and open opportunity count. Used by sales and supplier partnership teams.
naftiko: "0.5"
info:
label: "Salesforce Account Lookup"
description: "Looks up a Salesforce account record by account ID and returns company name, account owner, annual revenue, and open opportunity count. Used by sales and supplier partnership teams."
tags:
- sales
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: crm-accounts
port: 8080
tools:
- name: get-account
description: "Look up a Salesforce account by ID. Returns company name, owner, annual revenue, industry, and open opportunity count."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account record ID."
call: "salesforce.get-account"
with:
account_id: "{{account_id}}"
outputParameters:
- name: company_name
type: string
mapping: "$.Name"
- name: owner
type: string
mapping: "$.Owner.Name"
- name: annual_revenue
type: number
mapping: "$.AnnualRevenue"
- name: industry
type: string
mapping: "$.Industry"
consumes:
- type: http
namespace: salesforce
baseUri: "https://wayfair.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
Retrieves a Salesforce account by account ID.
naftiko: "0.5"
info:
label: "Salesforce Account Viewer"
description: "Retrieves a Salesforce account by account ID."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-salesforce
description: "Retrieves a Salesforce account by account ID."
inputParameters:
- name: entity_id
in: body
type: string
description: "The salesforce account viewer identifier."
call: "sales-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: sales-api
baseUri: "https://api.wayfair.com/sales/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: salesforce
path: "/salesforce/account/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-salesforce
method: GET
Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
naftiko: "0.5"
info:
label: "Security Audit Orchestrator"
description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
tags:
- security
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: run-security-audit-orchestrator
description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Security Audit Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Fetches page performance data from Google Analytics, crawl status from Google Tag Manager, search ranking from the SEO API, and compiles findings into a Jira ticket for the content team.
naftiko: "0.5"
info:
label: "SEO Content Audit Pipeline"
description: "Fetches page performance data from Google Analytics, crawl status from Google Tag Manager, search ranking from the SEO API, and compiles findings into a Jira ticket for the content team."
tags:
- marketing
- search-engine-optimization
- google-analytics
- google-tag-manager
- jira
capability:
exposes:
- type: mcp
namespace: seo-audit
port: 8080
tools:
- name: audit-page-seo
description: "Given a page URL, pull GA performance data, GTM tag status, search rankings, and create a Jira ticket with the audit findings."
inputParameters:
- name: page_url
in: body
type: string
description: "The full URL of the page to audit."
- name: target_keyword
in: body
type: string
description: "The primary keyword to check ranking for."
steps:
- name: get-ga-data
type: call
call: "ga.get-page-report"
with:
page_path: "{{page_url}}"
metrics: "pageviews,bounceRate,avgSessionDuration"
- name: get-gtm-status
type: call
call: "gtm.get-tag-status"
with:
page_url: "{{page_url}}"
- name: get-rankings
type: call
call: "seo-api.get-ranking"
with:
url: "{{page_url}}"
keyword: "{{target_keyword}}"
- name: create-audit-ticket
type: call
call: "jira.create-issue"
with:
project: "SEO"
issue_type: "Task"
summary: "SEO Audit: {{page_url}} — Rank #{{get-rankings.position}} for '{{target_keyword}}'"
description: "Page Views: {{get-ga-data.pageviews}} | Bounce Rate: {{get-ga-data.bounce_rate}}% | Avg Duration: {{get-ga-data.avg_duration}}s | GTM Tags: {{get-gtm-status.tag_count}} active | Current Rank: #{{get-rankings.position}} for '{{target_keyword}}'"
consumes:
- type: http
namespace: ga
baseUri: "https://analyticsreporting.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: reports
path: "/reports:batchGet"
operations:
- name: get-page-report
method: POST
- type: http
namespace: gtm
baseUri: "https://www.googleapis.com/tagmanager/v2"
authentication:
type: bearer
token: "$secrets.google_gtm_token"
resources:
- name: tags
path: "/accounts/wayfair/containers/tags"
operations:
- name: get-tag-status
method: GET
- type: http
namespace: seo-api
baseUri: "https://seo-api.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.seo_api_token"
resources:
- name: rankings
path: "/rankings"
operations:
- name: get-ranking
method: GET
- type: http
namespace: jira
baseUri: "https://wayfair.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
Creates a new incident in ServiceNow.
naftiko: "0.5"
info:
label: "ServiceNow Incident Creator"
description: "Creates a new incident in ServiceNow."
tags:
- it
- servicenow
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: get-servicenow
description: "Creates a new incident in ServiceNow."
inputParameters:
- name: entity_id
in: body
type: string
description: "The servicenow incident creator identifier."
call: "it-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: it-api
baseUri: "https://api.wayfair.com/it/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: servicenow
path: "/servicenow/incident/creator/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-servicenow
method: GET
Retrieves a ServiceNow incident by number and returns short description, state, priority, assigned group, and resolution notes. Used by IT support and engineering on-call.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Retrieves a ServiceNow incident by number and returns short description, state, priority, assigned group, and resolution notes. Used by IT support and engineering on-call."
tags:
- operations
- support
- servicenow
capability:
exposes:
- type: mcp
namespace: it-service
port: 8080
tools:
- name: get-incident
description: "Look up a ServiceNow incident by number. Returns description, state, priority, assigned group, and resolution notes."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g., INC0012345)."
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
outputParameters:
- name: short_description
type: string
mapping: "$.result.short_description"
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
- name: assigned_group
type: string
mapping: "$.result.assignment_group.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://wayfair.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{incident_number}}"
inputParameters:
- name: incident_number
in: path
operations:
- name: get-incident
method: GET
Retrieves contents of a shopping cart.
naftiko: "0.5"
info:
label: "Shopping Cart Contents"
description: "Retrieves contents of a shopping cart."
tags:
- e-commerce
- customer-service
capability:
exposes:
- type: mcp
namespace: e-commerce
port: 8080
tools:
- name: get-shopping
description: "Retrieves contents of a shopping cart."
inputParameters:
- name: entity_id
in: body
type: string
description: "The shopping cart contents identifier."
call: "e-commerce-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: e-commerce-api
baseUri: "https://api.wayfair.com/e-commerce/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: shopping
path: "/shopping/cart/contents/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-shopping
method: GET
Sends a notification to a Slack channel.
naftiko: "0.5"
info:
label: "Slack Notification Publisher"
description: "Sends a notification to a Slack channel."
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-slack
description: "Sends a notification to a Slack channel."
inputParameters:
- name: entity_id
in: body
type: string
description: "The slack notification publisher identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.wayfair.com/communications/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: slack
path: "/slack/notification/publisher/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-slack
method: GET
Runs an analytics query against the Snowflake data warehouse.
naftiko: "0.5"
info:
label: "Snowflake Analytics Query"
description: "Runs an analytics query against the Snowflake data warehouse."
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-snowflake
description: "Runs an analytics query against the Snowflake data warehouse."
inputParameters:
- name: entity_id
in: body
type: string
description: "The snowflake analytics query identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.wayfair.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: snowflake
path: "/snowflake/analytics/query/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-snowflake
method: GET
Fetches recent brand mentions from Facebook and Instagram, runs NLP sentiment analysis, and creates a Salesforce case when negative sentiment spikes, with a summary posted to Microsoft Teams.
naftiko: "0.5"
info:
label: "Social Media Sentiment Monitor"
description: "Fetches recent brand mentions from Facebook and Instagram, runs NLP sentiment analysis, and creates a Salesforce case when negative sentiment spikes, with a summary posted to Microsoft Teams."
tags:
- marketing
- social-media
- facebook
- instagram
- salesforce
- microsoft-teams
- nlp
capability:
exposes:
- type: mcp
namespace: social-sentiment
port: 8080
tools:
- name: monitor-brand-sentiment
description: "Fetch recent social mentions, analyze sentiment, create a Salesforce case on negative trends, and notify the brand team."
inputParameters:
- name: brand_keyword
in: body
type: string
description: "The brand keyword or hashtag to monitor."
- name: lookback_hours
in: body
type: number
description: "Number of hours to look back for mentions."
steps:
- name: get-facebook-mentions
type: call
call: "facebook.search-posts"
with:
query: "{{brand_keyword}}"
since_hours: "{{lookback_hours}}"
- name: get-instagram-mentions
type: call
call: "instagram.search-hashtag"
with:
hashtag: "{{brand_keyword}}"
- name: analyze-sentiment
type: call
call: "ml-nlp.analyze-sentiment"
with:
texts: "{{get-facebook-mentions.post_texts}},{{get-instagram-mentions.caption_texts}}"
- name: create-case
type: call
call: "salesforce.create-case"
with:
subject: "Social Sentiment Alert: {{brand_keyword}} — Score {{analyze-sentiment.average_score}}"
description: "Sentiment analysis for '{{brand_keyword}}' over last {{lookback_hours}}h: Avg Score: {{analyze-sentiment.average_score}}/10. Negative mentions: {{analyze-sentiment.negative_count}}. Facebook posts: {{get-facebook-mentions.count}}. Instagram posts: {{get-instagram-mentions.count}}."
priority: "High"
- name: notify-brand-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "brand-monitoring"
text: "Social Sentiment Alert: '{{brand_keyword}}' avg score {{analyze-sentiment.average_score}}/10 ({{analyze-sentiment.negative_count}} negative). Salesforce case: {{create-case.case_number}}"
consumes:
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.facebook_page_token"
resources:
- name: search
path: "/search"
operations:
- name: search-posts
method: GET
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: hashtags
path: "/ig_hashtag_search"
operations:
- name: search-hashtag
method: GET
- type: http
namespace: ml-nlp
baseUri: "https://ml-platform.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.ml_platform_token"
resources:
- name: sentiment
path: "/models/sentiment-analysis/predict"
operations:
- name: analyze-sentiment
method: POST
- type: http
namespace: salesforce
baseUri: "https://wayfair.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/wayfair-marketing/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Fetches the latest product feed from a supplier's BigCommerce store, validates data quality, updates the Wayfair product catalog, and notifies the merchandising team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Supplier Catalog Sync Pipeline"
description: "Fetches the latest product feed from a supplier's BigCommerce store, validates data quality, updates the Wayfair product catalog, and notifies the merchandising team in Microsoft Teams."
tags:
- supply-chain
- e-commerce
- bigcommerce
- microsoft-teams
- catalog-management
capability:
exposes:
- type: mcp
namespace: catalog-sync
port: 8080
tools:
- name: sync-supplier-catalog
description: "Given a supplier ID and their BigCommerce store hash, fetch their product feed, validate data, update the catalog, and notify merchandising."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The Wayfair supplier ID."
- name: store_hash
in: body
type: string
description: "The BigCommerce store hash for the supplier."
steps:
- name: fetch-bc-products
type: call
call: "bigcommerce.list-products"
with:
store_hash: "{{store_hash}}"
- name: validate-feed
type: call
call: "catalog-api.validate-feed"
with:
supplier_id: "{{supplier_id}}"
products: "{{fetch-bc-products.data}}"
- name: update-catalog
type: call
call: "catalog-api.bulk-upsert"
with:
supplier_id: "{{supplier_id}}"
products: "{{validate-feed.valid_products}}"
- name: notify-merch
type: call
call: "msteams.send-channel-message"
with:
channel_id: "merchandising-ops"
text: "Catalog Sync Complete: Supplier {{supplier_id}} | Total Products: {{fetch-bc-products.total}} | Valid: {{validate-feed.valid_count}} | Errors: {{validate-feed.error_count}} | Updated: {{update-catalog.upserted_count}}"
consumes:
- type: http
namespace: bigcommerce
baseUri: "https://api.bigcommerce.com/stores/{{store_hash}}/v3"
authentication:
type: bearer
token: "$secrets.bigcommerce_token"
inputParameters:
- name: store_hash
in: path
resources:
- name: products
path: "/catalog/products"
operations:
- name: list-products
method: GET
- type: http
namespace: catalog-api
baseUri: "https://catalog-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.catalog_api_token"
resources:
- name: feed-validation
path: "/feeds/validate"
operations:
- name: validate-feed
method: POST
- name: bulk-products
path: "/products/bulk"
operations:
- name: bulk-upsert
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/wayfair-merch/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a new supplier is approved, creates the supplier record in the supplier management system, provisions a SharePoint document folder, sends onboarding instructions via email, and opens a Jira onboarding task for the supplier ops team.
naftiko: "0.5"
info:
label: "Supplier Onboarding Pipeline"
description: "When a new supplier is approved, creates the supplier record in the supplier management system, provisions a SharePoint document folder, sends onboarding instructions via email, and opens a Jira onboarding task for the supplier ops team."
tags:
- supply-chain
- supplier-management
- sharepoint
- jira
- mailchimp
- onboarding
capability:
exposes:
- type: mcp
namespace: supplier-onboarding
port: 8080
tools:
- name: onboard-supplier
description: "Given supplier details, create the supplier record, provision a SharePoint folder, send onboarding email, and open a Jira task for supplier ops."
inputParameters:
- name: supplier_name
in: body
type: string
description: "The supplier company name."
- name: contact_email
in: body
type: string
description: "The primary contact email for the supplier."
- name: category
in: body
type: string
description: "The product category the supplier will fulfill (e.g., outdoor-furniture, lighting)."
steps:
- name: create-supplier
type: call
call: "supplier-api.create-supplier"
with:
supplier_name: "{{supplier_name}}"
contact_email: "{{contact_email}}"
category: "{{category}}"
- name: provision-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "supplier_portal"
folder_path: "Suppliers/{{supplier_name}}_{{create-supplier.supplier_id}}"
- name: send-onboarding-email
type: call
call: "mailchimp.send-transactional"
with:
template_name: "supplier-onboarding"
email: "{{contact_email}}"
merge_vars: "{\"SUPPLIER_NAME\":\"{{supplier_name}}\",\"PORTAL_URL\":\"{{provision-folder.url}}\",\"SUPPLIER_ID\":\"{{create-supplier.supplier_id}}\"}"
- name: create-jira-task
type: call
call: "jira.create-issue"
with:
project: "SUPOPS"
issue_type: "Task"
summary: "Onboard new supplier: {{supplier_name}} ({{category}})"
description: "Supplier ID: {{create-supplier.supplier_id}}\nContact: {{contact_email}}\nSharePoint: {{provision-folder.url}}"
consumes:
- type: http
namespace: supplier-api
baseUri: "https://supplier-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.supplier_api_token"
resources:
- name: suppliers
path: "/suppliers"
operations:
- name: create-supplier
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: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
- type: http
namespace: jira
baseUri: "https://wayfair.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
Aggregates supplier delivery metrics from the warehouse API, fetches quality scores from the supplier scorecard, pulls customer complaint data from Zendesk, and compiles a performance report in Google Drive.
naftiko: "0.5"
info:
label: "Supplier Performance Review Orchestrator"
description: "Aggregates supplier delivery metrics from the warehouse API, fetches quality scores from the supplier scorecard, pulls customer complaint data from Zendesk, and compiles a performance report in Google Drive."
tags:
- supply-chain
- supplier-management
- zendesk
- google-drive
- quality-assurance
capability:
exposes:
- type: mcp
namespace: supplier-performance
port: 8080
tools:
- name: generate-supplier-review
description: "Given a supplier ID and review period, aggregate delivery metrics, quality scores, customer complaints, and compile a performance report in Google Drive."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The Wayfair supplier ID."
- name: period_start
in: body
type: string
description: "Review period start date (YYYY-MM-DD)."
- name: period_end
in: body
type: string
description: "Review period end date (YYYY-MM-DD)."
steps:
- name: get-delivery-metrics
type: call
call: "warehouse-api.get-supplier-metrics"
with:
supplier_id: "{{supplier_id}}"
start_date: "{{period_start}}"
end_date: "{{period_end}}"
- name: get-quality-scores
type: call
call: "supplier-api.get-scorecard"
with:
supplier_id: "{{supplier_id}}"
period: "{{period_start}}_{{period_end}}"
- name: get-complaints
type: call
call: "zendesk.search-tickets"
with:
query: "type:ticket tags:supplier_{{supplier_id}} created>{{period_start}} created<{{period_end}}"
- name: create-report
type: call
call: "gdrive.create-document"
with:
title: "Supplier Performance Review — {{get-quality-scores.supplier_name}} — {{period_start}} to {{period_end}}"
folder_id: "supplier_reviews"
content: "On-Time Delivery: {{get-delivery-metrics.on_time_rate}}% | Damage Rate: {{get-delivery-metrics.damage_rate}}% | Quality Score: {{get-quality-scores.overall_score}}/100 | Customer Complaints: {{get-complaints.count}} | Fill Rate: {{get-delivery-metrics.fill_rate}}%"
consumes:
- type: http
namespace: warehouse-api
baseUri: "https://warehouse-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.warehouse_api_token"
resources:
- name: supplier-metrics
path: "/suppliers/{{supplier_id}}/metrics"
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier-metrics
method: GET
- type: http
namespace: supplier-api
baseUri: "https://supplier-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.supplier_api_token"
resources:
- name: scorecards
path: "/suppliers/{{supplier_id}}/scorecard"
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-scorecard
method: GET
- type: http
namespace: zendesk
baseUri: "https://wayfair.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: search
path: "/search.json"
operations:
- name: search-tickets
method: GET
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
operations:
- name: create-document
method: POST
Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.
naftiko: "0.5"
info:
label: "Sustainability Metrics Collection Orchestrator"
description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
tags:
- sustainability
- analytics
- compliance
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: run-sustainability-metrics-collection-orchestrator
description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves the latest data snapshot from a Tableau workbook view. Returns the last refresh timestamp and key metric values for executive dashboards and automated reporting.
naftiko: "0.5"
info:
label: "Tableau Dashboard Snapshot"
description: "Retrieves the latest data snapshot from a Tableau workbook view. Returns the last refresh timestamp and key metric values for executive dashboards and automated reporting."
tags:
- analytics
- business-intelligence
- tableau
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: get-dashboard-snapshot
description: "Fetch the latest snapshot from a Tableau workbook view including refresh timestamp and summary metrics."
inputParameters:
- name: view_id
in: body
type: string
description: "The Tableau view ID or content URL path."
call: "tableau.get-view-data"
with:
view_id: "{{view_id}}"
outputParameters:
- name: last_refresh
type: string
mapping: "$.view.updatedAt"
- name: data_values
type: array
mapping: "$.view.data.values"
consumes:
- type: http
namespace: tableau
baseUri: "https://tableau.wayfair.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: views
path: "/sites/wayfair/views/{{view_id}}/data"
inputParameters:
- name: view_id
in: path
operations:
- name: get-view-data
method: GET
Compares the current Terraform state with the actual AWS infrastructure, identifies drift, creates a ServiceNow change request, and alerts the platform team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Terraform Infrastructure Drift Detector"
description: "Compares the current Terraform state with the actual AWS infrastructure, identifies drift, creates a ServiceNow change request, and alerts the platform team in Microsoft Teams."
tags:
- engineering
- infrastructure
- terraform
- servicenow
- microsoft-teams
- amazon-web-services
capability:
exposes:
- type: mcp
namespace: infra-drift
port: 8080
tools:
- name: detect-infrastructure-drift
description: "Given a Terraform workspace, detect drift from actual AWS state, create a ServiceNow change request, and alert the platform team."
inputParameters:
- name: workspace_name
in: body
type: string
description: "The Terraform Cloud workspace name."
- name: environment
in: body
type: string
description: "The target environment (e.g., production, staging)."
steps:
- name: get-state
type: call
call: "terraform-cloud.get-current-state"
with:
workspace: "{{workspace_name}}"
- name: run-plan
type: call
call: "terraform-cloud.create-plan"
with:
workspace: "{{workspace_name}}"
is_destroy: "false"
- name: create-change-request
type: call
call: "servicenow.create-change"
with:
short_description: "Infrastructure drift detected: {{workspace_name}} ({{environment}})"
description: "Terraform plan detected {{run-plan.resource_changes}} resource changes in workspace {{workspace_name}}. Additions: {{run-plan.additions}}, Changes: {{run-plan.modifications}}, Deletions: {{run-plan.deletions}}."
category: "infrastructure"
risk: "moderate"
- name: alert-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "platform-infra"
text: "Infrastructure Drift: {{workspace_name}} ({{environment}}) | +{{run-plan.additions}} ~{{run-plan.modifications}} -{{run-plan.deletions}} | Change Request: {{create-change-request.number}}"
consumes:
- type: http
namespace: terraform-cloud
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_cloud_token"
resources:
- name: state-versions
path: "/workspaces/{{workspace}}/current-state-version"
inputParameters:
- name: workspace
in: path
operations:
- name: get-current-state
method: GET
- name: runs
path: "/runs"
operations:
- name: create-plan
method: POST
- type: http
namespace: servicenow
baseUri: "https://wayfair.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: changes
path: "/table/change_request"
operations:
- name: create-change
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/wayfair-platform/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.
naftiko: "0.5"
info:
label: "Third Party Risk Assessment Orchestrator"
description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
tags:
- risk
- procurement
- compliance
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: run-third-party-risk-assessment-orchestrator
description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Third Party Risk Assessment Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.
naftiko: "0.5"
info:
label: "Vendor Contract Renewal Pipeline"
description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
tags:
- procurement
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-vendor-contract-renewal-pipeline
description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wayfair.com/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
When new product images are uploaded to S3, runs the computer vision model to extract visual features, indexes the features in Elasticsearch for visual search, and publishes an indexing event to Kafka.
naftiko: "0.5"
info:
label: "Visual Search Image Indexing Pipeline"
description: "When new product images are uploaded to S3, runs the computer vision model to extract visual features, indexes the features in Elasticsearch for visual search, and publishes an indexing event to Kafka."
tags:
- e-commerce
- machine-learning
- computer-vision
- amazon-s3
- elasticsearch
- apache-kafka
capability:
exposes:
- type: mcp
namespace: visual-search
port: 8080
tools:
- name: index-product-image
description: "Given an S3 image key and SKU, extract visual features via the CV model, index in Elasticsearch, and publish the event."
inputParameters:
- name: s3_bucket
in: body
type: string
description: "The S3 bucket containing the product image."
- name: s3_key
in: body
type: string
description: "The S3 object key for the product image."
- name: sku
in: body
type: string
description: "The product SKU associated with the image."
steps:
- name: get-image-url
type: call
call: "s3-api.generate-presigned-url"
with:
bucket: "{{s3_bucket}}"
key: "{{s3_key}}"
- name: extract-features
type: call
call: "cv-service.extract-visual-features"
with:
image_url: "{{get-image-url.presigned_url}}"
model: "product-visual-v3"
- name: index-features
type: call
call: "es.index-visual-features"
with:
sku: "{{sku}}"
feature_vector: "{{extract-features.feature_vector}}"
color_palette: "{{extract-features.dominant_colors}}"
style_tags: "{{extract-features.style_tags}}"
- name: publish-event
type: call
call: "kafka-bridge.publish-event"
with:
topic: "visual-search.indexed"
key: "{{sku}}"
payload: "{\"sku\":\"{{sku}}\",\"image_key\":\"{{s3_key}}\",\"feature_dimensions\":{{extract-features.dimensions}}}"
consumes:
- type: http
namespace: s3-api
baseUri: "https://s3-gateway.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.aws_session_token"
resources:
- name: presigned
path: "/presign/{{bucket}}/{{key}}"
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: generate-presigned-url
method: GET
- type: http
namespace: cv-service
baseUri: "https://ml-platform.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.ml_platform_token"
resources:
- name: visual-features
path: "/models/visual-features/predict"
operations:
- name: extract-visual-features
method: POST
- type: http
namespace: es
baseUri: "https://es-prod.wayfair.com"
authentication:
type: basic
username: "$secrets.es_user"
password: "$secrets.es_password"
resources:
- name: visual-index
path: "/visual-search/_doc/{{sku}}"
inputParameters:
- name: sku
in: path
operations:
- name: index-visual-features
method: PUT
- type: http
namespace: kafka-bridge
baseUri: "https://kafka-rest.wayfair.com/v2"
authentication:
type: bearer
token: "$secrets.kafka_rest_token"
resources:
- name: topics
path: "/topics/{{topic}}"
inputParameters:
- name: topic
in: path
operations:
- name: publish-event
method: POST
Aggregates current inventory levels from the warehouse API, forecasts demand using the ML platform, pulls inbound shipment data, and creates a capacity planning report in Google Drive for logistics leadership.
naftiko: "0.5"
info:
label: "Warehouse Capacity Planning Orchestrator"
description: "Aggregates current inventory levels from the warehouse API, forecasts demand using the ML platform, pulls inbound shipment data, and creates a capacity planning report in Google Drive for logistics leadership."
tags:
- logistics
- inventory-management
- machine-learning
- google-drive
- supply-chain
capability:
exposes:
- type: mcp
namespace: capacity-planning
port: 8080
tools:
- name: generate-capacity-report
description: "Given a warehouse ID and planning horizon, aggregate inventory, forecast demand, assess inbound shipments, and compile a capacity planning document."
inputParameters:
- name: warehouse_id
in: body
type: string
description: "The warehouse facility ID."
- name: planning_horizon_days
in: body
type: number
description: "Number of days to forecast ahead."
steps:
- name: get-current-inventory
type: call
call: "warehouse-api.get-inventory-summary"
with:
warehouse_id: "{{warehouse_id}}"
- name: forecast-demand
type: call
call: "ml-demand.predict"
with:
warehouse_id: "{{warehouse_id}}"
horizon_days: "{{planning_horizon_days}}"
current_utilization: "{{get-current-inventory.utilization_pct}}"
- name: get-inbound-shipments
type: call
call: "warehouse-api.get-inbound"
with:
warehouse_id: "{{warehouse_id}}"
days_ahead: "{{planning_horizon_days}}"
- name: create-report
type: call
call: "gdrive.create-document"
with:
title: "Capacity Plan — Warehouse {{warehouse_id}} — {{planning_horizon_days}} Day Horizon"
folder_id: "logistics_planning"
content: "Current Utilization: {{get-current-inventory.utilization_pct}}% | Available Slots: {{get-current-inventory.available_slots}} | Forecasted Demand: {{forecast-demand.predicted_units}} units | Inbound Shipments: {{get-inbound-shipments.shipment_count}} ({{get-inbound-shipments.total_units}} units) | Projected Utilization: {{forecast-demand.projected_utilization}}%"
consumes:
- type: http
namespace: warehouse-api
baseUri: "https://warehouse-api.wayfair.com/api/v2"
authentication:
type: bearer
token: "$secrets.warehouse_api_token"
resources:
- name: inventory-summary
path: "/warehouses/{{warehouse_id}}/inventory/summary"
inputParameters:
- name: warehouse_id
in: path
operations:
- name: get-inventory-summary
method: GET
- name: inbound
path: "/warehouses/{{warehouse_id}}/inbound"
inputParameters:
- name: warehouse_id
in: path
operations:
- name: get-inbound
method: GET
- type: http
namespace: ml-demand
baseUri: "https://ml-platform.wayfair.com/api/v1"
authentication:
type: bearer
token: "$secrets.ml_platform_token"
resources:
- name: demand-forecast
path: "/models/demand-forecast/predict"
operations:
- name: predict
method: POST
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
operations:
- name: create-document
method: POST
Retrieves stock level for a product in a warehouse.
naftiko: "0.5"
info:
label: "Warehouse Stock Level"
description: "Retrieves stock level for a product in a warehouse."
tags:
- warehouse
- supply-chain
capability:
exposes:
- type: mcp
namespace: warehouse
port: 8080
tools:
- name: get-warehouse
description: "Retrieves stock level for a product in a warehouse."
inputParameters:
- name: entity_id
in: body
type: string
description: "The warehouse stock level identifier."
call: "warehouse-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: warehouse-api
baseUri: "https://api.wayfair.com/warehouse/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: warehouse
path: "/warehouse/stock/level/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-warehouse
method: GET
Looks up a Workday employee by ID and returns full name, department, job title, location, and manager. Used by HR, IT, and engineering teams for quick employee lookups.
naftiko: "0.5"
info:
label: "Workday Employee Directory Lookup"
description: "Looks up a Workday employee by ID and returns full name, department, job title, location, and manager. Used by HR, IT, and engineering teams for quick employee lookups."
tags:
- hr
- employee-data
- workday
capability:
exposes:
- type: mcp
namespace: hr-directory
port: 8080
tools:
- name: get-employee
description: "Look up a Workday employee by worker ID. Returns full name, department, title, location, and manager name."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.worker.fullName"
- name: department
type: string
mapping: "$.worker.department"
- name: job_title
type: string
mapping: "$.worker.jobTitle"
- name: location
type: string
mapping: "$.worker.location"
- name: manager
type: string
mapping: "$.worker.manager.fullName"
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
Retrieves employee profile from Workday.
naftiko: "0.5"
info:
label: "Workday Employee Profile"
description: "Retrieves employee profile from Workday."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-workday
description: "Retrieves employee profile from Workday."
inputParameters:
- name: entity_id
in: body
type: string
description: "The workday employee profile identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.wayfair.com/hr/v1"
authentication:
type: bearer
token: "$secrets.wayfair_api_token"
resources:
- name: workday
path: "/workday/employee/profile/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-workday
method: GET
Pulls current headcount data from Workday, segments by department and location, and creates a summary spreadsheet in Google Drive for HR leadership review.
naftiko: "0.5"
info:
label: "Workday Headcount Report"
description: "Pulls current headcount data from Workday, segments by department and location, and creates a summary spreadsheet in Google Drive for HR leadership review."
tags:
- hr
- workforce-planning
- workday
- google-drive
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: generate-headcount-report
description: "Given a report date, pull Workday headcount data and create a Google Drive spreadsheet with department and location breakdowns."
inputParameters:
- name: report_date
in: body
type: string
description: "The effective date for the headcount snapshot (YYYY-MM-DD)."
steps:
- name: get-headcount
type: call
call: "workday.get-headcount-report"
with:
effective_date: "{{report_date}}"
- name: create-report
type: call
call: "gdrive.create-spreadsheet"
with:
title: "Headcount Report — {{report_date}}"
folder_id: "hr_reports"
data: "{{get-headcount.department_summary}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: reports
path: "/reports/headcount"
operations:
- name: get-headcount-report
method: GET
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
operations:
- name: create-spreadsheet
method: POST
Retrieves a Zendesk support ticket by ID and returns subject, status, priority, assignee group, and customer satisfaction rating. Used by CX leadership for escalation reviews.
naftiko: "0.5"
info:
label: "Zendesk Ticket Status"
description: "Retrieves a Zendesk support ticket by ID and returns subject, status, priority, assignee group, and customer satisfaction rating. Used by CX leadership for escalation reviews."
tags:
- customer-service
- support
- zendesk
capability:
exposes:
- type: mcp
namespace: cx-support
port: 8080
tools:
- name: get-support-ticket
description: "Look up a Zendesk ticket by ID. Returns subject, status, priority, assigned group, and CSAT rating."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The Zendesk ticket ID."
call: "zendesk.get-ticket"
with:
ticket_id: "{{ticket_id}}"
outputParameters:
- name: subject
type: string
mapping: "$.ticket.subject"
- name: status
type: string
mapping: "$.ticket.status"
- name: priority
type: string
mapping: "$.ticket.priority"
- name: assigned_group
type: string
mapping: "$.ticket.group_id"
- name: satisfaction_rating
type: string
mapping: "$.ticket.satisfaction_rating.score"
consumes:
- type: http
namespace: zendesk
baseUri: "https://wayfair.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets/{{ticket_id}}.json"
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET