Aéropostale Capabilities
Naftiko 0.5 capability definitions for Aéropostale - 100 capabilities showing integration workflows and service orchestrations.
When a Shopify cart is abandoned for more than two hours, triggers a recovery email via MailChimp with a personalized discount code and logs the attempt in Google Sheets.
naftiko: "0.5"
info:
label: "Abandoned Cart Recovery Workflow"
description: "When a Shopify cart is abandoned for more than two hours, triggers a recovery email via MailChimp with a personalized discount code and logs the attempt in Google Sheets."
tags:
- e-commerce
- marketing
- shopify
- mailchimp
- google-sheets
capability:
exposes:
- type: mcp
namespace: cart-recovery
port: 8080
tools:
- name: recover-abandoned-cart
description: "Send a personalized recovery email for an abandoned cart and track the outreach."
inputParameters:
- name: checkout_id
in: body
type: string
description: "Shopify abandoned checkout ID."
- name: customer_email
in: body
type: string
description: "Customer email address."
- name: discount_code
in: body
type: string
description: "Discount code to include in the recovery email."
steps:
- name: get-checkout
type: call
call: "shopify.get-abandoned-checkout"
with:
checkout_id: "{{checkout_id}}"
- name: send-recovery
type: call
call: "mailchimp.send-transactional"
with:
template: "cart_recovery"
to_email: "{{customer_email}}"
merge_vars:
cart_url: "{{get-checkout.recovery_url}}"
discount_code: "{{discount_code}}"
cart_total: "{{get-checkout.total_price}}"
- name: log-attempt
type: call
call: "gsheets.append-row"
with:
spreadsheet_id: "aero_cart_recovery"
range: "Attempts!A:D"
values:
- "{{checkout_id}}"
- "{{customer_email}}"
- "{{discount_code}}"
- "sent"
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: checkouts
path: "/checkouts/{{checkout_id}}.json"
inputParameters:
- name: checkout_id
in: path
operations:
- name: get-abandoned-checkout
method: GET
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: apikey
key: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: values
path: "/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Collects access entitlements, routes for review, revokes expired access, and creates audit records.
naftiko: "0.5"
info:
label: "Access Review Certification Pipeline"
description: "Collects access entitlements, routes for review, revokes expired access, and creates audit records."
tags:
- security
- okta
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: access_review_certification_pipeline
description: "Orchestrate access review certification pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Access Review Certification Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://aeropostale.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves current monitoring alert status. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Alert Status Check"
description: "Retrieves current monitoring alert status. Used by Aeropostale teams."
tags:
- retail
- powerbi
capability:
exposes:
- type: mcp
namespace: powerbi
port: 8080
tools:
- name: get-alert_status_check
description: "Retrieves current monitoring alert status. Used by Aeropostale teams."
inputParameters:
- name: alert_id
in: body
type: string
description: "The alert_id to look up."
call: "powerbi.get-alert_id"
with:
alert_id: "{{alert_id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_alert_status_check
method: GET
Checks availability of an API endpoint. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale API Endpoint Status"
description: "Checks availability of an API endpoint. Used by Aeropostale teams."
tags:
- retail
- grafana
capability:
exposes:
- type: mcp
namespace: grafana
port: 8080
tools:
- name: get-api_endpoint_status
description: "Checks availability of an API endpoint. Used by Aeropostale teams."
inputParameters:
- name: endpoint_url
in: body
type: string
description: "The endpoint_url to look up."
call: "grafana.get-endpoint_url"
with:
endpoint_url: "{{endpoint_url}}"
consumes:
- type: http
namespace: grafana
baseUri: "https://aeropostale-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_api_endpoint_statu
method: GET
Retrieves compliance check status. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Compliance Check Status"
description: "Retrieves compliance check status. Used by Aeropostale teams."
tags:
- retail
- zendesk
capability:
exposes:
- type: mcp
namespace: zendesk
port: 8080
tools:
- name: get-compliance_check_status
description: "Retrieves compliance check status. Used by Aeropostale teams."
inputParameters:
- name: check_id
in: body
type: string
description: "The check_id to look up."
call: "zendesk.get-check_id"
with:
check_id: "{{check_id}}"
consumes:
- type: http
namespace: zendesk
baseUri: "https://aeropostale.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_compliance_check_s
method: GET
Queries cost and spending data. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Cost Report Query"
description: "Queries cost and spending data. Used by Aeropostale teams."
tags:
- retail
- stripe
capability:
exposes:
- type: mcp
namespace: stripe
port: 8080
tools:
- name: get-cost_report_query
description: "Queries cost and spending data. Used by Aeropostale teams."
inputParameters:
- name: cost_center
in: body
type: string
description: "The cost_center to look up."
call: "stripe.get-cost_center"
with:
cost_center: "{{cost_center}}"
consumes:
- type: http
namespace: stripe
baseUri: "https://api.stripe.com/v1"
authentication:
type: bearer
token: "$secrets.stripe_secret_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_cost_report_query
method: GET
Analyzes customer behavior, predicts churn risk, triggers retention campaigns, and tracks results.
naftiko: "0.5"
info:
label: "Customer Churn Prediction Pipeline"
description: "Analyzes customer behavior, predicts churn risk, triggers retention campaigns, and tracks results."
tags:
- analytics
- snowflake
- hubspot
- slack
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: aeropostale_customer_churn_prediction_pi
description: "Orchestrate customer churn prediction pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-hubspot
type: call
call: "hubspot.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Customer Churn Prediction Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: hubspot-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Executes a read-only analytics query. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Database Query Runner"
description: "Executes a read-only analytics query. Used by Aeropostale teams."
tags:
- retail
- datadog
capability:
exposes:
- type: mcp
namespace: datadog
port: 8080
tools:
- name: get-database_query_runner
description: "Executes a read-only analytics query. Used by Aeropostale teams."
inputParameters:
- name: sql_query
in: body
type: string
description: "The sql_query to look up."
call: "datadog.get-sql_query"
with:
sql_query: "{{sql_query}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_database_query_run
method: GET
Checks status of a recent deployment. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Deployment Status Check"
description: "Checks status of a recent deployment. Used by Aeropostale teams."
tags:
- retail
- elasticsearch
capability:
exposes:
- type: mcp
namespace: elasticsearc
port: 8080
tools:
- name: get-deployment_status_check
description: "Checks status of a recent deployment. Used by Aeropostale teams."
inputParameters:
- name: deployment_id
in: body
type: string
description: "The deployment_id to look up."
call: "elasticsearch.get-deployment_id"
with:
deployment_id: "{{deployment_id}}"
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://aeropostale-es.com:9200"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_deployment_status_
method: GET
Retrieves a document from knowledge management. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Document Retrieval"
description: "Retrieves a document from knowledge management. Used by Aeropostale teams."
tags:
- retail
- confluence
capability:
exposes:
- type: mcp
namespace: confluence
port: 8080
tools:
- name: get-document_retrieval
description: "Retrieves a document from knowledge management. Used by Aeropostale teams."
inputParameters:
- name: document_id
in: body
type: string
description: "The document_id to look up."
call: "confluence.get-document_id"
with:
document_id: "{{document_id}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://aeropostale.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_document_retrieval
method: GET
Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.
naftiko: "0.5"
info:
label: "Employee Onboarding Automation Pipeline"
description: "Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers."
tags:
- hr
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: aeropostale_employee_onboarding_automati
description: "Orchestrate employee onboarding automation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Employee Onboarding Automation Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/aeropostale"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Queries metric values from a monitoring dashboard. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Metric Dashboard Query"
description: "Queries metric values from a monitoring dashboard. Used by Aeropostale teams."
tags:
- retail
- jira
capability:
exposes:
- type: mcp
namespace: jira
port: 8080
tools:
- name: get-metric_dashboard_query
description: "Queries metric values from a monitoring dashboard. Used by Aeropostale teams."
inputParameters:
- name: metric_name
in: body
type: string
description: "The metric_name to look up."
call: "jira.get-metric_name"
with:
metric_name: "{{metric_name}}"
consumes:
- type: http
namespace: jira
baseUri: "https://aeropostale.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_jira_metric_dashbo
method: GET
Searches application logs for matching patterns. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Log Search Query"
description: "Searches application logs for matching patterns. Used by Aeropostale teams."
tags:
- retail
- servicenow
capability:
exposes:
- type: mcp
namespace: servicenow
port: 8080
tools:
- name: get-log_search_query
description: "Searches application logs for matching patterns. Used by Aeropostale teams."
inputParameters:
- name: search_query
in: body
type: string
description: "The search_query to look up."
call: "servicenow.get-search_query"
with:
search_query: "{{search_query}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_log_search_query
method: GET
Queries metric values from a monitoring dashboard. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Metric Dashboard Query"
description: "Queries metric values from a monitoring dashboard. Used by Aeropostale teams."
tags:
- retail
- jira
capability:
exposes:
- type: mcp
namespace: jira
port: 8080
tools:
- name: get-metric_dashboard_query
description: "Queries metric values from a monitoring dashboard. Used by Aeropostale teams."
inputParameters:
- name: metric_name
in: body
type: string
description: "The metric_name to look up."
call: "jira.get-metric_name"
with:
metric_name: "{{metric_name}}"
consumes:
- type: http
namespace: jira
baseUri: "https://aeropostale.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_metric_dashboard_q
method: GET
Synchronizes inventory across channels, resolves discrepancies, and updates all systems.
naftiko: "0.5"
info:
label: "Omnichannel Inventory Sync Pipeline"
description: "Synchronizes inventory across channels, resolves discrepancies, and updates all systems."
tags:
- inventory
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: aeropostale_omnichannel_inventory_sync_p
description: "Orchestrate omnichannel inventory sync pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Omnichannel Inventory Sync Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://aeropostale.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Checks the current status of a project. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Project Status Check"
description: "Checks the current status of a project. Used by Aeropostale teams."
tags:
- retail
- hubspot
capability:
exposes:
- type: mcp
namespace: hubspot
port: 8080
tools:
- name: get-project_status_check
description: "Checks the current status of a project. Used by Aeropostale teams."
inputParameters:
- name: project_key
in: body
type: string
description: "The project_key to look up."
call: "hubspot.get-project_key"
with:
project_key: "{{project_key}}"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_project_status_che
method: GET
Retrieves code repository information. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Repository Info Lookup"
description: "Retrieves code repository information. Used by Aeropostale teams."
tags:
- retail
- workday
capability:
exposes:
- type: mcp
namespace: workday
port: 8080
tools:
- name: get-repository_info_lookup
description: "Retrieves code repository information. Used by Aeropostale teams."
inputParameters:
- name: repo_name
in: body
type: string
description: "The repo_name to look up."
call: "workday.get-repo_name"
with:
repo_name: "{{repo_name}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/aeropostale"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_repository_info_lo
method: GET
Checks the health status of a monitored service. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Service Health Check"
description: "Checks the health status of a monitored service. Used by Aeropostale teams."
tags:
- retail
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce
port: 8080
tools:
- name: get-service_health_check
description: "Checks the health status of a monitored service. Used by Aeropostale teams."
inputParameters:
- name: health_target
in: body
type: string
description: "The health_target to look up."
call: "salesforce.get-health_target"
with:
health_target: "{{health_target}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://aeropostale.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_salesforce_service
method: GET
Runs demand forecast models, generates buy recommendations, and distributes to merchandising teams.
naftiko: "0.5"
info:
label: "Seasonal Demand Forecasting Pipeline"
description: "Runs demand forecast models, generates buy recommendations, and distributes to merchandising teams."
tags:
- planning
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: planning
port: 8080
tools:
- name: aeropostale_seasonal_demand_forecasting_
description: "Orchestrate seasonal demand forecasting pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-powerbi
type: call
call: "powerbi.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Seasonal Demand Forecasting Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.
naftiko: "0.5"
info:
label: "Security Incident Response Pipeline"
description: "Detects security incidents, enriches with context, creates response tickets, and notifies the SOC."
tags:
- security
- splunk
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: aeropostale_security_incident_response_p
description: "Orchestrate security incident response pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-jira
type: call
call: "jira.create-resource"
with:
channel: "{{notification_channel}}"
text: "Security Incident Response Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://aeropostale.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: "https://aeropostale.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
Retrieves vulnerability scan results. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Security Scan Results"
description: "Retrieves vulnerability scan results. Used by Aeropostale teams."
tags:
- retail
- github
capability:
exposes:
- type: mcp
namespace: github
port: 8080
tools:
- name: get-security_scan_results
description: "Retrieves vulnerability scan results. Used by Aeropostale teams."
inputParameters:
- name: scan_id
in: body
type: string
description: "The scan_id to look up."
call: "github.get-scan_id"
with:
scan_id: "{{scan_id}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_security_scan_resu
method: GET
Checks the health status of a monitored service. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Service Health Check"
description: "Checks the health status of a monitored service. Used by Aeropostale teams."
tags:
- retail
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce
port: 8080
tools:
- name: get-service_health_check
description: "Checks the health status of a monitored service. Used by Aeropostale teams."
inputParameters:
- name: health_target
in: body
type: string
description: "The health_target to look up."
call: "salesforce.get-health_target"
with:
health_target: "{{health_target}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://aeropostale.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_service_health_che
method: GET
Searches application logs for matching patterns. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Log Search Query"
description: "Searches application logs for matching patterns. Used by Aeropostale teams."
tags:
- retail
- servicenow
capability:
exposes:
- type: mcp
namespace: servicenow
port: 8080
tools:
- name: get-log_search_query
description: "Searches application logs for matching patterns. Used by Aeropostale teams."
inputParameters:
- name: search_query
in: body
type: string
description: "The search_query to look up."
call: "servicenow.get-search_query"
with:
search_query: "{{search_query}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_servicenow_log_sea
method: GET
Compares store metrics against benchmarks, identifies top and bottom performers, and distributes reports.
naftiko: "0.5"
info:
label: "Store Performance Benchmark Pipeline"
description: "Compares store metrics against benchmarks, identifies top and bottom performers, and distributes reports."
tags:
- analytics
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: aeropostale_store_performance_benchmark_
description: "Orchestrate store performance benchmark pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-powerbi
type: call
call: "powerbi.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Store Performance Benchmark Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves the details of a support ticket. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale Ticket Details Lookup"
description: "Retrieves the details of a support ticket. Used by Aeropostale teams."
tags:
- retail
- slack
capability:
exposes:
- type: mcp
namespace: slack
port: 8080
tools:
- name: get-ticket_details_lookup
description: "Retrieves the details of a support ticket. Used by Aeropostale teams."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The ticket_id to look up."
call: "slack.get-ticket_id"
with:
ticket_id: "{{ticket_id}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_ticket_details_loo
method: GET
Retrieves user account details from the directory. Used by Aeropostale teams.
naftiko: "0.5"
info:
label: "Aeropostale User Account Lookup"
description: "Retrieves user account details from the directory. Used by Aeropostale teams."
tags:
- retail
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake
port: 8080
tools:
- name: get-user_account_lookup
description: "Retrieves user account details from the directory. Used by Aeropostale teams."
inputParameters:
- name: user_id
in: body
type: string
description: "The user_id to look up."
call: "snowflake.get-user_id"
with:
user_id: "{{user_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: aeropostale_user_account_looku
method: GET
Reconciles vendor invoices with POs, flags discrepancies, processes payments, and sends remittances.
naftiko: "0.5"
info:
label: "Vendor Payment Reconciliation Pipeline"
description: "Reconciles vendor invoices with POs, flags discrepancies, processes payments, and sends remittances."
tags:
- finance
- servicenow
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: aeropostale_vendor_payment_reconciliatio
description: "Orchestrate vendor payment reconciliation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Vendor Payment Reconciliation Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://aeropostale.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress.
naftiko: "0.5"
info:
label: "API Deprecation Notice Pipeline"
description: "Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress."
tags:
- engineering
- datadog
- jira
- slack
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: api_deprecation_notice_pipeline
description: "Orchestrate api deprecation notice pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "API Deprecation Notice Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: jira
baseUri: "https://aeropostale.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Launches a back-to-school marketing blitz by scheduling an email campaign in MailChimp, creating Instagram and Facebook ad campaigns, and posting a countdown message to the store operations Teams channel.
naftiko: "0.5"
info:
label: "Back-to-School Campaign Orchestrator"
description: "Launches a back-to-school marketing blitz by scheduling an email campaign in MailChimp, creating Instagram and Facebook ad campaigns, and posting a countdown message to the store operations Teams channel."
tags:
- marketing
- campaigns
- mailchimp
- instagram
- facebook
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: bts-campaign
port: 8080
tools:
- name: launch-bts-campaign
description: "Coordinate the back-to-school marketing campaign across email, social, and in-store teams."
inputParameters:
- name: campaign_name
in: body
type: string
description: "Campaign name."
- name: start_date
in: body
type: string
description: "Campaign start date."
- name: email_template_id
in: body
type: string
description: "MailChimp template for the BTS email."
steps:
- name: create-email
type: call
call: "mailchimp.create-campaign"
with:
name: "{{campaign_name}}"
template_id: "{{email_template_id}}"
segment_id: "teen_segment"
- name: create-ig-ad
type: call
call: "instagram.create-ad"
with:
campaign_name: "{{campaign_name}}"
objective: "conversions"
start_time: "{{start_date}}"
- name: create-fb-ad
type: call
call: "facebook.create-ad"
with:
campaign_name: "{{campaign_name}}"
objective: "conversions"
start_time: "{{start_date}}"
- name: notify-stores
type: call
call: "msteams.send-message"
with:
channel_id: "store_ops"
text: "Back-to-School campaign '{{campaign_name}}' launching {{start_date}}. Prepare in-store signage and displays."
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: basic
username: "anystring"
password: "$secrets.mailchimp_api_key"
resources:
- name: campaigns
path: "/campaigns"
operations:
- name: create-campaign
method: POST
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.facebook_ads_token"
resources:
- name: ad-campaigns
path: "/act_{{ad_account_id}}/campaigns"
operations:
- name: create-ad
method: POST
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.facebook_ads_token"
resources:
- name: ad-campaigns
path: "/act_{{ad_account_id}}/campaigns"
operations:
- name: create-ad
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports.
naftiko: "0.5"
info:
label: "Capacity Planning Forecast Pipeline"
description: "Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports."
tags:
- infrastructure
- grafana
- snowflake
- powerbi
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: capacity_planning_forecast_pipeline
description: "Orchestrate capacity planning forecast pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-grafana
type: call
call: "grafana.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
data: "{{get-grafana.result}}"
- name: create-powerbi
type: call
call: "powerbi.create-resource"
with:
channel: "{{notification_channel}}"
text: "Capacity Planning Forecast Pipeline step 3 complete."
consumes:
- type: http
namespace: grafana
baseUri: "https://aeropostale-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
Validates change requests, routes for approval, schedules implementation, and notifies stakeholders.
naftiko: "0.5"
info:
label: "Change Management Approval Pipeline"
description: "Validates change requests, routes for approval, schedules implementation, and notifies stakeholders."
tags:
- itsm
- servicenow
- jira
- slack
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: change_management_approval_pipeline
description: "Orchestrate change management approval pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Change Management Approval Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: "https://aeropostale.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Collects audit events, validates against policies, generates compliance reports, and notifies auditors.
naftiko: "0.5"
info:
label: "Compliance Audit Trail Pipeline"
description: "Collects audit events, validates against policies, generates compliance reports, and notifies auditors."
tags:
- compliance
- elasticsearch
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: compliance_audit_trail_pipeline
description: "Orchestrate compliance audit trail pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-elasticsearch
type: call
call: "elasticsearch.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-elasticsearch.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Compliance Audit Trail Pipeline step 3 complete."
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://aeropostale-es.com:9200"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: elasticsearch-op
method: POST
- type: http
namespace: confluence
baseUri: "https://aeropostale.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders.
naftiko: "0.5"
info:
label: "Cost Center Budget Tracking Pipeline"
description: "Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders."
tags:
- finance
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: cost_center_budget_tracking
description: "Orchestrate cost center budget tracking pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-powerbi
type: call
call: "powerbi.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Cost Center Budget Tracking Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM.
naftiko: "0.5"
info:
label: "Customer 360 Data Sync Pipeline"
description: "Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM."
tags:
- data
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: data
port: 8080
tools:
- name: customer_360_data_sync_pipeline
description: "Orchestrate customer 360 data sync pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Customer 360 Data Sync Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://aeropostale.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Analyzes customer behavior, predicts churn risk, triggers retention campaigns, and tracks results.
naftiko: "0.5"
info:
label: "Customer Churn Prediction Pipeline"
description: "Analyzes customer behavior, predicts churn risk, triggers retention campaigns, and tracks results."
tags:
- analytics
- snowflake
- hubspot
- slack
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: customer_churn_prediction_pipeline
description: "Orchestrate customer churn prediction pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-hubspot
type: call
call: "hubspot.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Customer Churn Prediction Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: hubspot-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a return request is submitted through Shopify, validates the order in the OMS, creates a return merchandise authorization, updates inventory projections, and sends a return label email to the customer via MailChimp.
naftiko: "0.5"
info:
label: "Customer Return Processing Pipeline"
description: "When a return request is submitted through Shopify, validates the order in the OMS, creates a return merchandise authorization, updates inventory projections, and sends a return label email to the customer via MailChimp."
tags:
- retail
- returns
- shopify
- mailchimp
- customer-service
capability:
exposes:
- type: mcp
namespace: returns
port: 8080
tools:
- name: process-return
description: "Given an order ID and return reason, orchestrate the full return workflow across OMS, inventory, and customer communication."
inputParameters:
- name: order_id
in: body
type: string
description: "The Shopify order ID."
- name: reason
in: body
type: string
description: "Reason for the return."
- name: customer_email
in: body
type: string
description: "Customer email address."
steps:
- name: get-order
type: call
call: "shopify.get-order"
with:
order_id: "{{order_id}}"
- name: create-rma
type: call
call: "oms.create-rma"
with:
order_id: "{{order_id}}"
reason: "{{reason}}"
- name: update-inventory
type: call
call: "wms.adjust-projected-inventory"
with:
sku: "{{get-order.line_items[0].sku}}"
adjustment: 1
- name: send-label
type: call
call: "mailchimp.send-transactional"
with:
template: "return_label"
to_email: "{{customer_email}}"
merge_vars:
rma_number: "{{create-rma.rma_number}}"
order_id: "{{order_id}}"
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: orders
path: "/orders/{{order_id}}.json"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: oms
baseUri: "https://oms.aeropostale.com/api/v2"
authentication:
type: bearer
token: "$secrets.oms_token"
resources:
- name: returns
path: "/returns"
operations:
- name: create-rma
method: POST
- type: http
namespace: wms
baseUri: "https://wms.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.wms_token"
resources:
- name: inventory-adjust
path: "/inventory/{{sku}}/adjust"
inputParameters:
- name: sku
in: path
operations:
- name: adjust-projected-inventory
method: POST
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: apikey
key: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Creates a new customer segment in MailChimp based on purchase history criteria pulled from the e-commerce platform.
naftiko: "0.5"
info:
label: "Customer Segment Builder"
description: "Creates a new customer segment in MailChimp based on purchase history criteria pulled from the e-commerce platform."
tags:
- marketing
- segmentation
- mailchimp
- shopify
capability:
exposes:
- type: mcp
namespace: audience-segmentation
port: 8080
tools:
- name: create-purchase-segment
description: "Build a MailChimp audience segment from Shopify purchase history criteria."
inputParameters:
- name: segment_name
in: body
type: string
description: "Name for the new segment."
- name: product_category
in: body
type: string
description: "Product category to filter by."
- name: min_orders
in: body
type: number
description: "Minimum number of orders."
steps:
- name: get-customers
type: call
call: "shopify.search-customers"
with:
query: "orders_count:>={{min_orders}} AND tag:{{product_category}}"
- name: create-segment
type: call
call: "mailchimp.create-segment"
with:
list_id: "aero_main_list"
name: "{{segment_name}}"
emails: "{{get-customers.emails}}"
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: customers
path: "/customers/search.json"
operations:
- name: search-customers
method: GET
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: basic
username: "anystring"
password: "$secrets.mailchimp_api_key"
resources:
- name: segments
path: "/lists/{{list_id}}/segments"
inputParameters:
- name: list_id
in: path
operations:
- name: create-segment
method: POST
Creates a ServiceNow incident for a customer issue reported through the e-commerce site, attaching order details and notifying the support team.
naftiko: "0.5"
info:
label: "Customer Support Ticket Creator"
description: "Creates a ServiceNow incident for a customer issue reported through the e-commerce site, attaching order details and notifying the support team."
tags:
- customer-service
- servicenow
- shopify
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: customer-support
port: 8080
tools:
- name: create-support-ticket
description: "Open a ServiceNow incident for a customer complaint with order context and notify the support team."
inputParameters:
- name: customer_email
in: body
type: string
description: "Customer email address."
- name: order_id
in: body
type: string
description: "Related Shopify order ID."
- name: issue_description
in: body
type: string
description: "Description of the customer issue."
steps:
- name: get-order
type: call
call: "shopify.get-order"
with:
order_id: "{{order_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Customer issue: order {{order_id}}"
description: "{{issue_description}} | Order total: {{get-order.total_price}} | Customer: {{customer_email}}"
category: "customer_service"
urgency: "2"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "cs_escalations"
text: "New support ticket {{create-incident.number}} for order {{order_id}}. Customer: {{customer_email}}."
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: orders
path: "/orders/{{order_id}}.json"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: servicenow
baseUri: "https://aeropostale.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/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards.
naftiko: "0.5"
info:
label: "Data Quality Monitoring Pipeline"
description: "Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards."
tags:
- data-quality
- snowflake
- jira
- grafana
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: data_quality_monitoring_pipeline
description: "Orchestrate data quality monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-grafana
type: call
call: "grafana.create-resource"
with:
channel: "{{notification_channel}}"
text: "Data Quality Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: "https://aeropostale.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: grafana
baseUri: "https://aeropostale-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
When a new denim fit guide is finalized, uploads the content to the Shopify blog, posts a teaser to Instagram, and emails the subscriber list via MailChimp.
naftiko: "0.5"
info:
label: "Denim Fit Guide Content Publisher"
description: "When a new denim fit guide is finalized, uploads the content to the Shopify blog, posts a teaser to Instagram, and emails the subscriber list via MailChimp."
tags:
- marketing
- content
- shopify
- instagram
- mailchimp
capability:
exposes:
- type: mcp
namespace: content-publishing
port: 8080
tools:
- name: publish-fit-guide
description: "Publish a denim fit guide across the e-commerce blog, social media, and email."
inputParameters:
- name: title
in: body
type: string
description: "Fit guide title."
- name: body_html
in: body
type: string
description: "HTML content of the fit guide."
- name: hero_image_url
in: body
type: string
description: "URL of the hero image."
steps:
- name: publish-blog
type: call
call: "shopify.create-blog-post"
with:
blog_id: "style_guides"
title: "{{title}}"
body_html: "{{body_html}}"
- name: post-teaser
type: call
call: "instagram.create-post"
with:
caption: "New fit guide: {{title}}. Find your perfect denim at Aéropostale! Link in bio."
media_url: "{{hero_image_url}}"
- name: send-newsletter
type: call
call: "mailchimp.create-campaign"
with:
name: "Fit Guide: {{title}}"
template_id: "fit_guide_template"
segment_id: "denim_lovers"
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: blog-posts
path: "/blogs/{{blog_id}}/articles.json"
inputParameters:
- name: blog_id
in: path
operations:
- name: create-blog-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: "/me/media"
operations:
- name: create-post
method: POST
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: basic
username: "anystring"
password: "$secrets.mailchimp_api_key"
resources:
- name: campaigns
path: "/campaigns"
operations:
- name: create-campaign
method: POST
Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership.
naftiko: "0.5"
info:
label: "Disaster Recovery Readiness Pipeline"
description: "Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership."
tags:
- disaster-recovery
- servicenow
- confluence
- pagerduty
capability:
exposes:
- type: mcp
namespace: disaster-recovery
port: 8080
tools:
- name: disaster_recovery_readiness_pipeline
description: "Orchestrate disaster recovery readiness pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-jira
type: call
call: "jira.create-resource"
with:
channel: "{{notification_channel}}"
text: "Disaster Recovery Readiness Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: confluence
baseUri: "https://aeropostale.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: jira
baseUri: "https://aeropostale.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
Aggregates weekly sales from the POS for all stores in a district, computes comparisons, and emails the district manager a summary report via Microsoft Outlook.
naftiko: "0.5"
info:
label: "District Sales Comparison Report"
description: "Aggregates weekly sales from the POS for all stores in a district, computes comparisons, and emails the district manager a summary report via Microsoft Outlook."
tags:
- retail
- analytics
- pos
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: district-reporting
port: 8080
tools:
- name: generate-district-report
description: "Build a weekly district sales comparison and email it to the district manager."
inputParameters:
- name: district_id
in: body
type: string
description: "District identifier."
- name: week_ending
in: body
type: string
description: "Week ending date in YYYY-MM-DD format."
- name: manager_email
in: body
type: string
description: "District manager email."
steps:
- name: get-district-sales
type: call
call: "pos.get-district-weekly-sales"
with:
district_id: "{{district_id}}"
week_ending: "{{week_ending}}"
- name: send-report
type: call
call: "outlook.send-email"
with:
to: "{{manager_email}}"
subject: "Weekly Sales Report - District {{district_id}} ending {{week_ending}}"
body: "District {{district_id}} total revenue: ${{get-district-sales.total_revenue}}. Top store: {{get-district-sales.top_store}}. Comp vs last year: {{get-district-sales.comp_pct}}%."
consumes:
- type: http
namespace: pos
baseUri: "https://pos.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.pos_token"
resources:
- name: district-sales
path: "/districts/{{district_id}}/sales/weekly"
inputParameters:
- name: district_id
in: path
operations:
- name: get-district-weekly-sales
method: GET
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: send-mail
path: "/me/sendMail"
operations:
- name: send-email
method: POST
Fetches conversion funnel metrics from Google Optimize including A/B test variant performance and checkout completion rates.
naftiko: "0.5"
info:
label: "E-Commerce Conversion Rate Tracker"
description: "Fetches conversion funnel metrics from Google Optimize including A/B test variant performance and checkout completion rates."
tags:
- analytics
- e-commerce
- google-optimize
- conversion
capability:
exposes:
- type: mcp
namespace: conversion-analytics
port: 8080
tools:
- name: get-conversion-metrics
description: "Retrieve A/B test variant performance and checkout funnel conversion rates."
inputParameters:
- name: experiment_id
in: body
type: string
description: "Google Optimize experiment ID."
call: "goptimize.get-experiment-results"
with:
experiment_id: "{{experiment_id}}"
outputParameters:
- name: variants
type: array
mapping: "$.experiment.variants"
- name: winning_variant
type: string
mapping: "$.experiment.leading_variant"
- name: conversion_rate
type: number
mapping: "$.experiment.overall_conversion_rate"
consumes:
- type: http
namespace: goptimize
baseUri: "https://www.googleapis.com/analytics/v3/management"
authentication:
type: bearer
token: "$secrets.google_optimize_token"
resources:
- name: experiments
path: "/accounts/{{account_id}}/webproperties/{{property_id}}/experiments/{{experiment_id}}"
inputParameters:
- name: experiment_id
in: path
operations:
- name: get-experiment-results
method: GET
Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.
naftiko: "0.5"
info:
label: "Employee Onboarding Automation Pipeline"
description: "Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers."
tags:
- hr
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: employee_onboarding_automation
description: "Orchestrate employee onboarding automation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Employee Onboarding Automation Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/aeropostale"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a new store associate is hired, creates a ServiceNow onboarding ticket, provisions a POS account, adds the associate to the store Microsoft Teams channel, and sends a welcome email via MailChimp.
naftiko: "0.5"
info:
label: "Employee Onboarding Pipeline"
description: "When a new store associate is hired, creates a ServiceNow onboarding ticket, provisions a POS account, adds the associate to the store Microsoft Teams channel, and sends a welcome email via MailChimp."
tags:
- hr
- onboarding
- servicenow
- pos
- microsoft-teams
- mailchimp
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: onboard-associate
description: "Run the full onboarding workflow for a new Aéropostale store associate."
inputParameters:
- name: employee_name
in: body
type: string
description: "New employee full name."
- name: employee_email
in: body
type: string
description: "New employee email address."
- name: store_id
in: body
type: string
description: "Store location where the associate will work."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
steps:
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Onboarding: {{employee_name}} at store {{store_id}}"
category: "hr_onboarding"
description: "New associate {{employee_name}} starting {{start_date}} at store {{store_id}}."
- name: provision-pos
type: call
call: "pos.create-user"
with:
name: "{{employee_name}}"
email: "{{employee_email}}"
store_id: "{{store_id}}"
role: "associate"
- name: add-to-teams
type: call
call: "msteams.add-member"
with:
team_id: "store_{{store_id}}_team"
user_email: "{{employee_email}}"
- name: send-welcome
type: call
call: "mailchimp.send-transactional"
with:
template: "associate_welcome"
to_email: "{{employee_email}}"
merge_vars:
name: "{{employee_name}}"
start_date: "{{start_date}}"
store_id: "{{store_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.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: pos
baseUri: "https://pos.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.pos_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: members
path: "/teams/{{team_id}}/members"
inputParameters:
- name: team_id
in: path
operations:
- name: add-member
method: POST
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: apikey
key: "$secrets.mailchimp_transactional_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Retrieves performance metrics for a Facebook ad campaign including spend, impressions, clicks, and conversions.
naftiko: "0.5"
info:
label: "Facebook Ad Performance Report"
description: "Retrieves performance metrics for a Facebook ad campaign including spend, impressions, clicks, and conversions."
tags:
- marketing
- advertising
- facebook
capability:
exposes:
- type: mcp
namespace: ad-analytics
port: 8080
tools:
- name: get-fb-ad-performance
description: "Fetch Facebook ad campaign performance metrics."
inputParameters:
- name: campaign_id
in: body
type: string
description: "Facebook campaign ID."
- name: date_range
in: body
type: string
description: "Date range for the report."
call: "facebook.get-campaign-insights"
with:
campaign_id: "{{campaign_id}}"
date_range: "{{date_range}}"
outputParameters:
- name: spend
type: number
mapping: "$.data[0].spend"
- name: impressions
type: number
mapping: "$.data[0].impressions"
- name: clicks
type: number
mapping: "$.data[0].clicks"
- name: conversions
type: number
mapping: "$.data[0].actions[0].value"
consumes:
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.facebook_ads_token"
resources:
- name: insights
path: "/{{campaign_id}}/insights"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-insights
method: GET
When a flash sale is triggered, reserves inventory for the sale SKUs in the warehouse system, applies temporary pricing in Shopify, and sends an urgent notification to the e-commerce team.
naftiko: "0.5"
info:
label: "Flash Sale Inventory Reservation"
description: "When a flash sale is triggered, reserves inventory for the sale SKUs in the warehouse system, applies temporary pricing in Shopify, and sends an urgent notification to the e-commerce team."
tags:
- retail
- flash-sale
- shopify
- wms
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: flash-sales
port: 8080
tools:
- name: activate-flash-sale
description: "Reserve inventory, apply sale pricing, and alert the team for a flash sale event."
inputParameters:
- name: sale_id
in: body
type: string
description: "Flash sale event identifier."
- name: skus
in: body
type: array
description: "List of SKUs included in the flash sale."
- name: discount_percent
in: body
type: number
description: "Discount percentage to apply."
steps:
- name: reserve-inventory
type: call
call: "wms.reserve-inventory"
with:
sale_id: "{{sale_id}}"
skus: "{{skus}}"
- name: apply-pricing
type: call
call: "shopify.apply-sale-pricing"
with:
skus: "{{skus}}"
discount_percent: "{{discount_percent}}"
- name: notify-ecom
type: call
call: "msteams.send-message"
with:
channel_id: "ecommerce_ops"
text: "Flash sale {{sale_id}} is LIVE. {{reserve-inventory.reserved_count}} SKUs reserved at {{discount_percent}}% off."
consumes:
- type: http
namespace: wms
baseUri: "https://wms.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.wms_token"
resources:
- name: reservations
path: "/reservations"
operations:
- name: reserve-inventory
method: POST
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: price-rules
path: "/price_rules.json"
operations:
- name: apply-sale-pricing
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries the payment processing system for the current balance and expiration date of a given gift card number.
naftiko: "0.5"
info:
label: "Gift Card Balance Checker"
description: "Queries the payment processing system for the current balance and expiration date of a given gift card number."
tags:
- retail
- payments
- gift-cards
capability:
exposes:
- type: mcp
namespace: gift-cards
port: 8080
tools:
- name: check-gift-card-balance
description: "Look up the remaining balance and expiration for an Aéropostale gift card."
inputParameters:
- name: card_number
in: body
type: string
description: "Gift card number."
call: "payments.get-gift-card"
with:
card_number: "{{card_number}}"
outputParameters:
- name: balance
type: number
mapping: "$.gift_card.balance"
- name: currency
type: string
mapping: "$.gift_card.currency"
- name: expires_at
type: string
mapping: "$.gift_card.expires_at"
consumes:
- type: http
namespace: payments
baseUri: "https://payments.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.payments_token"
resources:
- name: gift-cards
path: "/gift-cards/{{card_number}}"
inputParameters:
- name: card_number
in: path
operations:
- name: get-gift-card
method: GET
Pulls website traffic metrics from Google Analytics for a specified date range and returns page views, session duration, and bounce rate for the Aéropostale e-commerce site.
naftiko: "0.5"
info:
label: "Google Analytics Traffic Report"
description: "Pulls website traffic metrics from Google Analytics for a specified date range and returns page views, session duration, and bounce rate for the Aéropostale e-commerce site."
tags:
- analytics
- e-commerce
- google-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-traffic-report
description: "Retrieve key website traffic metrics for the Aéropostale online store over a given date range."
inputParameters:
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End date in YYYY-MM-DD format."
call: "ga.get-report"
with:
view_id: "aero_ecommerce"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
metrics: "ga:pageviews,ga:avgSessionDuration,ga:bounceRate"
outputParameters:
- name: page_views
type: number
mapping: "$.reports[0].data.totals[0].values[0]"
- name: avg_session_duration
type: string
mapping: "$.reports[0].data.totals[0].values[1]"
- name: bounce_rate
type: string
mapping: "$.reports[0].data.totals[0].values[2]"
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
Returns the nearest Aéropostale store locations to a given ZIP code using the Google Maps Places API.
naftiko: "0.5"
info:
label: "Google Maps Store Locator"
description: "Returns the nearest Aéropostale store locations to a given ZIP code using the Google Maps Places API."
tags:
- retail
- google-maps
- store-locator
capability:
exposes:
- type: mcp
namespace: store-locator
port: 8080
tools:
- name: find-nearest-stores
description: "Find the closest Aéropostale stores to a given ZIP code."
inputParameters:
- name: zip_code
in: body
type: string
description: "Customer ZIP code."
- name: radius_miles
in: body
type: number
description: "Search radius in miles."
call: "gmaps.search-places"
with:
query: "Aeropostale"
location: "{{zip_code}}"
radius: "{{radius_miles}}"
outputParameters:
- name: stores
type: array
mapping: "$.results"
- name: count
type: number
mapping: "$.results.length"
consumes:
- type: http
namespace: gmaps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: apikey
key: "$secrets.google_maps_key"
resources:
- name: places
path: "/place/textsearch/json"
operations:
- name: search-places
method: GET
Appends a row of data to a specified Google Sheets spreadsheet. Used as a reusable logging component across workflows.
naftiko: "0.5"
info:
label: "Google Sheets Row Appender"
description: "Appends a row of data to a specified Google Sheets spreadsheet. Used as a reusable logging component across workflows."
tags:
- productivity
- google-sheets
- logging
capability:
exposes:
- type: mcp
namespace: sheets-logging
port: 8080
tools:
- name: append-sheet-row
description: "Append a row to a Google Sheets spreadsheet."
inputParameters:
- name: spreadsheet_id
in: body
type: string
description: "Google Sheets spreadsheet ID."
- name: range
in: body
type: string
description: "Sheet range such as Sheet1!A:D."
- name: values
in: body
type: array
description: "Array of values for the new row."
call: "gsheets.append-row"
with:
spreadsheet_id: "{{spreadsheet_id}}"
range: "{{range}}"
values: "{{values}}"
consumes:
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: values
path: "/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops.
naftiko: "0.5"
info:
label: "Infrastructure Drift Detection Pipeline"
description: "Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops."
tags:
- devops
- github
- jira
- slack
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: infrastructure_drift_detection
description: "Orchestrate infrastructure drift detection pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-github
type: call
call: "github.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-github.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Infrastructure Drift Detection Pipeline step 3 complete."
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: github-op
method: POST
- type: http
namespace: jira
baseUri: "https://aeropostale.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When an influencer posts tagged content on Instagram, captures engagement metrics, logs them to Google Sheets, and sends a performance summary to the marketing team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Instagram Influencer Campaign Tracker"
description: "When an influencer posts tagged content on Instagram, captures engagement metrics, logs them to Google Sheets, and sends a performance summary to the marketing team in Microsoft Teams."
tags:
- marketing
- social-media
- instagram
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: influencer-tracking
port: 8080
tools:
- name: track-influencer-post
description: "Given an Instagram media ID and influencer handle, capture engagement data and route to marketing dashboards."
inputParameters:
- name: media_id
in: body
type: string
description: "Instagram media ID."
- name: influencer_handle
in: body
type: string
description: "The influencer Instagram handle."
- name: campaign_name
in: body
type: string
description: "Associated campaign name."
steps:
- name: get-metrics
type: call
call: "instagram.get-media-insights"
with:
media_id: "{{media_id}}"
- name: log-to-sheet
type: call
call: "gsheets.append-row"
with:
spreadsheet_id: "aero_influencer_tracker"
range: "Posts!A:F"
values:
- "{{influencer_handle}}"
- "{{media_id}}"
- "{{campaign_name}}"
- "{{get-metrics.likes}}"
- "{{get-metrics.comments}}"
- "{{get-metrics.reach}}"
- name: notify-marketing
type: call
call: "msteams.send-message"
with:
channel_id: "marketing_social"
text: "Influencer {{influencer_handle}} post for {{campaign_name}}: {{get-metrics.likes}} likes, {{get-metrics.comments}} comments, {{get-metrics.reach}} reach."
consumes:
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: media-insights
path: "/{{media_id}}/insights"
inputParameters:
- name: media_id
in: path
operations:
- name: get-media-insights
method: GET
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: values
path: "/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB.
naftiko: "0.5"
info:
label: "IT Asset Lifecycle Pipeline"
description: "Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB."
tags:
- operations
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: it_asset_lifecycle_pipeline
description: "Orchestrate it asset lifecycle pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "IT Asset Lifecycle Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves the current status, assignee, and due date for a Jira issue by key.
naftiko: "0.5"
info:
label: "Jira Task Status Lookup"
description: "Retrieves the current status, assignee, and due date for a Jira issue by key."
tags:
- 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 and return its status, assignee, and due date."
inputParameters:
- name: issue_key
in: body
type: string
description: "Jira issue key such as VM-123."
call: "jira.get-issue"
with:
issue_key: "{{issue_key}}"
outputParameters:
- name: status
type: string
mapping: "$.fields.status.name"
- name: assignee
type: string
mapping: "$.fields.assignee.displayName"
- name: due_date
type: string
mapping: "$.fields.duedate"
consumes:
- type: http
namespace: jira
baseUri: "https://aeropostale.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
Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports.
naftiko: "0.5"
info:
label: "Knowledge Base Freshness Pipeline"
description: "Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports."
tags:
- knowledge
- confluence
- jira
- slack
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: knowledge_base_freshness_pipeline
description: "Orchestrate knowledge base freshness pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-confluence
type: call
call: "confluence.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-confluence.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Knowledge Base Freshness Pipeline step 3 complete."
consumes:
- type: http
namespace: confluence
baseUri: "https://aeropostale.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: jira
baseUri: "https://aeropostale.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Posts a new store associate or corporate job opening to LinkedIn and logs the posting details in Google Sheets for the recruiting team.
naftiko: "0.5"
info:
label: "LinkedIn Job Posting Publisher"
description: "Posts a new store associate or corporate job opening to LinkedIn and logs the posting details in Google Sheets for the recruiting team."
tags:
- hr
- recruiting
- linkedin
- google-sheets
capability:
exposes:
- type: mcp
namespace: recruiting
port: 8080
tools:
- name: post-job-to-linkedin
description: "Publish a job opening on LinkedIn and track the posting in Google Sheets."
inputParameters:
- name: job_title
in: body
type: string
description: "Job title."
- name: job_description
in: body
type: string
description: "Job description text."
- name: location
in: body
type: string
description: "Job location."
steps:
- name: create-posting
type: call
call: "linkedin.create-job-posting"
with:
title: "{{job_title}}"
description: "{{job_description}}"
location: "{{location}}"
company_id: "aeropostale"
- name: log-posting
type: call
call: "gsheets.append-row"
with:
spreadsheet_id: "aero_recruiting_tracker"
range: "Postings!A:D"
values:
- "{{job_title}}"
- "{{location}}"
- "{{create-posting.posting_id}}"
- "active"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: job-postings
path: "/simpleJobPostings"
operations:
- name: create-job-posting
method: POST
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: values
path: "/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
When the POS system flags a suspicious transaction, creates a ServiceNow incident, logs details in Google Sheets, and sends an urgent alert to the loss prevention Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Loss Prevention Alert Handler"
description: "When the POS system flags a suspicious transaction, creates a ServiceNow incident, logs details in Google Sheets, and sends an urgent alert to the loss prevention Microsoft Teams channel."
tags:
- retail
- loss-prevention
- pos
- servicenow
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: loss-prevention
port: 8080
tools:
- name: handle-lp-alert
description: "Process a loss prevention alert from POS through incident creation, logging, and team notification."
inputParameters:
- name: transaction_id
in: body
type: string
description: "Flagged POS transaction ID."
- name: store_id
in: body
type: string
description: "Store where the transaction occurred."
- name: alert_type
in: body
type: string
description: "Type of alert such as void_abuse or sweethearting."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "LP Alert: {{alert_type}} at store {{store_id}}"
category: "loss_prevention"
urgency: "1"
description: "Transaction {{transaction_id}} flagged for {{alert_type}} at store {{store_id}}."
- name: log-alert
type: call
call: "gsheets.append-row"
with:
spreadsheet_id: "aero_lp_log"
range: "Alerts!A:D"
values:
- "{{transaction_id}}"
- "{{store_id}}"
- "{{alert_type}}"
- "{{create-incident.number}}"
- name: alert-team
type: call
call: "msteams.send-message"
with:
channel_id: "loss_prevention"
text: "URGENT LP Alert: {{alert_type}} at store {{store_id}}, transaction {{transaction_id}}. Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.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: gsheets
baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: values
path: "/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the current loyalty points balance and tier status for a given customer from the CRM system.
naftiko: "0.5"
info:
label: "Loyalty Program Points Balance"
description: "Retrieves the current loyalty points balance and tier status for a given customer from the CRM system."
tags:
- retail
- loyalty
- crm
- customer-service
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: get-points-balance
description: "Look up a customer loyalty points balance and tier by customer ID or email."
inputParameters:
- name: customer_id
in: body
type: string
description: "Customer ID or email address."
call: "crm.get-loyalty-profile"
with:
customer_id: "{{customer_id}}"
outputParameters:
- name: points_balance
type: number
mapping: "$.loyalty.points_balance"
- name: tier
type: string
mapping: "$.loyalty.tier_name"
- name: points_to_next_tier
type: number
mapping: "$.loyalty.points_to_next_tier"
consumes:
- type: http
namespace: crm
baseUri: "https://crm.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.crm_token"
resources:
- name: loyalty
path: "/customers/{{customer_id}}/loyalty"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-loyalty-profile
method: GET
Returns the current subscriber count and recent growth rate for a specified MailChimp audience list.
naftiko: "0.5"
info:
label: "MailChimp Subscriber Count Lookup"
description: "Returns the current subscriber count and recent growth rate for a specified MailChimp audience list."
tags:
- marketing
- email
- mailchimp
capability:
exposes:
- type: mcp
namespace: email-audience
port: 8080
tools:
- name: get-subscriber-count
description: "Retrieve the subscriber count and growth stats for a MailChimp audience."
inputParameters:
- name: list_id
in: body
type: string
description: "The MailChimp list/audience ID."
call: "mailchimp.get-list-stats"
with:
list_id: "{{list_id}}"
outputParameters:
- name: member_count
type: number
mapping: "$.stats.member_count"
- name: growth_rate
type: number
mapping: "$.stats.growth_rate_monthly"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: basic
username: "anystring"
password: "$secrets.mailchimp_api_key"
resources:
- name: lists
path: "/lists/{{list_id}}"
inputParameters:
- name: list_id
in: path
operations:
- name: get-list-stats
method: GET
Correlates in-store POS transaction counts with Google Analytics location traffic data to measure the store conversion rate for a given mall location.
naftiko: "0.5"
info:
label: "Mall Traffic Correlation Analyzer"
description: "Correlates in-store POS transaction counts with Google Analytics location traffic data to measure the store conversion rate for a given mall location."
tags:
- retail
- analytics
- pos
- google-analytics
capability:
exposes:
- type: mcp
namespace: traffic-analytics
port: 8080
tools:
- name: correlate-mall-traffic
description: "Compare POS transactions with foot traffic data to compute store conversion rate."
inputParameters:
- name: store_id
in: body
type: string
description: "Store location ID."
- name: date
in: body
type: string
description: "Analysis date."
steps:
- name: get-transactions
type: call
call: "pos.get-transaction-count"
with:
store_id: "{{store_id}}"
date: "{{date}}"
- name: get-foot-traffic
type: call
call: "ga.get-location-traffic"
with:
store_id: "{{store_id}}"
date: "{{date}}"
consumes:
- type: http
namespace: pos
baseUri: "https://pos.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.pos_token"
resources:
- name: transactions
path: "/stores/{{store_id}}/transactions/count"
inputParameters:
- name: store_id
in: path
operations:
- name: get-transaction-count
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-location-traffic
method: POST
Sends an email via Microsoft Outlook/Graph API. Reusable component for various notification workflows.
naftiko: "0.5"
info:
label: "Microsoft Outlook Email Sender"
description: "Sends an email via Microsoft Outlook/Graph API. Reusable component for various notification workflows."
tags:
- collaboration
- microsoft-outlook
- email
capability:
exposes:
- type: mcp
namespace: email
port: 8080
tools:
- name: send-email
description: "Send an email via Microsoft Outlook."
inputParameters:
- name: to
in: body
type: string
description: "Recipient email address."
- name: subject
in: body
type: string
description: "Email subject line."
- name: body
in: body
type: string
description: "Email body text."
call: "outlook.send-email"
with:
to: "{{to}}"
subject: "{{subject}}"
body: "{{body}}"
consumes:
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: send-mail
path: "/me/sendMail"
operations:
- name: send-email
method: POST
Sends a message to a specified Microsoft Teams channel. Used as a building block for notifications across multiple workflows.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel Message Sender"
description: "Sends a message to a specified Microsoft Teams channel. Used as a building block for notifications across multiple workflows."
tags:
- collaboration
- microsoft-teams
- notifications
capability:
exposes:
- type: mcp
namespace: teams-messaging
port: 8080
tools:
- name: send-channel-message
description: "Post a message to a Microsoft Teams channel."
inputParameters:
- name: channel_id
in: body
type: string
description: "Teams channel identifier."
- name: message_text
in: body
type: string
description: "Message content to post."
call: "msteams.send-message"
with:
channel_id: "{{channel_id}}"
text: "{{message_text}}"
consumes:
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new store location is approved, creates a project in Microsoft Planner, provisions the store in the POS system, sets up a dedicated Microsoft Teams channel, and opens a Jira epic for the build-out.
naftiko: "0.5"
info:
label: "New Store Opening Coordinator"
description: "When a new store location is approved, creates a project in Microsoft Planner, provisions the store in the POS system, sets up a dedicated Microsoft Teams channel, and opens a Jira epic for the build-out."
tags:
- retail
- operations
- microsoft-planner
- microsoft-teams
- jira
- pos
capability:
exposes:
- type: mcp
namespace: store-opening
port: 8080
tools:
- name: initiate-store-opening
description: "Orchestrate all setup tasks for a new Aéropostale store location."
inputParameters:
- name: store_id
in: body
type: string
description: "New store location ID."
- name: store_name
in: body
type: string
description: "Store name and location."
- name: target_open_date
in: body
type: string
description: "Planned opening date."
steps:
- name: create-plan
type: call
call: "planner.create-plan"
with:
title: "Store Opening: {{store_name}}"
group_id: "store_openings_group"
- name: provision-pos
type: call
call: "pos.create-store"
with:
store_id: "{{store_id}}"
store_name: "{{store_name}}"
- name: create-channel
type: call
call: "msteams.create-channel"
with:
team_id: "store_ops_team"
display_name: "{{store_name}} Opening"
description: "Coordination channel for {{store_name}} opening on {{target_open_date}}."
- name: create-epic
type: call
call: "jira.create-issue"
with:
project: "STORES"
issue_type: "Epic"
summary: "New store build-out: {{store_name}}"
due_date: "{{target_open_date}}"
consumes:
- type: http
namespace: planner
baseUri: "https://graph.microsoft.com/v1.0/planner"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: plans
path: "/plans"
operations:
- name: create-plan
method: POST
- type: http
namespace: pos
baseUri: "https://pos.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.pos_token"
resources:
- name: stores
path: "/stores"
operations:
- name: create-store
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{team_id}}/channels"
inputParameters:
- name: team_id
in: path
operations:
- name: create-channel
method: POST
- type: http
namespace: jira
baseUri: "https://aeropostale.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
Synchronizes inventory across channels, resolves discrepancies, and updates all systems.
naftiko: "0.5"
info:
label: "Omnichannel Inventory Sync Pipeline"
description: "Synchronizes inventory across channels, resolves discrepancies, and updates all systems."
tags:
- inventory
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: omnichannel_inventory_sync_pipeline
description: "Orchestrate omnichannel inventory sync pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Omnichannel Inventory Sync Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://aeropostale.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a new e-commerce order is placed, evaluates inventory across the distribution center and nearby stores, selects the optimal fulfillment location, and routes the order to either ship-from-store or DC fulfillment via the OMS.
naftiko: "0.5"
info:
label: "Omnichannel Order Fulfillment Router"
description: "When a new e-commerce order is placed, evaluates inventory across the distribution center and nearby stores, selects the optimal fulfillment location, and routes the order to either ship-from-store or DC fulfillment via the OMS."
tags:
- retail
- fulfillment
- omnichannel
- oms
- wms
capability:
exposes:
- type: mcp
namespace: fulfillment-routing
port: 8080
tools:
- name: route-order
description: "Determine the best fulfillment source for an order and route it accordingly."
inputParameters:
- name: order_id
in: body
type: string
description: "Shopify order ID."
- name: customer_zip
in: body
type: string
description: "Customer shipping ZIP code."
steps:
- name: get-order
type: call
call: "shopify.get-order"
with:
order_id: "{{order_id}}"
- name: check-dc-stock
type: call
call: "wms.check-availability"
with:
skus: "{{get-order.line_item_skus}}"
location: "main_dc"
- name: check-store-stock
type: call
call: "wms.check-nearest-store"
with:
skus: "{{get-order.line_item_skus}}"
zip: "{{customer_zip}}"
- name: assign-fulfillment
type: call
call: "oms.assign-fulfillment"
with:
order_id: "{{order_id}}"
dc_available: "{{check-dc-stock.available}}"
store_available: "{{check-store-stock.available}}"
store_id: "{{check-store-stock.store_id}}"
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: orders
path: "/orders/{{order_id}}.json"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: wms
baseUri: "https://wms.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.wms_token"
resources:
- name: availability
path: "/inventory/availability"
operations:
- name: check-availability
method: POST
- name: check-nearest-store
method: POST
- type: http
namespace: oms
baseUri: "https://oms.aeropostale.com/api/v2"
authentication:
type: bearer
token: "$secrets.oms_token"
resources:
- name: fulfillment
path: "/orders/{{order_id}}/fulfillment"
inputParameters:
- name: order_id
in: path
operations:
- name: assign-fulfillment
method: POST
Initiates review cycles, collects feedback, aggregates scores, and distributes to managers.
naftiko: "0.5"
info:
label: "Performance Review Cycle Pipeline"
description: "Initiates review cycles, collects feedback, aggregates scores, and distributes to managers."
tags:
- hr
- workday
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: performance_review_cycle_pipeline
description: "Orchestrate performance review cycle pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Performance Review Cycle Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/aeropostale"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: confluence
baseUri: "https://aeropostale.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
At end of business day, pulls transaction summaries from each POS register, reconciles totals against expected values, and flags discrepancies in a ServiceNow incident if the variance exceeds threshold.
naftiko: "0.5"
info:
label: "POS Daily Reconciliation Workflow"
description: "At end of business day, pulls transaction summaries from each POS register, reconciles totals against expected values, and flags discrepancies in a ServiceNow incident if the variance exceeds threshold."
tags:
- retail
- finance
- pos
- servicenow
capability:
exposes:
- type: mcp
namespace: pos-reconciliation
port: 8080
tools:
- name: reconcile-daily-pos
description: "Reconcile POS register totals and flag discrepancies."
inputParameters:
- name: store_id
in: body
type: string
description: "Store identifier."
- name: date
in: body
type: string
description: "Business date."
- name: variance_threshold
in: body
type: number
description: "Dollar amount threshold for flagging."
steps:
- name: get-register-totals
type: call
call: "pos.get-register-summary"
with:
store_id: "{{store_id}}"
date: "{{date}}"
- name: flag-discrepancy
type: call
call: "servicenow.create-incident"
with:
short_description: "POS variance at store {{store_id}} on {{date}}"
category: "finance"
description: "Register variance of ${{get-register-totals.total_variance}} detected at store {{store_id}} on {{date}}. Threshold: ${{variance_threshold}}."
consumes:
- type: http
namespace: pos
baseUri: "https://pos.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.pos_token"
resources:
- name: register-summary
path: "/stores/{{store_id}}/registers/summary/{{date}}"
inputParameters:
- name: store_id
in: path
- name: date
in: path
operations:
- name: get-register-summary
method: GET
- type: http
namespace: servicenow
baseUri: "https://aeropostale.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
When a price markdown is approved, updates the product price in Shopify, refreshes the cached price in the POS system, and posts a markdown notification to the store operations Teams channel.
naftiko: "0.5"
info:
label: "Product Price Update Propagator"
description: "When a price markdown is approved, updates the product price in Shopify, refreshes the cached price in the POS system, and posts a markdown notification to the store operations Teams channel."
tags:
- retail
- pricing
- shopify
- pos
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pricing
port: 8080
tools:
- name: propagate-markdown
description: "Apply a price markdown across Shopify, POS, and notify store operations."
inputParameters:
- name: product_id
in: body
type: string
description: "Shopify product ID."
- name: new_price
in: body
type: number
description: "The new marked-down price."
- name: markdown_reason
in: body
type: string
description: "Reason for the markdown such as clearance or seasonal."
steps:
- name: update-shopify
type: call
call: "shopify.update-product-price"
with:
product_id: "{{product_id}}"
price: "{{new_price}}"
- name: update-pos
type: call
call: "pos.update-price"
with:
product_id: "{{product_id}}"
price: "{{new_price}}"
- name: notify-ops
type: call
call: "msteams.send-message"
with:
channel_id: "store_ops"
text: "Markdown applied: Product {{product_id}} now ${{new_price}} ({{markdown_reason}}). Updated in Shopify and POS."
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: products
path: "/products/{{product_id}}.json"
inputParameters:
- name: product_id
in: path
operations:
- name: update-product-price
method: PUT
- type: http
namespace: pos
baseUri: "https://pos.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.pos_token"
resources:
- name: products
path: "/products/{{product_id}}/price"
inputParameters:
- name: product_id
in: path
operations:
- name: update-price
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/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Collects customer reviews from the Shopify storefront, computes average ratings, and posts a weekly review summary to the product team Microsoft Teams channel for merchandise optimization.
naftiko: "0.5"
info:
label: "Product Review Aggregation Pipeline"
description: "Collects customer reviews from the Shopify storefront, computes average ratings, and posts a weekly review summary to the product team Microsoft Teams channel for merchandise optimization."
tags:
- retail
- customer-feedback
- shopify
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: review-analytics
port: 8080
tools:
- name: aggregate-reviews
description: "Pull recent product reviews, compute ratings, and notify the product team."
inputParameters:
- name: product_id
in: body
type: string
description: "Shopify product ID."
- name: since_date
in: body
type: string
description: "Start date for review collection."
steps:
- name: get-reviews
type: call
call: "shopify.get-product-reviews"
with:
product_id: "{{product_id}}"
since: "{{since_date}}"
- name: post-summary
type: call
call: "msteams.send-message"
with:
channel_id: "product_team"
text: "Product {{product_id}} reviews since {{since_date}}: {{get-reviews.count}} reviews, avg rating {{get-reviews.avg_rating}}/5. Top complaint: {{get-reviews.top_negative_theme}}."
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: reviews
path: "/products/{{product_id}}/metafields.json?namespace=reviews"
inputParameters:
- name: product_id
in: path
operations:
- name: get-product-reviews
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a promotional campaign is approved, creates a MailChimp campaign with the teen-targeted segment, schedules the email send, and logs the campaign in Google Sheets for tracking.
naftiko: "0.5"
info:
label: "Promotional Email Campaign Launcher"
description: "When a promotional campaign is approved, creates a MailChimp campaign with the teen-targeted segment, schedules the email send, and logs the campaign in Google Sheets for tracking."
tags:
- marketing
- email
- mailchimp
- google-sheets
capability:
exposes:
- type: mcp
namespace: email-campaigns
port: 8080
tools:
- name: launch-promo-campaign
description: "Create, schedule, and track a promotional email campaign targeting a specific audience segment."
inputParameters:
- name: campaign_name
in: body
type: string
description: "Name of the promotional campaign."
- name: segment_id
in: body
type: string
description: "MailChimp segment ID for the target audience."
- name: send_time
in: body
type: string
description: "Scheduled send time in ISO 8601 format."
- name: template_id
in: body
type: string
description: "MailChimp template ID for the email."
steps:
- name: create-campaign
type: call
call: "mailchimp.create-campaign"
with:
name: "{{campaign_name}}"
segment_id: "{{segment_id}}"
template_id: "{{template_id}}"
- name: schedule-campaign
type: call
call: "mailchimp.schedule-campaign"
with:
campaign_id: "{{create-campaign.id}}"
send_time: "{{send_time}}"
- name: log-campaign
type: call
call: "gsheets.append-row"
with:
spreadsheet_id: "aero_campaign_tracker"
range: "Campaigns!A:E"
values:
- "{{campaign_name}}"
- "{{create-campaign.id}}"
- "{{send_time}}"
- "{{segment_id}}"
- "scheduled"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: basic
username: "anystring"
password: "$secrets.mailchimp_api_key"
resources:
- name: campaigns
path: "/campaigns"
operations:
- name: create-campaign
method: POST
- name: campaign-actions
path: "/campaigns/{{campaign_id}}/actions/schedule"
inputParameters:
- name: campaign_id
in: path
operations:
- name: schedule-campaign
method: POST
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: values
path: "/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
At end of season, identifies slow-moving inventory from POS data, applies progressive markdowns in Shopify, and generates a clearance report in Google Sheets for the buying team.
naftiko: "0.5"
info:
label: "Seasonal Clearance Automation"
description: "At end of season, identifies slow-moving inventory from POS data, applies progressive markdowns in Shopify, and generates a clearance report in Google Sheets for the buying team."
tags:
- retail
- clearance
- pos
- shopify
- google-sheets
capability:
exposes:
- type: mcp
namespace: clearance-mgmt
port: 8080
tools:
- name: run-clearance-cycle
description: "Identify slow movers, apply markdowns, and generate clearance reports."
inputParameters:
- name: season
in: body
type: string
description: "Season being cleared."
- name: markdown_tier
in: body
type: number
description: "Markdown tier percentage."
- name: sell_through_threshold
in: body
type: number
description: "Sell-through percentage below which items get marked down."
steps:
- name: get-slow-movers
type: call
call: "pos.get-low-sell-through"
with:
season: "{{season}}"
threshold: "{{sell_through_threshold}}"
- name: apply-markdowns
type: call
call: "shopify.bulk-markdown"
with:
product_ids: "{{get-slow-movers.product_ids}}"
discount_percent: "{{markdown_tier}}"
- name: write-report
type: call
call: "gsheets.append-row"
with:
spreadsheet_id: "aero_clearance_reports"
range: "{{season}}!A:D"
values:
- "{{season}}"
- "{{get-slow-movers.count}}"
- "{{markdown_tier}}"
- "{{apply-markdowns.updated_count}}"
consumes:
- type: http
namespace: pos
baseUri: "https://pos.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.pos_token"
resources:
- name: sell-through
path: "/analytics/sell-through"
operations:
- name: get-low-sell-through
method: GET
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: bulk-pricing
path: "/price_rules.json"
operations:
- name: bulk-markdown
method: POST
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: values
path: "/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
When a new seasonal collection is approved in the merchandising system, creates product listings in Shopify, syncs inventory to the warehouse management system, publishes promotional content to Instagram, and notifies the visual merchandising team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Seasonal Collection Launch Orchestrator"
description: "When a new seasonal collection is approved in the merchandising system, creates product listings in Shopify, syncs inventory to the warehouse management system, publishes promotional content to Instagram, and notifies the visual merchandising team in Microsoft Teams."
tags:
- retail
- merchandising
- shopify
- instagram
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: merch-launch
port: 8080
tools:
- name: launch-collection
description: "Given a collection ID and launch date, orchestrate the full seasonal launch across e-commerce, social, and warehouse systems."
inputParameters:
- name: collection_id
in: body
type: string
description: "The internal collection identifier."
- name: launch_date
in: body
type: string
description: "Target launch date in YYYY-MM-DD format."
- name: season
in: body
type: string
description: "Season name such as Spring, Summer, Fall, or Winter."
steps:
- name: get-collection
type: call
call: "shopify.get-collection"
with:
collection_id: "{{collection_id}}"
- name: publish-products
type: call
call: "shopify.publish-collection"
with:
collection_id: "{{collection_id}}"
publish_date: "{{launch_date}}"
- name: sync-inventory
type: call
call: "wms.sync-collection-inventory"
with:
collection_id: "{{collection_id}}"
warehouse: "aero_main_dc"
- name: post-social
type: call
call: "instagram.create-post"
with:
caption: "New {{season}} collection just dropped! Shop now at Aéropostale. #Aeropostale #{{season}}"
media_url: "{{get-collection.hero_image_url}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "visual_merch"
text: "Collection {{collection_id}} for {{season}} is live. {{publish-products.product_count}} products published."
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: collections
path: "/custom_collections/{{collection_id}}.json"
inputParameters:
- name: collection_id
in: path
operations:
- name: get-collection
method: GET
- name: publish-collection
method: PUT
- type: http
namespace: wms
baseUri: "https://wms.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.wms_token"
resources:
- name: inventory-sync
path: "/collections/{{collection_id}}/sync"
inputParameters:
- name: collection_id
in: path
operations:
- name: sync-collection-inventory
method: POST
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: media
path: "/me/media"
operations:
- name: create-post
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs demand forecast models, generates buy recommendations, and distributes to merchandising teams.
naftiko: "0.5"
info:
label: "Seasonal Demand Forecasting Pipeline"
description: "Runs demand forecast models, generates buy recommendations, and distributes to merchandising teams."
tags:
- planning
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: planning
port: 8080
tools:
- name: seasonal_demand_forecasting_pipeline
description: "Orchestrate seasonal demand forecasting pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-powerbi
type: call
call: "powerbi.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Seasonal Demand Forecasting Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.
naftiko: "0.5"
info:
label: "Security Incident Response Pipeline"
description: "Detects security incidents, enriches with context, creates response tickets, and notifies the SOC."
tags:
- security
- splunk
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: security_incident_response_pipeline
description: "Orchestrate security incident response pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-salesforce.result}}"
- name: create-jira
type: call
call: "jira.create-resource"
with:
channel: "{{notification_channel}}"
text: "Security Incident Response Pipeline step 3 complete."
consumes:
- type: http
namespace: salesforce
baseUri: "https://aeropostale.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: "https://aeropostale.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
Retrieves the current state, priority, and assigned group for a ServiceNow incident by number.
naftiko: "0.5"
info:
label: "ServiceNow Incident Status Lookup"
description: "Retrieves the current state, priority, and assigned group for a ServiceNow incident by number."
tags:
- it-support
- servicenow
capability:
exposes:
- type: mcp
namespace: it-support
port: 8080
tools:
- name: get-incident-status
description: "Look up a ServiceNow incident by number and return its state and assignment."
inputParameters:
- name: incident_number
in: body
type: string
description: "ServiceNow incident number such as INC0012345."
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
outputParameters:
- 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://aeropostale.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 a document by path from a SharePoint site and returns its download URL and metadata.
naftiko: "0.5"
info:
label: "SharePoint Document Retrieval"
description: "Retrieves a document by path from a SharePoint site and returns its download URL and metadata."
tags:
- collaboration
- sharepoint
- document-management
capability:
exposes:
- type: mcp
namespace: documents
port: 8080
tools:
- name: get-document
description: "Retrieve a document from SharePoint by site and file path."
inputParameters:
- name: site_id
in: body
type: string
description: "SharePoint site identifier."
- name: file_path
in: body
type: string
description: "Path to the file within the site drive."
call: "sharepoint.get-file"
with:
site_id: "{{site_id}}"
file_path: "{{file_path}}"
outputParameters:
- name: download_url
type: string
mapping: "$.@microsoft.graph.downloadUrl"
- name: last_modified
type: string
mapping: "$.lastModifiedDateTime"
- name: size
type: number
mapping: "$.size"
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: get-file
method: GET
Queries multiple carrier APIs to compare shipping rates for a given package weight and destination, returning the cheapest option.
naftiko: "0.5"
info:
label: "Shipping Carrier Rate Comparison"
description: "Queries multiple carrier APIs to compare shipping rates for a given package weight and destination, returning the cheapest option."
tags:
- logistics
- shipping
- fulfillment
capability:
exposes:
- type: mcp
namespace: shipping
port: 8080
tools:
- name: compare-shipping-rates
description: "Compare shipping rates across carriers for a package and return the optimal rate."
inputParameters:
- name: weight_lbs
in: body
type: number
description: "Package weight in pounds."
- name: destination_zip
in: body
type: string
description: "Destination ZIP code."
- name: origin_zip
in: body
type: string
description: "Origin ZIP code."
steps:
- name: get-ups-rate
type: call
call: "ups.get-rate"
with:
weight: "{{weight_lbs}}"
origin: "{{origin_zip}}"
destination: "{{destination_zip}}"
- name: get-fedex-rate
type: call
call: "fedex.get-rate"
with:
weight: "{{weight_lbs}}"
origin: "{{origin_zip}}"
destination: "{{destination_zip}}"
- name: get-usps-rate
type: call
call: "usps.get-rate"
with:
weight: "{{weight_lbs}}"
origin: "{{origin_zip}}"
destination: "{{destination_zip}}"
consumes:
- type: http
namespace: ups
baseUri: "https://onlinetools.ups.com/api"
authentication:
type: bearer
token: "$secrets.ups_token"
resources:
- name: rating
path: "/rating/v1/rate"
operations:
- name: get-rate
method: POST
- type: http
namespace: fedex
baseUri: "https://apis.fedex.com/rate/v1"
authentication:
type: bearer
token: "$secrets.fedex_token"
resources:
- name: rates
path: "/rates/quotes"
operations:
- name: get-rate
method: POST
- type: http
namespace: usps
baseUri: "https://secure.shippingapis.com/ShippingAPI.dll"
authentication:
type: apikey
key: "$secrets.usps_user_id"
resources:
- name: rate-calc
path: "?API=RateV4"
operations:
- name: get-rate
method: GET
Creates a new discount code in Shopify with specified parameters and returns the code and usage limits.
naftiko: "0.5"
info:
label: "Shopify Discount Code Generator"
description: "Creates a new discount code in Shopify with specified parameters and returns the code and usage limits."
tags:
- e-commerce
- shopify
- promotions
capability:
exposes:
- type: mcp
namespace: promotions
port: 8080
tools:
- name: create-discount-code
description: "Generate a Shopify discount code with a specified percentage off and usage limit."
inputParameters:
- name: code
in: body
type: string
description: "The discount code string."
- name: discount_percent
in: body
type: number
description: "Percentage discount."
- name: usage_limit
in: body
type: number
description: "Maximum number of uses."
call: "shopify.create-price-rule-discount"
with:
code: "{{code}}"
discount_percent: "{{discount_percent}}"
usage_limit: "{{usage_limit}}"
outputParameters:
- name: discount_id
type: string
mapping: "$.discount_code.id"
- name: code
type: string
mapping: "$.discount_code.code"
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: discount-codes
path: "/price_rules/{{price_rule_id}}/discount_codes.json"
inputParameters:
- name: price_rule_id
in: path
operations:
- name: create-price-rule-discount
method: POST
Retrieves the current fulfillment status, shipping tracking number, and estimated delivery date for a given Shopify order.
naftiko: "0.5"
info:
label: "Shopify Order Status Lookup"
description: "Retrieves the current fulfillment status, shipping tracking number, and estimated delivery date for a given Shopify order."
tags:
- retail
- e-commerce
- shopify
- order-status
capability:
exposes:
- type: mcp
namespace: order-tracking
port: 8080
tools:
- name: get-order-status
description: "Look up an order by ID and return its fulfillment status, tracking number, and estimated delivery."
inputParameters:
- name: order_id
in: body
type: string
description: "The Shopify order number."
call: "shopify.get-order-fulfillment"
with:
order_id: "{{order_id}}"
outputParameters:
- name: fulfillment_status
type: string
mapping: "$.order.fulfillment_status"
- name: tracking_number
type: string
mapping: "$.order.fulfillments[0].tracking_number"
- name: estimated_delivery
type: string
mapping: "$.order.fulfillments[0].estimated_delivery_at"
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: order-fulfillments
path: "/orders/{{order_id}}.json?fields=fulfillment_status,fulfillments"
inputParameters:
- name: order_id
in: path
operations:
- name: get-order-fulfillment
method: GET
Searches the Shopify product catalog by keyword, category, or tag and returns matching products with pricing and availability.
naftiko: "0.5"
info:
label: "Shopify Product Catalog Search"
description: "Searches the Shopify product catalog by keyword, category, or tag and returns matching products with pricing and availability."
tags:
- retail
- e-commerce
- shopify
- product-catalog
capability:
exposes:
- type: mcp
namespace: catalog
port: 8080
tools:
- name: search-products
description: "Search the Aéropostale product catalog by keyword, returning product name, price, and stock status."
inputParameters:
- name: query
in: body
type: string
description: "Search keyword or product tag."
call: "shopify.search-products"
with:
query: "{{query}}"
outputParameters:
- name: products
type: array
mapping: "$.products"
- name: total_count
type: number
mapping: "$.count"
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: products
path: "/products.json"
operations:
- name: search-products
method: GET
Checks whether a specific size variant is in stock for a given product across all channels including online and in-store.
naftiko: "0.5"
info:
label: "Size Availability Checker"
description: "Checks whether a specific size variant is in stock for a given product across all channels including online and in-store."
tags:
- retail
- inventory
- shopify
- pos
capability:
exposes:
- type: mcp
namespace: size-availability
port: 8080
tools:
- name: check-size-availability
description: "Check if a specific size is available for a product across online and store channels."
inputParameters:
- name: product_id
in: body
type: string
description: "Product identifier."
- name: size
in: body
type: string
description: "Size to check such as S, M, L, or XL."
steps:
- name: check-online
type: call
call: "shopify.get-variant-inventory"
with:
product_id: "{{product_id}}"
size: "{{size}}"
- name: check-stores
type: call
call: "pos.get-size-stock"
with:
product_id: "{{product_id}}"
size: "{{size}}"
consumes:
- type: http
namespace: shopify
baseUri: "https://aeropostale.myshopify.com/admin/api/2024-01"
authentication:
type: bearer
token: "$secrets.shopify_token"
resources:
- name: inventory-levels
path: "/products/{{product_id}}/variants.json"
inputParameters:
- name: product_id
in: path
operations:
- name: get-variant-inventory
method: GET
- type: http
namespace: pos
baseUri: "https://pos.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.pos_token"
resources:
- name: stock
path: "/products/{{product_id}}/sizes/{{size}}/stock"
inputParameters:
- name: product_id
in: path
- name: size
in: path
operations:
- name: get-size-stock
method: GET
Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management.
naftiko: "0.5"
info:
label: "SLA Compliance Monitoring Pipeline"
description: "Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management."
tags:
- operations
- datadog
- servicenow
- powerbi
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: sla_compliance_monitoring_pipeline
description: "Orchestrate sla compliance monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-powerbi
type: call
call: "powerbi.create-resource"
with:
channel: "{{notification_channel}}"
text: "SLA Compliance Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT.
naftiko: "0.5"
info:
label: "Software License Optimization Pipeline"
description: "Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT."
tags:
- operations
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: software_license_optimization
description: "Orchestrate software license optimization pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Software License Optimization Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves upcoming shift assignments from the workforce management system and sends weekly schedule reminders to store associates via Microsoft Teams.
naftiko: "0.5"
info:
label: "Store Associate Shift Scheduler"
description: "Retrieves upcoming shift assignments from the workforce management system and sends weekly schedule reminders to store associates via Microsoft Teams."
tags:
- hr
- workforce-management
- scheduling
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workforce
port: 8080
tools:
- name: send-shift-reminders
description: "Pull weekly shift schedule and send reminders to each associate via Teams."
inputParameters:
- name: store_id
in: body
type: string
description: "Store location identifier."
- name: week_start
in: body
type: string
description: "Start of the week in YYYY-MM-DD format."
steps:
- name: get-schedule
type: call
call: "wfm.get-weekly-schedule"
with:
store_id: "{{store_id}}"
week_start: "{{week_start}}"
- name: send-reminders
type: call
call: "msteams.send-message"
with:
channel_id: "store_{{store_id}}_schedule"
text: "Weekly schedule for store {{store_id}} starting {{week_start}}: {{get-schedule.summary}}. Check the full schedule at {{get-schedule.url}}."
consumes:
- type: http
namespace: wfm
baseUri: "https://wfm.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.wfm_token"
resources:
- name: schedules
path: "/stores/{{store_id}}/schedules"
inputParameters:
- name: store_id
in: path
operations:
- name: get-weekly-schedule
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries the warehouse management system for current stock levels of a given SKU across all Aéropostale store locations and the distribution center.
naftiko: "0.5"
info:
label: "Store Inventory Lookup"
description: "Queries the warehouse management system for current stock levels of a given SKU across all Aéropostale store locations and the distribution center."
tags:
- retail
- inventory
- wms
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-sku-inventory
description: "Look up current inventory levels for a SKU across all store locations and the distribution center."
inputParameters:
- name: sku
in: body
type: string
description: "The product SKU to look up."
call: "wms.get-inventory"
with:
sku: "{{sku}}"
outputParameters:
- name: total_units
type: number
mapping: "$.data.total_available"
- name: store_breakdown
type: array
mapping: "$.data.locations"
- name: dc_units
type: number
mapping: "$.data.dc_available"
consumes:
- type: http
namespace: wms
baseUri: "https://wms.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.wms_token"
resources:
- name: inventory
path: "/inventory/{{sku}}"
inputParameters:
- name: sku
in: path
operations:
- name: get-inventory
method: GET
Compares store metrics against benchmarks, identifies top and bottom performers, and distributes reports.
naftiko: "0.5"
info:
label: "Store Performance Benchmark Pipeline"
description: "Compares store metrics against benchmarks, identifies top and bottom performers, and distributes reports."
tags:
- analytics
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: store_performance_benchmark_pipeline
description: "Orchestrate store performance benchmark pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-powerbi
type: call
call: "powerbi.process-resource"
with:
data: "{{get-snowflake.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Store Performance Benchmark Pipeline step 3 complete."
consumes:
- type: http
namespace: snowflake
baseUri: "https://aeropostale.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Pulls daily sales data from the POS system, combines it with foot traffic analytics from Google Analytics, and writes a consolidated daily report row to Google Sheets for district manager review.
naftiko: "0.5"
info:
label: "Store Performance Dashboard Builder"
description: "Pulls daily sales data from the POS system, combines it with foot traffic analytics from Google Analytics, and writes a consolidated daily report row to Google Sheets for district manager review."
tags:
- retail
- analytics
- pos
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: store-performance
port: 8080
tools:
- name: build-daily-report
description: "Aggregate POS sales and GA foot traffic into a consolidated daily performance row."
inputParameters:
- name: store_id
in: body
type: string
description: "Store location identifier."
- name: date
in: body
type: string
description: "Report date in YYYY-MM-DD format."
steps:
- name: get-sales
type: call
call: "pos.get-daily-sales"
with:
store_id: "{{store_id}}"
date: "{{date}}"
- name: get-traffic
type: call
call: "ga.get-store-traffic"
with:
view_id: "store_{{store_id}}"
date: "{{date}}"
- name: write-report
type: call
call: "gsheets.append-row"
with:
spreadsheet_id: "aero_store_daily"
range: "DailyPerformance!A:F"
values:
- "{{date}}"
- "{{store_id}}"
- "{{get-sales.total_revenue}}"
- "{{get-sales.transaction_count}}"
- "{{get-traffic.visitors}}"
- "{{get-sales.avg_basket_size}}"
consumes:
- type: http
namespace: pos
baseUri: "https://pos.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.pos_token"
resources:
- name: daily-sales
path: "/stores/{{store_id}}/sales/{{date}}"
inputParameters:
- name: store_id
in: path
- name: date
in: path
operations:
- name: get-daily-sales
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-store-traffic
method: POST
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: values
path: "/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Fetches the latest compliance certificates from the supplier portal, uploads them to SharePoint, and creates a Jira task for the compliance team to review.
naftiko: "0.5"
info:
label: "Supplier Compliance Document Collector"
description: "Fetches the latest compliance certificates from the supplier portal, uploads them to SharePoint, and creates a Jira task for the compliance team to review."
tags:
- procurement
- compliance
- sharepoint
- jira
capability:
exposes:
- type: mcp
namespace: supplier-compliance
port: 8080
tools:
- name: collect-compliance-docs
description: "Retrieve supplier compliance documents and route them for review."
inputParameters:
- name: vendor_id
in: body
type: string
description: "Vendor identifier."
- name: document_type
in: body
type: string
description: "Type of compliance document such as safety_cert or audit_report."
steps:
- name: get-document
type: call
call: "supplier-portal.get-document"
with:
vendor_id: "{{vendor_id}}"
doc_type: "{{document_type}}"
- name: upload-to-sharepoint
type: call
call: "sharepoint.upload-file"
with:
site_id: "compliance_site"
folder_path: "Suppliers/{{vendor_id}}/{{document_type}}"
file_content: "{{get-document.file_content}}"
file_name: "{{get-document.file_name}}"
- name: create-review-task
type: call
call: "jira.create-issue"
with:
project: "COMPLIANCE"
issue_type: "Task"
summary: "Review {{document_type}} from vendor {{vendor_id}}"
description: "Document uploaded to: {{upload-to-sharepoint.url}}"
consumes:
- type: http
namespace: supplier-portal
baseUri: "https://suppliers.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.supplier_portal_token"
resources:
- name: documents
path: "/vendors/{{vendor_id}}/documents/{{doc_type}}"
inputParameters:
- name: vendor_id
in: path
- name: doc_type
in: path
operations:
- name: get-document
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: jira
baseUri: "https://aeropostale.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
Collects brand mention data from Instagram and Twitter, aggregates sentiment scores in Google Analytics, and posts a daily trend summary to a Microsoft Teams channel for the merchandising team.
naftiko: "0.5"
info:
label: "Teen Trend Social Listening Pipeline"
description: "Collects brand mention data from Instagram and Twitter, aggregates sentiment scores in Google Analytics, and posts a daily trend summary to a Microsoft Teams channel for the merchandising team."
tags:
- marketing
- social-media
- instagram
- twitter
- google-analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: social-listening
port: 8080
tools:
- name: generate-trend-report
description: "Gather brand mentions from social channels, compute sentiment, and deliver a summary to the merchandising team."
inputParameters:
- name: date_range
in: body
type: string
description: "Date range in YYYY-MM-DD/YYYY-MM-DD format."
- name: brand_hashtags
in: body
type: array
description: "Hashtags to track such as #Aeropostale and #AeroStyle."
steps:
- name: get-instagram-mentions
type: call
call: "instagram.get-mentions"
with:
hashtags: "{{brand_hashtags}}"
since: "{{date_range}}"
- name: get-twitter-mentions
type: call
call: "twitter.search-tweets"
with:
query: "Aeropostale OR #Aeropostale"
since: "{{date_range}}"
- name: log-analytics
type: call
call: "ga.log-social-event"
with:
event_category: "social_listening"
instagram_count: "{{get-instagram-mentions.total}}"
twitter_count: "{{get-twitter-mentions.total}}"
- name: post-summary
type: call
call: "msteams.send-message"
with:
channel_id: "merch_trends"
text: "Daily Social Summary: Instagram mentions: {{get-instagram-mentions.total}}, Twitter mentions: {{get-twitter-mentions.total}}. Top trending topics: {{get-instagram-mentions.top_hashtags}}."
consumes:
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: hashtag-search
path: "/ig_hashtag_search"
operations:
- name: get-mentions
method: GET
- type: http
namespace: twitter
baseUri: "https://api.twitter.com/2"
authentication:
type: bearer
token: "$secrets.twitter_bearer_token"
resources:
- name: tweets-search
path: "/tweets/search/recent"
operations:
- name: search-tweets
method: GET
- type: http
namespace: ga
baseUri: "https://www.googleapis.com/analytics/v3"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: events
path: "/management/accounts/{{account_id}}/webproperties/{{property_id}}/events"
operations:
- name: log-social-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/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team.
naftiko: "0.5"
info:
label: "Third-Party Integration Health Pipeline"
description: "Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team."
tags:
- integrations
- datadog
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: integrations
port: 8080
tools:
- name: third_party_integration_health_pipeline
description: "Orchestrate third-party integration health pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Third-Party Integration Health Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status.
naftiko: "0.5"
info:
label: "Training Compliance Tracker Pipeline"
description: "Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status."
tags:
- compliance
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: training_compliance_tracker_pipeline
description: "Orchestrate training compliance tracker pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Training Compliance Tracker Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/aeropostale"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Posts a promotional tweet to the Aéropostale Twitter account with a product link and campaign hashtag.
naftiko: "0.5"
info:
label: "Twitter Promotional Tweet Publisher"
description: "Posts a promotional tweet to the Aéropostale Twitter account with a product link and campaign hashtag."
tags:
- marketing
- social-media
- twitter
capability:
exposes:
- type: mcp
namespace: twitter-marketing
port: 8080
tools:
- name: post-promo-tweet
description: "Publish a promotional tweet on the brand Twitter account."
inputParameters:
- name: tweet_text
in: body
type: string
description: "Tweet content including hashtags and links."
call: "twitter.create-tweet"
with:
text: "{{tweet_text}}"
outputParameters:
- name: tweet_id
type: string
mapping: "$.data.id"
- name: tweet_url
type: string
mapping: "$.data.url"
consumes:
- type: http
namespace: twitter
baseUri: "https://api.twitter.com/2"
authentication:
type: bearer
token: "$secrets.twitter_bearer_token"
resources:
- name: tweets
path: "/tweets"
operations:
- name: create-tweet
method: POST
Reconciles vendor invoices with POs, flags discrepancies, processes payments, and sends remittances.
naftiko: "0.5"
info:
label: "Vendor Payment Reconciliation Pipeline"
description: "Reconciles vendor invoices with POs, flags discrepancies, processes payments, and sends remittances."
tags:
- finance
- servicenow
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: vendor_payment_reconciliation_pipeline
description: "Orchestrate vendor payment reconciliation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Vendor Payment Reconciliation Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://aeropostale.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When inventory for a top-selling SKU falls below threshold, creates a purchase order in the OMS for the designated vendor, logs the PO in Google Sheets, and alerts the buying team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Vendor Purchase Order Creator"
description: "When inventory for a top-selling SKU falls below threshold, creates a purchase order in the OMS for the designated vendor, logs the PO in Google Sheets, and alerts the buying team in Microsoft Teams."
tags:
- procurement
- inventory
- oms
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: create-replenishment-po
description: "Generate a purchase order for a low-stock SKU and notify the buying team."
inputParameters:
- name: sku
in: body
type: string
description: "Product SKU needing replenishment."
- name: vendor_id
in: body
type: string
description: "Vendor identifier."
- name: quantity
in: body
type: number
description: "Quantity to order."
steps:
- name: create-po
type: call
call: "oms.create-purchase-order"
with:
sku: "{{sku}}"
vendor_id: "{{vendor_id}}"
quantity: "{{quantity}}"
- name: log-po
type: call
call: "gsheets.append-row"
with:
spreadsheet_id: "aero_po_tracker"
range: "POs!A:D"
values:
- "{{create-po.po_number}}"
- "{{sku}}"
- "{{vendor_id}}"
- "{{quantity}}"
- name: notify-buyers
type: call
call: "msteams.send-message"
with:
channel_id: "buying_team"
text: "PO {{create-po.po_number}} created for SKU {{sku}}: {{quantity}} units from vendor {{vendor_id}}."
consumes:
- type: http
namespace: oms
baseUri: "https://oms.aeropostale.com/api/v2"
authentication:
type: bearer
token: "$secrets.oms_token"
resources:
- name: purchase-orders
path: "/purchase-orders"
operations:
- name: create-purchase-order
method: POST
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: values
path: "/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement.
naftiko: "0.5"
info:
label: "Vendor Risk Assessment Pipeline"
description: "Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement."
tags:
- procurement
- servicenow
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: vendor_risk_assessment_pipeline
description: "Orchestrate vendor risk assessment pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Vendor Risk Assessment Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://aeropostale.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: confluence
baseUri: "https://aeropostale.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a new planogram is uploaded to SharePoint, notifies store managers via Microsoft Teams and creates a Jira task for the visual merchandising team to verify in-store compliance.
naftiko: "0.5"
info:
label: "Visual Merchandising Planogram Sync"
description: "When a new planogram is uploaded to SharePoint, notifies store managers via Microsoft Teams and creates a Jira task for the visual merchandising team to verify in-store compliance."
tags:
- retail
- visual-merchandising
- sharepoint
- microsoft-teams
- jira
capability:
exposes:
- type: mcp
namespace: planograms
port: 8080
tools:
- name: distribute-planogram
description: "Distribute a new planogram to store managers and create compliance verification tasks."
inputParameters:
- name: planogram_id
in: body
type: string
description: "Planogram document identifier."
- name: store_region
in: body
type: string
description: "Target store region."
- name: effective_date
in: body
type: string
description: "Date the planogram takes effect."
steps:
- name: get-planogram
type: call
call: "sharepoint.get-file"
with:
site_id: "visual_merch_site"
file_path: "Planograms/{{planogram_id}}"
- name: notify-managers
type: call
call: "msteams.send-message"
with:
channel_id: "store_managers_{{store_region}}"
text: "New planogram {{planogram_id}} is available effective {{effective_date}}. Download: {{get-planogram.download_url}}"
- name: create-task
type: call
call: "jira.create-issue"
with:
project: "VM"
issue_type: "Task"
summary: "Verify planogram {{planogram_id}} compliance in {{store_region}}"
due_date: "{{effective_date}}"
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: get-file
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: jira
baseUri: "https://aeropostale.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
When a shipment arrives at the distribution center, confirms receipt in the WMS, updates the purchase order status in the OMS, and notifies the buying team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Warehouse Receiving Confirmation Pipeline"
description: "When a shipment arrives at the distribution center, confirms receipt in the WMS, updates the purchase order status in the OMS, and notifies the buying team via Microsoft Teams."
tags:
- logistics
- warehouse
- wms
- oms
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse-receiving
port: 8080
tools:
- name: confirm-receiving
description: "Confirm receipt of a vendor shipment and propagate updates across systems."
inputParameters:
- name: shipment_id
in: body
type: string
description: "Inbound shipment identifier."
- name: po_number
in: body
type: string
description: "Related purchase order number."
- name: units_received
in: body
type: number
description: "Total units received."
steps:
- name: confirm-wms
type: call
call: "wms.confirm-receipt"
with:
shipment_id: "{{shipment_id}}"
units_received: "{{units_received}}"
- name: update-po
type: call
call: "oms.update-po-status"
with:
po_number: "{{po_number}}"
status: "received"
units_received: "{{units_received}}"
- name: notify-buyers
type: call
call: "msteams.send-message"
with:
channel_id: "buying_team"
text: "Shipment {{shipment_id}} received: {{units_received}} units for PO {{po_number}}."
consumes:
- type: http
namespace: wms
baseUri: "https://wms.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.wms_token"
resources:
- name: receiving
path: "/shipments/{{shipment_id}}/receive"
inputParameters:
- name: shipment_id
in: path
operations:
- name: confirm-receipt
method: POST
- type: http
namespace: oms
baseUri: "https://oms.aeropostale.com/api/v2"
authentication:
type: bearer
token: "$secrets.oms_token"
resources:
- name: purchase-orders
path: "/purchase-orders/{{po_number}}/status"
inputParameters:
- name: po_number
in: path
operations:
- name: update-po-status
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/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates the weekly markdown schedule from the merchandising system, publishes it to SharePoint, and sends a notification to store managers via Microsoft Teams with the download link.
naftiko: "0.5"
info:
label: "Weekly Markdown Calendar Publisher"
description: "Generates the weekly markdown schedule from the merchandising system, publishes it to SharePoint, and sends a notification to store managers via Microsoft Teams with the download link."
tags:
- retail
- merchandising
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: markdown-calendar
port: 8080
tools:
- name: publish-markdown-calendar
description: "Generate and distribute the weekly markdown schedule to all stores."
inputParameters:
- name: week_of
in: body
type: string
description: "Week starting date."
steps:
- name: get-markdowns
type: call
call: "merch.get-weekly-markdowns"
with:
week_of: "{{week_of}}"
- name: upload-calendar
type: call
call: "sharepoint.upload-file"
with:
site_id: "merch_site"
folder_path: "MarkdownCalendars/Week_{{week_of}}"
file_name: "markdown_calendar_{{week_of}}.xlsx"
file_content: "{{get-markdowns.file_content}}"
- name: notify-managers
type: call
call: "msteams.send-message"
with:
channel_id: "store_managers"
text: "Weekly markdown calendar for week of {{week_of}} is ready. Download: {{upload-calendar.url}}"
consumes:
- type: http
namespace: merch
baseUri: "https://merch.aeropostale.com/api/v1"
authentication:
type: bearer
token: "$secrets.merch_token"
resources:
- name: markdowns
path: "/markdowns/weekly"
operations:
- name: get-weekly-markdowns
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
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/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves view count, likes, and engagement metrics for a specified YouTube video on the Aéropostale brand channel.
naftiko: "0.5"
info:
label: "YouTube Brand Content Metrics"
description: "Retrieves view count, likes, and engagement metrics for a specified YouTube video on the Aéropostale brand channel."
tags:
- marketing
- social-media
- youtube
capability:
exposes:
- type: mcp
namespace: youtube-analytics
port: 8080
tools:
- name: get-video-metrics
description: "Fetch YouTube video performance metrics by video ID."
inputParameters:
- name: video_id
in: body
type: string
description: "YouTube video ID."
call: "youtube.get-video-stats"
with:
video_id: "{{video_id}}"
outputParameters:
- name: view_count
type: number
mapping: "$.items[0].statistics.viewCount"
- name: like_count
type: number
mapping: "$.items[0].statistics.likeCount"
- name: comment_count
type: number
mapping: "$.items[0].statistics.commentCount"
consumes:
- type: http
namespace: youtube
baseUri: "https://www.googleapis.com/youtube/v3"
authentication:
type: apikey
key: "$secrets.youtube_api_key"
resources:
- name: videos
path: "/videos?part=statistics&id={{video_id}}"
inputParameters:
- name: video_id
in: path
operations:
- name: get-video-stats
method: GET