Inditex Capabilities
Naftiko 0.5 capability definitions for Inditex - 101 capabilities showing integration workflows and service orchestrations.
Retrieves conversion funnel data from Adobe Analytics for Inditex brand websites.
naftiko: "0.5"
info:
label: "Adobe Analytics E-Commerce Funnel"
description: "Retrieves conversion funnel data from Adobe Analytics for Inditex brand websites."
tags:
- e-commerce
- analytics
- adobe-analytics
capability:
exposes:
- type: mcp
namespace: ecommerce-funnel
port: 8080
tools:
- name: get-funnel
description: "Retrieve e-commerce funnel metrics from Adobe Analytics."
inputParameters:
- name: report_suite_id
in: body
type: string
description: "Adobe Analytics report suite ID."
- name: date_range
in: body
type: string
description: "Date range."
call: "adobe-analytics.get-report"
with:
rsid: "{{report_suite_id}}"
date_range: "{{date_range}}"
outputParameters:
- name: browse_to_cart
type: string
mapping: "$.report.data.rows[0].value"
- name: cart_to_checkout
type: string
mapping: "$.report.data.rows[1].value"
consumes:
- type: http
namespace: adobe-analytics
baseUri: "https://analytics.adobe.io/api"
authentication:
type: bearer
token: "$secrets.adobe_analytics_token"
resources:
- name: reports
path: "/{{rsid}}/reports"
inputParameters:
- name: rsid
in: path
operations:
- name: get-report
method: POST
Syncs Workday time entries to ADP for payroll processing and confirms via Teams.
naftiko: "0.5"
info:
label: "ADP Payroll Integration Sync"
description: "Syncs Workday time entries to ADP for payroll processing and confirms via Teams."
tags:
- hr
- payroll
- workday
- adp
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: payroll-sync
port: 8080
tools:
- name: sync-payroll
description: "Sync time entries to ADP and confirm."
inputParameters:
- name: pay_period
in: body
type: string
description: "Pay period."
- name: brand
in: body
type: string
description: "Brand code."
steps:
- name: get-entries
type: call
call: "workday.get-time-entries"
with:
pay_period: "{{pay_period}}"
brand: "{{brand}}"
- name: submit
type: call
call: "adp.submit-payroll"
with:
entries: "{{get-entries.entries}}"
- name: confirm
type: call
call: "msteams.send-message"
with:
channel_id: "hr_payroll"
text: "Payroll sync for {{brand}}, period {{pay_period}}: {{submit.employee_count}} processed."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: time-entries
path: "/time/entries"
operations:
- name: get-time-entries
method: GET
- type: http
namespace: adp
baseUri: "https://api.adp.com/hr/v2"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: payroll
path: "/payroll/payroll-processing"
operations:
- name: submit-payroll
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Lists digital assets stored in Amazon S3 buckets for Inditex marketing campaigns, returning object count, total size, and last modified date.
naftiko: "0.5"
info:
label: "Amazon S3 Asset Inventory"
description: "Lists digital assets stored in Amazon S3 buckets for Inditex marketing campaigns, returning object count, total size, and last modified date."
tags:
- storage
- amazon-s3
- marketing
capability:
exposes:
- type: mcp
namespace: asset-storage
port: 8080
tools:
- name: get-bucket-summary
description: "Retrieve S3 bucket asset inventory summary."
inputParameters:
- name: bucket_name
in: body
type: string
description: "The S3 bucket name."
- name: prefix
in: body
type: string
description: "The object key prefix to filter."
call: "s3.list-objects"
with:
bucket_name: "{{bucket_name}}"
prefix: "{{prefix}}"
outputParameters:
- name: object_count
type: number
mapping: "$.KeyCount"
- name: total_size
type: string
mapping: "$.TotalSize"
- name: last_modified
type: string
mapping: "$.Contents[0].LastModified"
consumes:
- type: http
namespace: s3
baseUri: "https://{{bucket_name}}.s3.eu-west-1.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_s3_token"
resources:
- name: objects
path: "/?list-type=2&prefix={{prefix}}"
inputParameters:
- name: prefix
in: query
operations:
- name: list-objects
method: GET
Retrieves an Inditex employee's Azure AD profile.
naftiko: "0.5"
info:
label: "Azure Active Directory User Lookup"
description: "Retrieves an Inditex employee's Azure AD profile."
tags:
- it-operations
- identity
- azure-active-directory
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-ad-user
description: "Look up an employee in Azure AD by UPN."
inputParameters:
- name: user_upn
in: body
type: string
description: "The user principal name."
call: "azuread.get-user"
with:
user_upn: "{{user_upn}}"
outputParameters:
- name: display_name
type: string
mapping: "$.displayName"
- name: job_title
type: string
mapping: "$.jobTitle"
- name: department
type: string
mapping: "$.department"
consumes:
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{user_upn}}"
inputParameters:
- name: user_upn
in: path
operations:
- name: get-user
method: GET
Triggers a demand forecasting model run in Azure Databricks for Inditex products, returning job run ID, model version, and estimated completion time.
naftiko: "0.5"
info:
label: "Azure Databricks Demand Model Trigger"
description: "Triggers a demand forecasting model run in Azure Databricks for Inditex products, returning job run ID, model version, and estimated completion time."
tags:
- machine-learning
- azure-databricks
- supply-chain
capability:
exposes:
- type: mcp
namespace: demand-modeling
port: 8080
tools:
- name: trigger-demand-model
description: "Trigger a demand forecasting model run in Azure Databricks."
inputParameters:
- name: model_name
in: body
type: string
description: "The ML model name."
- name: brand
in: body
type: string
description: "The Inditex brand."
call: "databricks.run-job"
with:
model_name: "{{model_name}}"
brand: "{{brand}}"
outputParameters:
- name: run_id
type: string
mapping: "$.run_id"
- name: model_version
type: string
mapping: "$.model_version"
- name: estimated_completion
type: string
mapping: "$.estimated_completion_time"
consumes:
- type: http
namespace: databricks
baseUri: "https://adb-inditex.azuredatabricks.net/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
Retrieves the latest build status from Azure DevOps for Inditex applications.
naftiko: "0.5"
info:
label: "Azure DevOps Build Status Checker"
description: "Retrieves the latest build status from Azure DevOps for Inditex applications."
tags:
- it-operations
- cicd
- azure-devops
capability:
exposes:
- type: mcp
namespace: build-status
port: 8080
tools:
- name: get-build-status
description: "Check latest Azure DevOps build status."
inputParameters:
- name: project
in: body
type: string
description: "Azure DevOps project."
- name: pipeline_id
in: body
type: string
description: "Pipeline ID."
call: "azdevops.get-build"
with:
project: "{{project}}"
pipeline_id: "{{pipeline_id}}"
outputParameters:
- name: result
type: string
mapping: "$.value[0].result"
- name: status
type: string
mapping: "$.value[0].status"
consumes:
- type: http
namespace: azdevops
baseUri: "https://dev.azure.com/inditex"
authentication:
type: basic
username: ""
password: "$secrets.azdevops_pat"
resources:
- name: builds
path: "/{{project}}/_apis/build/builds"
inputParameters:
- name: project
in: path
- name: definitions
in: query
value: "{{pipeline_id}}"
- name: $top
in: query
value: "1"
- name: api-version
in: query
value: "7.0"
operations:
- name: get-build
method: GET
Retrieves a secret value from Azure Key Vault for Inditex application configurations, returning the secret value, version, and expiration date.
naftiko: "0.5"
info:
label: "Azure Key Vault Secret Retriever"
description: "Retrieves a secret value from Azure Key Vault for Inditex application configurations, returning the secret value, version, and expiration date."
tags:
- security
- azure-key-vault
capability:
exposes:
- type: mcp
namespace: secrets-management
port: 8080
tools:
- name: get-secret
description: "Retrieve a secret from Azure Key Vault."
inputParameters:
- name: secret_name
in: body
type: string
description: "The name of the secret in Key Vault."
call: "keyvault.get-secret"
with:
secret_name: "{{secret_name}}"
outputParameters:
- name: value
type: string
mapping: "$.value"
- name: version
type: string
mapping: "$.id"
- name: expires
type: string
mapping: "$.attributes.exp"
consumes:
- type: http
namespace: keyvault
baseUri: "https://inditex-vault.vault.azure.net"
authentication:
type: bearer
token: "$secrets.azure_keyvault_token"
resources:
- name: secrets
path: "/secrets/{{secret_name}}?api-version=7.4"
inputParameters:
- name: secret_name
in: path
operations:
- name: get-secret
method: GET
Retrieves AKS cluster health status for Inditex microservices, returning node count, pod health percentage, CPU utilization, and memory utilization.
naftiko: "0.5"
info:
label: "Azure Kubernetes Cluster Health"
description: "Retrieves AKS cluster health status for Inditex microservices, returning node count, pod health percentage, CPU utilization, and memory utilization."
tags:
- infrastructure
- azure-kubernetes-service
- monitoring
capability:
exposes:
- type: mcp
namespace: cluster-health
port: 8080
tools:
- name: get-cluster-health
description: "Retrieve AKS cluster health metrics."
inputParameters:
- name: cluster_name
in: body
type: string
description: "The AKS cluster name."
call: "aks.get-cluster"
with:
cluster_name: "{{cluster_name}}"
outputParameters:
- name: node_count
type: number
mapping: "$.properties.agentPoolProfiles[0].count"
- name: pod_health_pct
type: string
mapping: "$.properties.podHealthPercentage"
- name: cpu_utilization
type: string
mapping: "$.properties.cpuUtilization"
- name: memory_utilization
type: string
mapping: "$.properties.memoryUtilization"
consumes:
- type: http
namespace: aks
baseUri: "https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.ContainerService"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: clusters
path: "/managedClusters/{{cluster_name}}?api-version=2023-01-01"
inputParameters:
- name: cluster_name
in: path
operations:
- name: get-cluster
method: GET
Queries Azure Log Analytics for security event data across Inditex infrastructure, returning event count, severity breakdown, and top source IPs.
naftiko: "0.5"
info:
label: "Azure Log Analytics Security Query"
description: "Queries Azure Log Analytics for security event data across Inditex infrastructure, returning event count, severity breakdown, and top source IPs."
tags:
- security
- azure-log-analytics
- monitoring
capability:
exposes:
- type: mcp
namespace: security-logs
port: 8080
tools:
- name: query-security-logs
description: "Query security event logs from Azure Log Analytics."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Log Analytics workspace ID."
- name: time_range
in: body
type: string
description: "The time range (e.g. 24h, 7d)."
call: "loganalytics.run-query"
with:
workspace_id: "{{workspace_id}}"
time_range: "{{time_range}}"
outputParameters:
- name: event_count
type: number
mapping: "$.tables[0].rows[0].event_count"
- name: severity_breakdown
type: string
mapping: "$.tables[0].rows[0].severity_breakdown"
- name: top_source_ips
type: string
mapping: "$.tables[0].rows[0].top_sources"
consumes:
- type: http
namespace: loganalytics
baseUri: "https://api.loganalytics.io/v1"
authentication:
type: bearer
token: "$secrets.loganalytics_token"
resources:
- name: queries
path: "/workspaces/{{workspace_id}}/query"
inputParameters:
- name: workspace_id
in: path
operations:
- name: run-query
method: POST
Invokes an Azure ML endpoint for size recommendation predictions, returning recommended size, confidence score, and fit category based on customer measurements.
naftiko: "0.5"
info:
label: "Azure Machine Learning Size Recommendation"
description: "Invokes an Azure ML endpoint for size recommendation predictions, returning recommended size, confidence score, and fit category based on customer measurements."
tags:
- machine-learning
- azure-machine-learning
- e-commerce
capability:
exposes:
- type: mcp
namespace: size-recommendation
port: 8080
tools:
- name: get-size-recommendation
description: "Get a size recommendation from Azure ML model."
inputParameters:
- name: customer_id
in: body
type: string
description: "The customer ID."
- name: article_ref
in: body
type: string
description: "The product article reference."
call: "azureml.predict-size"
with:
customer_id: "{{customer_id}}"
article_ref: "{{article_ref}}"
outputParameters:
- name: recommended_size
type: string
mapping: "$.predictions[0].size"
- name: confidence
type: string
mapping: "$.predictions[0].confidence"
- name: fit_category
type: string
mapping: "$.predictions[0].fit"
consumes:
- type: http
namespace: azureml
baseUri: "https://inditex-ml.westeurope.inference.ml.azure.com"
authentication:
type: bearer
token: "$secrets.azureml_token"
resources:
- name: predictions
path: "/score"
operations:
- name: predict-size
method: POST
Monitors Azure Service Bus queue health for Inditex integration pipelines, returning active message count, dead-letter count, and queue size in bytes.
naftiko: "0.5"
info:
label: "Azure Service Bus Message Monitor"
description: "Monitors Azure Service Bus queue health for Inditex integration pipelines, returning active message count, dead-letter count, and queue size in bytes."
tags:
- integration
- azure-service-bus
- monitoring
capability:
exposes:
- type: mcp
namespace: message-bus-health
port: 8080
tools:
- name: get-queue-health
description: "Monitor Azure Service Bus queue health metrics."
inputParameters:
- name: queue_name
in: body
type: string
description: "The Service Bus queue name."
call: "servicebus.get-queue"
with:
queue_name: "{{queue_name}}"
outputParameters:
- name: active_messages
type: number
mapping: "$.activeMessageCount"
- name: dead_letter_count
type: number
mapping: "$.deadLetterMessageCount"
- name: size_bytes
type: number
mapping: "$.sizeInBytes"
consumes:
- type: http
namespace: servicebus
baseUri: "https://inditex-bus.servicebus.windows.net"
authentication:
type: bearer
token: "$secrets.servicebus_token"
resources:
- name: queues
path: "/{{queue_name}}?api-version=2021-05"
inputParameters:
- name: queue_name
in: path
operations:
- name: get-queue
method: GET
Retrieves pull request details from Bitbucket for Inditex development repositories, returning PR title, status, reviewer approvals, and build status.
naftiko: "0.5"
info:
label: "Bitbucket Pull Request Status"
description: "Retrieves pull request details from Bitbucket for Inditex development repositories, returning PR title, status, reviewer approvals, and build status."
tags:
- development
- bitbucket
capability:
exposes:
- type: mcp
namespace: code-review
port: 8080
tools:
- name: get-pr-status
description: "Look up a Bitbucket pull request status."
inputParameters:
- name: repo_slug
in: body
type: string
description: "The repository slug."
- name: pr_id
in: body
type: string
description: "The pull request ID."
call: "bitbucket.get-pr"
with:
repo_slug: "{{repo_slug}}"
pr_id: "{{pr_id}}"
outputParameters:
- name: title
type: string
mapping: "$.title"
- name: state
type: string
mapping: "$.state"
- name: approvals
type: number
mapping: "$.participants.approved_count"
- name: build_status
type: string
mapping: "$.build_status"
consumes:
- type: http
namespace: bitbucket
baseUri: "https://api.bitbucket.org/2.0"
authentication:
type: bearer
token: "$secrets.bitbucket_token"
resources:
- name: pullrequests
path: "/repositories/inditex/{{repo_slug}}/pullrequests/{{pr_id}}"
inputParameters:
- name: repo_slug
in: path
- name: pr_id
in: path
operations:
- name: get-pr
method: GET
Uploads a compliance document to Box and returns a shared link for audit purposes.
naftiko: "0.5"
info:
label: "Box Compliance Document Uploader"
description: "Uploads a compliance document to Box and returns a shared link for audit purposes."
tags:
- compliance
- documents
- box
capability:
exposes:
- type: mcp
namespace: compliance-docs
port: 8080
tools:
- name: upload-doc
description: "Upload a compliance document to Box."
inputParameters:
- name: folder_id
in: body
type: string
description: "Box folder ID."
- name: file_name
in: body
type: string
description: "File name."
- name: file_content
in: body
type: string
description: "Base64-encoded content."
call: "box.upload-file"
with:
folder_id: "{{folder_id}}"
file_name: "{{file_name}}"
content: "{{file_content}}"
outputParameters:
- name: shared_link
type: string
mapping: "$.entries[0].shared_link.url"
consumes:
- type: http
namespace: box
baseUri: "https://upload.box.com/api/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: files
path: "/files/content"
operations:
- name: upload-file
method: POST
Creates marketing visuals in Canva for Inditex brand campaigns.
naftiko: "0.5"
info:
label: "Canva Marketing Material Creator"
description: "Creates marketing visuals in Canva for Inditex brand campaigns."
tags:
- marketing
- design
- canva
capability:
exposes:
- type: mcp
namespace: marketing-design
port: 8080
tools:
- name: create-material
description: "Create a promotional material from Canva template."
inputParameters:
- name: template_id
in: body
type: string
description: "Canva template ID."
- name: headline
in: body
type: string
description: "Headline text."
call: "canva.create-design"
with:
template_id: "{{template_id}}"
headline: "{{headline}}"
outputParameters:
- name: design_url
type: string
mapping: "$.design.editUrl"
consumes:
- type: http
namespace: canva
baseUri: "https://api.canva.com/v1"
authentication:
type: bearer
token: "$secrets.canva_token"
resources:
- name: designs
path: "/designs"
operations:
- name: create-design
method: POST
Queries Cloudflare analytics for Inditex brand websites, returning request counts, bandwidth, and cache hit ratio.
naftiko: "0.5"
info:
label: "Cloudflare CDN Performance Monitor"
description: "Queries Cloudflare analytics for Inditex brand websites, returning request counts, bandwidth, and cache hit ratio."
tags:
- e-commerce
- it-operations
- cloudflare
capability:
exposes:
- type: mcp
namespace: cdn-performance
port: 8080
tools:
- name: get-cdn-metrics
description: "Retrieve Cloudflare performance metrics."
inputParameters:
- name: zone_id
in: body
type: string
description: "Cloudflare zone ID."
call: "cloudflare.get-analytics"
with:
zone_id: "{{zone_id}}"
outputParameters:
- name: total_requests
type: string
mapping: "$.result.totals.requests.all"
- name: bandwidth
type: string
mapping: "$.result.totals.bandwidth.all"
consumes:
- type: http
namespace: cloudflare
baseUri: "https://api.cloudflare.com/client/v4"
authentication:
type: bearer
token: "$secrets.cloudflare_token"
resources:
- name: analytics
path: "/zones/{{zone_id}}/analytics/dashboard"
inputParameters:
- name: zone_id
in: path
operations:
- name: get-analytics
method: GET
Queries Cloudflare WAF events for Inditex brand web properties.
naftiko: "0.5"
info:
label: "Cloudflare WAF Security Monitor"
description: "Queries Cloudflare WAF events for Inditex brand web properties."
tags:
- security
- it-operations
- cloudflare
capability:
exposes:
- type: mcp
namespace: waf-monitoring
port: 8080
tools:
- name: get-waf-events
description: "Retrieve Cloudflare WAF events."
inputParameters:
- name: zone_id
in: body
type: string
description: "Cloudflare zone ID."
call: "cloudflare.get-events"
with:
zone_id: "{{zone_id}}"
outputParameters:
- name: total_blocked
type: string
mapping: "$.result_info.total_count"
consumes:
- type: http
namespace: cloudflare
baseUri: "https://api.cloudflare.com/client/v4"
authentication:
type: bearer
token: "$secrets.cloudflare_token"
resources:
- name: events
path: "/zones/{{zone_id}}/security/events"
inputParameters:
- name: zone_id
in: path
operations:
- name: get-events
method: GET
Retrieves AWS CloudFormation stack status for Inditex infrastructure deployments, returning stack state, last update time, and resource count.
naftiko: "0.5"
info:
label: "CloudFormation Stack Status Checker"
description: "Retrieves AWS CloudFormation stack status for Inditex infrastructure deployments, returning stack state, last update time, and resource count."
tags:
- infrastructure
- cloudformation
capability:
exposes:
- type: mcp
namespace: infra-stacks
port: 8080
tools:
- name: get-stack-status
description: "Check CloudFormation stack deployment status."
inputParameters:
- name: stack_name
in: body
type: string
description: "The CloudFormation stack name."
call: "cfn.describe-stack"
with:
stack_name: "{{stack_name}}"
outputParameters:
- name: stack_status
type: string
mapping: "$.Stacks[0].StackStatus"
- name: last_updated
type: string
mapping: "$.Stacks[0].LastUpdatedTime"
- name: resource_count
type: number
mapping: "$.Stacks[0].ResourceCount"
consumes:
- type: http
namespace: cfn
baseUri: "https://cloudformation.eu-west-1.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_cfn_token"
resources:
- name: stacks
path: "/?Action=DescribeStacks&StackName={{stack_name}}"
inputParameters:
- name: stack_name
in: query
operations:
- name: describe-stack
method: GET
When a new collection is ready to launch, creates a Salesforce campaign, sends announcement emails via Adobe Campaign, and posts to Instagram and Facebook.
naftiko: "0.5"
info:
label: "Collection Launch Campaign Orchestrator"
description: "When a new collection is ready to launch, creates a Salesforce campaign, sends announcement emails via Adobe Campaign, and posts to Instagram and Facebook."
tags:
- marketing
- e-commerce
- salesforce
- adobe-campaign
- instagram
- facebook
capability:
exposes:
- type: mcp
namespace: collection-launch
port: 8080
tools:
- name: launch-collection
description: "Orchestrate a new collection launch across CRM, email, and social."
inputParameters:
- name: collection_name
in: body
type: string
description: "Name of the new collection."
- name: brand
in: body
type: string
description: "Brand (Zara, Pull&Bear, etc.)."
- name: launch_date
in: body
type: string
description: "Launch date in YYYY-MM-DD."
steps:
- name: create-campaign
type: call
call: "salesforce.create-campaign"
with:
name: "{{brand}} - {{collection_name}} Launch"
start_date: "{{launch_date}}"
type: "Product Launch"
- name: send-emails
type: call
call: "adobe-campaign.send-bulk-email"
with:
template: "collection_launch_{{brand}}"
segment: "active_customers_{{brand}}"
params: "{{collection_name}},{{launch_date}}"
- name: post-instagram
type: call
call: "instagram.create-post"
with:
image_url: "{{collection_name}}_hero_image"
caption: "New {{collection_name}} collection is here. Shop now at {{brand}}.com"
consumes:
- type: http
namespace: salesforce
baseUri: "https://inditex.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: campaigns
path: "/sobjects/Campaign"
operations:
- name: create-campaign
method: POST
- type: http
namespace: adobe-campaign
baseUri: "https://mc.adobe.io/inditex/campaign"
authentication:
type: bearer
token: "$secrets.adobe_campaign_token"
resources:
- name: bulk-emails
path: "/email/sendBulk"
operations:
- name: send-bulk-email
method: POST
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: media
path: "/{{account_id}}/media"
inputParameters:
- name: account_id
in: path
operations:
- name: create-post
method: POST
When a SAP Concur expense report is submitted, retrieves details and notifies the approver via Teams.
naftiko: "0.5"
info:
label: "Concur Travel Expense Notifier"
description: "When a SAP Concur expense report is submitted, retrieves details and notifies the approver via Teams."
tags:
- finance
- expenses
- sap-concur
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: expense-approval
port: 8080
tools:
- name: notify-expense
description: "Fetch Concur expense and notify approver via Teams."
inputParameters:
- name: report_id
in: body
type: string
description: "Concur expense report ID."
steps:
- name: get-report
type: call
call: "concur.get-expense-report"
with:
report_id: "{{report_id}}"
- name: notify
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-report.approver_email}}"
text: "Expense pending: {{get-report.employee_name}} - EUR {{get-report.total_amount}}. Review: {{get-report.approval_url}}"
consumes:
- type: http
namespace: concur
baseUri: "https://eu.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Creates a knowledge base article in Confluence for Inditex operations.
naftiko: "0.5"
info:
label: "Confluence Knowledge Base Article Creator"
description: "Creates a knowledge base article in Confluence for Inditex operations."
tags:
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: create-article
description: "Create a Confluence knowledge base article."
inputParameters:
- name: space_key
in: body
type: string
description: "Confluence space key."
- name: title
in: body
type: string
description: "Title."
- name: body
in: body
type: string
description: "Body in HTML."
call: "confluence.create-page"
with:
space_key: "{{space_key}}"
title: "{{title}}"
body: "{{body}}"
outputParameters:
- name: page_url
type: string
mapping: "$._links.webui"
consumes:
- type: http
namespace: confluence
baseUri: "https://inditex.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
Orchestrates cross-border shipments by retrieving customs data from SAP, generating shipping labels via the logistics partner API, and sending tracking notifications through WhatsApp.
naftiko: "0.5"
info:
label: "Cross-Border Shipping Orchestrator"
description: "Orchestrates cross-border shipments by retrieving customs data from SAP, generating shipping labels via the logistics partner API, and sending tracking notifications through WhatsApp."
tags:
- logistics
- shipping
- sap
- whatsapp
capability:
exposes:
- type: mcp
namespace: cross-border-shipping
port: 8080
tools:
- name: process-shipment
description: "Orchestrate a cross-border shipment for Inditex."
inputParameters:
- name: order_id
in: body
type: string
description: "The order ID."
- name: destination_country
in: body
type: string
description: "The destination country code."
steps:
- name: get-customs-data
type: call
call: "sap.get-customs-declaration"
with:
order_id: "{{order_id}}"
country: "{{destination_country}}"
- name: generate-label
type: call
call: "logistics.create-shipment"
with:
order_id: "{{order_id}}"
customs_ref: "{{get-customs-data.customs_reference}}"
destination: "{{destination_country}}"
- name: notify-customer
type: call
call: "whatsapp.send-message"
with:
phone: "{{get-customs-data.customer_phone}}"
template: "shipment_tracking"
parameters: "{{order_id}},{{generate-label.tracking_number}},{{generate-label.estimated_delivery}}"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_CUSTOMS_DECLARATION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: customs
path: "/A_CustomsDeclaration(OrderID='{{order_id}}',Country='{{country}}')"
inputParameters:
- name: order_id
in: path
- name: country
in: path
operations:
- name: get-customs-declaration
method: GET
- type: http
namespace: logistics
baseUri: "https://logistics-api.inditex.com/v1"
authentication:
type: bearer
token: "$secrets.logistics_token"
resources:
- name: shipments
path: "/shipments"
operations:
- name: create-shipment
method: POST
- type: http
namespace: whatsapp
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.whatsapp_token"
resources:
- name: messages
path: "/{{phone_number_id}}/messages"
inputParameters:
- name: phone_number_id
in: path
operations:
- name: send-message
method: POST
When a return is initiated, looks up the order in SAP, creates a return case in Salesforce, and sends return instructions via Adobe Campaign.
naftiko: "0.5"
info:
label: "Customer Return Processing Pipeline"
description: "When a return is initiated, looks up the order in SAP, creates a return case in Salesforce, and sends return instructions via Adobe Campaign."
tags:
- e-commerce
- customer-service
- sap
- salesforce
- adobe-campaign
capability:
exposes:
- type: mcp
namespace: returns-processing
port: 8080
tools:
- name: process-return
description: "Orchestrate a customer return across SAP, Salesforce, and Adobe Campaign."
inputParameters:
- name: order_id
in: body
type: string
description: "The original order ID."
- name: reason_code
in: body
type: string
description: "Return reason code."
- name: customer_email
in: body
type: string
description: "Customer email."
steps:
- name: get-order
type: call
call: "sap.get-sales-order"
with:
order_id: "{{order_id}}"
- name: create-return-case
type: call
call: "salesforce.create-case"
with:
subject: "Return: Order {{order_id}} - {{get-order.product_name}}"
type: "Return"
reason: "{{reason_code}}"
contact_email: "{{customer_email}}"
- name: send-label
type: call
call: "adobe-campaign.send-email"
with:
recipient_email: "{{customer_email}}"
template: "return_label"
params: "{{order_id}},{{create-return-case.case_number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-orders
path: "/A_SalesOrder('{{order_id}}')"
inputParameters:
- name: order_id
in: path
operations:
- name: get-sales-order
method: GET
- type: http
namespace: salesforce
baseUri: "https://inditex.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: adobe-campaign
baseUri: "https://mc.adobe.io/inditex/campaign"
authentication:
type: bearer
token: "$secrets.adobe_campaign_token"
resources:
- name: emails
path: "/email/send"
operations:
- name: send-email
method: POST
Queries Datadog for infrastructure health metrics of Inditex's e-commerce platform.
naftiko: "0.5"
info:
label: "Datadog Platform Monitoring"
description: "Queries Datadog for infrastructure health metrics of Inditex's e-commerce platform."
tags:
- it-operations
- monitoring
- datadog
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-platform-health
description: "Retrieve infrastructure health from Datadog."
inputParameters:
- name: service
in: body
type: string
description: "Service name tag."
call: "datadog.query-metrics"
with:
query: "avg:system.cpu.user{service:{{service}}}"
outputParameters:
- name: cpu_utilization
type: string
mapping: "$.series[0].pointlist[-1][1]"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
name: "DD-API-KEY"
in: header
value: "$secrets.datadog_api_key"
resources:
- name: metrics
path: "/query"
inputParameters:
- name: query
in: query
operations:
- name: query-metrics
method: GET
Pulls historical sales data from SAP HANA and writes demand forecasts to Snowflake for merchandising planning.
naftiko: "0.5"
info:
label: "Demand Forecasting Pipeline"
description: "Pulls historical sales data from SAP HANA and writes demand forecasts to Snowflake for merchandising planning."
tags:
- supply-chain
- analytics
- sap-hana
- snowflake
capability:
exposes:
- type: mcp
namespace: demand-forecasting
port: 8080
tools:
- name: generate-forecast
description: "Generate a demand forecast for a product family."
inputParameters:
- name: product_family
in: body
type: string
description: "Product family code."
- name: brand
in: body
type: string
description: "Brand code."
steps:
- name: get-history
type: call
call: "sap-hana.execute-query"
with:
query: "SELECT week, units_sold FROM SALES_HISTORY WHERE family = '{{product_family}}' AND brand = '{{brand}}' ORDER BY week DESC LIMIT 52"
- name: write-forecast
type: call
call: "snowflake.execute-query"
with:
statement: "INSERT INTO DEMAND_FORECASTS (family, brand, historical_data, created_at) VALUES ('{{product_family}}', '{{brand}}', '{{get-history.results}}', CURRENT_TIMESTAMP())"
consumes:
- type: http
namespace: sap-hana
baseUri: "https://inditex-hana.sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_hana_token"
resources:
- name: queries
path: "/sql"
operations:
- name: execute-query
method: POST
- type: http
namespace: snowflake
baseUri: "https://inditex.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
Retrieves outbound delivery status from SAP for garment shipments, returning carrier, tracking number, and delivery ETA.
naftiko: "0.5"
info:
label: "Distribution Center Shipment Tracker"
description: "Retrieves outbound delivery status from SAP for garment shipments, returning carrier, tracking number, and delivery ETA."
tags:
- logistics
- supply-chain
- sap
capability:
exposes:
- type: mcp
namespace: shipment-tracking
port: 8080
tools:
- name: get-shipment-status
description: "Track a shipment from distribution center to store."
inputParameters:
- name: delivery_number
in: body
type: string
description: "The SAP delivery document number."
call: "sap.get-delivery"
with:
delivery_number: "{{delivery_number}}"
outputParameters:
- name: carrier
type: string
mapping: "$.d.ShippingPoint"
- name: tracking_number
type: string
mapping: "$.d.TrackingNumber"
- name: status
type: string
mapping: "$.d.DeliveryStatus"
- name: eta
type: string
mapping: "$.d.PlannedDeliveryDate"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: deliveries
path: "/A_OutbDeliveryHeader('{{delivery_number}}')"
inputParameters:
- name: delivery_number
in: path
operations:
- name: get-delivery
method: GET
Queries Dynatrace for application performance metrics of Inditex e-commerce services, returning response time, error rate, throughput, and Apdex score.
naftiko: "0.5"
info:
label: "Dynatrace Application Performance Monitor"
description: "Queries Dynatrace for application performance metrics of Inditex e-commerce services, returning response time, error rate, throughput, and Apdex score."
tags:
- monitoring
- dynatrace
- e-commerce
capability:
exposes:
- type: mcp
namespace: app-performance
port: 8080
tools:
- name: get-app-metrics
description: "Retrieve application performance metrics from Dynatrace."
inputParameters:
- name: entity_id
in: body
type: string
description: "The Dynatrace application entity ID."
call: "dynatrace.get-metrics"
with:
entity_id: "{{entity_id}}"
outputParameters:
- name: response_time
type: string
mapping: "$.result[0].data[0].values.avg"
- name: error_rate
type: string
mapping: "$.result[1].data[0].values.avg"
- name: throughput
type: string
mapping: "$.result[2].data[0].values.sum"
- name: apdex
type: string
mapping: "$.result[3].data[0].values.avg"
consumes:
- type: http
namespace: dynatrace
baseUri: "https://inditex.live.dynatrace.com/api/v2"
authentication:
type: bearer
token: "$secrets.dynatrace_token"
resources:
- name: metrics
path: "/metrics/query?entitySelector=entityId({{entity_id}})"
inputParameters:
- name: entity_id
in: query
operations:
- name: get-metrics
method: GET
When a checkout failure is detected, retrieves the error details from New Relic, creates a support ticket in ServiceNow, notifies the engineering team via Microsoft Teams, and logs the incident in Datadog.
naftiko: "0.5"
info:
label: "E-Commerce Checkout Failure Resolution Pipeline"
description: "When a checkout failure is detected, retrieves the error details from New Relic, creates a support ticket in ServiceNow, notifies the engineering team via Microsoft Teams, and logs the incident in Datadog."
tags:
- e-commerce
- incident-management
- new-relic
- servicenow
- microsoft-teams
- datadog
capability:
exposes:
- type: mcp
namespace: checkout-failure
port: 8080
tools:
- name: resolve-checkout-failure
description: "Process and escalate an e-commerce checkout failure."
inputParameters:
- name: error_id
in: body
type: string
description: "The New Relic error group ID."
- name: session_id
in: body
type: string
description: "The customer session ID."
steps:
- name: get-error-details
type: call
call: "newrelic.get-error"
with:
error_id: "{{error_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Checkout failure: {{get-error-details.error_class}} - Session {{session_id}}"
description: "{{get-error-details.message}}"
urgency: "1"
assignment_group: "E-Commerce_Engineering"
- name: notify-team
type: call
call: "teams.send-message"
with:
channel: "E-Commerce_Alerts"
message: "Checkout failure detected. Error: {{get-error-details.error_class}}. Incident: {{create-incident.number}}. Affected session: {{session_id}}."
- name: log-event
type: call
call: "datadog.create-event"
with:
title: "Checkout Failure - {{error_id}}"
text: "Error: {{get-error-details.error_class}}. ServiceNow: {{create-incident.number}}."
alert_type: "error"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: bearer
token: "$secrets.newrelic_api_key"
resources:
- name: errors
path: "/errors/{{error_id}}"
inputParameters:
- name: error_id
in: path
operations:
- name: get-error
method: GET
- type: http
namespace: servicenow
baseUri: "https://inditex.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: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.eu/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
Processes employee offboarding by updating status in Workday, revoking access in Azure Active Directory, collecting equipment via ServiceNow, and notifying HR via Microsoft Teams.
naftiko: "0.5"
info:
label: "Employee Exit Processing Orchestrator"
description: "Processes employee offboarding by updating status in Workday, revoking access in Azure Active Directory, collecting equipment via ServiceNow, and notifying HR via Microsoft Teams."
tags:
- hr
- workday
- azure-active-directory
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: employee-exit
port: 8080
tools:
- name: process-exit
description: "Orchestrate the employee exit process."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
- name: last_day
in: body
type: string
description: "The employee last working day."
steps:
- name: update-workday
type: call
call: "workday.terminate-worker"
with:
employee_id: "{{employee_id}}"
termination_date: "{{last_day}}"
- name: revoke-access
type: call
call: "azure-ad.disable-user"
with:
employee_id: "{{employee_id}}"
- name: collect-equipment
type: call
call: "servicenow.create-task"
with:
short_description: "Equipment collection for {{employee_id}} - Exit date {{last_day}}"
assignment_group: "IT_Asset_Management"
priority: "3"
- name: notify-hr
type: call
call: "teams.send-message"
with:
channel: "HR_Operations"
message: "Employee exit processed: {{employee_id}}. Workday updated. Access revoked. Equipment collection task: {{collect-equipment.task_number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd3-impl-services1.workday.com/ccx/api/v1/inditex"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{employee_id}}/terminate"
inputParameters:
- name: employee_id
in: path
operations:
- name: terminate-worker
method: POST
- type: http
namespace: azure-ad
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.azure_ad_token"
resources:
- name: users
path: "/users/{{employee_id}}"
inputParameters:
- name: employee_id
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Teams welcome message.
naftiko: "0.5"
info:
label: "Employee Onboarding Orchestrator"
description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Teams welcome message."
tags:
- hr
- onboarding
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Orchestrate onboarding for a new Inditex employee."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD."
- name: brand
in: body
type: string
description: "Brand assignment (Zara, Pull&Bear, Massimo Dutti, etc.)."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Onboarding: {{get-employee.full_name}} - {{brand}}"
category: "hr_onboarding"
assigned_group: "IT_Onboarding_{{brand}}"
- name: provision-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "hr_onboarding"
folder_path: "NewHires/{{brand}}/{{get-employee.full_name}}_{{start_date}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Welcome to Inditex ({{brand}}), {{get-employee.first_name}}! Ticket: {{open-ticket.number}}. Docs: {{provision-folder.url}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Orchestrates end-of-season markdowns by calculating optimal prices in Snowflake, updating prices in SAP, publishing promotional content via Adobe Campaign, and updating the e-commerce storefront via BigCommerce.
naftiko: "0.5"
info:
label: "End of Season Markdown Orchestrator"
description: "Orchestrates end-of-season markdowns by calculating optimal prices in Snowflake, updating prices in SAP, publishing promotional content via Adobe Campaign, and updating the e-commerce storefront via BigCommerce."
tags:
- retail
- pricing
- snowflake
- sap
- adobe-campaign
- bigcommerce
capability:
exposes:
- type: mcp
namespace: markdown-management
port: 8080
tools:
- name: execute-markdowns
description: "Orchestrate end-of-season markdown execution across systems."
inputParameters:
- name: collection_id
in: body
type: string
description: "The collection to mark down."
- name: target_sell_through
in: body
type: string
description: "Target sell-through percentage."
steps:
- name: calculate-prices
type: call
call: "snowflake.run-pricing-model"
with:
collection_id: "{{collection_id}}"
target: "{{target_sell_through}}"
- name: update-sap-prices
type: call
call: "sap.update-pricing"
with:
collection_id: "{{collection_id}}"
price_list: "{{calculate-prices.price_list_id}}"
- name: launch-promo
type: call
call: "adobe-campaign.trigger-campaign"
with:
campaign_name: "EOS_Markdown_{{collection_id}}"
discount_range: "{{calculate-prices.discount_range}}"
- name: update-storefront
type: call
call: "bigcommerce.update-prices"
with:
collection_id: "{{collection_id}}"
price_list: "{{calculate-prices.price_list_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://inditex.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-pricing-model
method: POST
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: pricing
path: "/A_SlsPrcgCndnRecdValidity"
operations:
- name: update-pricing
method: POST
- type: http
namespace: adobe-campaign
baseUri: "https://mc.adobe.io/inditex/campaign"
authentication:
type: bearer
token: "$secrets.adobe_campaign_token"
resources:
- name: campaigns
path: "/campaigns/trigger"
operations:
- name: trigger-campaign
method: POST
- type: http
namespace: bigcommerce
baseUri: "https://api.bigcommerce.com/stores/{{store_hash}}/v3"
authentication:
type: bearer
token: "$secrets.bigcommerce_token"
resources:
- name: pricelists
path: "/pricelists/records"
operations:
- name: update-prices
method: PUT
Retrieves F5 load balancer pool member status for Inditex web application infrastructure, returning pool name, active members, health status, and current connections.
naftiko: "0.5"
info:
label: "F5 Load Balancer Pool Status"
description: "Retrieves F5 load balancer pool member status for Inditex web application infrastructure, returning pool name, active members, health status, and current connections."
tags:
- infrastructure
- f5-networks
- monitoring
capability:
exposes:
- type: mcp
namespace: load-balancer
port: 8080
tools:
- name: get-pool-status
description: "Retrieve F5 load balancer pool status."
inputParameters:
- name: pool_name
in: body
type: string
description: "The F5 pool name."
call: "f5.get-pool"
with:
pool_name: "{{pool_name}}"
outputParameters:
- name: active_members
type: number
mapping: "$.activeMemberCnt"
- name: health_status
type: string
mapping: "$.status.availabilityState"
- name: current_connections
type: number
mapping: "$.curSessions"
consumes:
- type: http
namespace: f5
baseUri: "https://f5-ltm.inditex.com/mgmt/tm"
authentication:
type: basic
username: "$secrets.f5_user"
password: "$secrets.f5_password"
resources:
- name: pools
path: "/ltm/pool/{{pool_name}}/stats"
inputParameters:
- name: pool_name
in: path
operations:
- name: get-pool
method: GET
Validates fabric sourcing compliance by checking supplier certification in SAP, retrieving sustainability documentation from SharePoint, and creating a compliance audit record in ServiceNow.
naftiko: "0.5"
info:
label: "Fabric Sourcing Compliance Pipeline"
description: "Validates fabric sourcing compliance by checking supplier certification in SAP, retrieving sustainability documentation from SharePoint, and creating a compliance audit record in ServiceNow."
tags:
- sustainability
- compliance
- sap
- sharepoint
- servicenow
capability:
exposes:
- type: mcp
namespace: fabric-compliance
port: 8080
tools:
- name: validate-fabric-compliance
description: "Validate fabric sourcing compliance for an Inditex supplier."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The SAP supplier ID."
- name: material_code
in: body
type: string
description: "The fabric material code."
steps:
- name: check-certification
type: call
call: "sap.get-supplier-cert"
with:
supplier_id: "{{supplier_id}}"
- name: get-sustainability-docs
type: call
call: "sharepoint.search-documents"
with:
query: "Supplier_{{supplier_id}}_Sustainability"
- name: create-audit-record
type: call
call: "servicenow.create-task"
with:
short_description: "Fabric compliance audit: Supplier {{supplier_id}} - Material {{material_code}}"
description: "Certification status: {{check-certification.cert_status}}. Documentation: {{get-sustainability-docs.doc_count}} files found."
assignment_group: "Sustainability_Compliance"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: suppliers
path: "/A_Supplier('{{supplier_id}}')/to_SupplierCertification"
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier-cert
method: GET
- type: http
namespace: sharepoint
baseUri: "https://inditex.sharepoint.com/_api/v2.0"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: search
path: "/search/query"
operations:
- name: search-documents
method: POST
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
Pulls campaign performance data from Facebook Ads for Inditex brand campaigns.
naftiko: "0.5"
info:
label: "Facebook Advertising Campaign Reporter"
description: "Pulls campaign performance data from Facebook Ads for Inditex brand campaigns."
tags:
- marketing
- advertising
- facebook
capability:
exposes:
- type: mcp
namespace: fb-campaigns
port: 8080
tools:
- name: get-campaign-metrics
description: "Retrieve Facebook Ads campaign performance metrics."
inputParameters:
- name: campaign_id
in: body
type: string
description: "Facebook Ads campaign ID."
call: "facebook.get-insights"
with:
campaign_id: "{{campaign_id}}"
outputParameters:
- name: impressions
type: string
mapping: "$.data[0].impressions"
- name: clicks
type: string
mapping: "$.data[0].clicks"
- name: spend
type: string
mapping: "$.data[0].spend"
consumes:
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v17.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-insights
method: GET
When an online order is placed, validates stock in SAP, creates a warehouse pick task in ServiceNow, and sends confirmation via Adobe Campaign.
naftiko: "0.5"
info:
label: "Fast Fashion Order Fulfillment Orchestrator"
description: "When an online order is placed, validates stock in SAP, creates a warehouse pick task in ServiceNow, and sends confirmation via Adobe Campaign."
tags:
- e-commerce
- supply-chain
- sap
- servicenow
- adobe-campaign
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: orchestrate-fulfillment
description: "Process a new Zara/Inditex online order through fulfillment pipeline."
inputParameters:
- name: order_id
in: body
type: string
description: "The e-commerce order ID."
- name: customer_email
in: body
type: string
description: "Customer email address."
steps:
- name: get-order
type: call
call: "sap.get-sales-order"
with:
order_id: "{{order_id}}"
- name: check-stock
type: call
call: "sap.check-stock"
with:
material: "{{get-order.article_ref}}"
plant: "{{get-order.fulfillment_dc}}"
- name: create-pick-task
type: call
call: "servicenow.create-task"
with:
short_description: "Pick: Order {{order_id}} - {{get-order.product_name}} Size {{get-order.size}}"
assignment_group: "DC_{{get-order.fulfillment_dc}}"
priority: "2"
- name: send-confirmation
type: call
call: "adobe-campaign.send-email"
with:
recipient_email: "{{customer_email}}"
template: "order_confirmation"
params: "{{order_id}},{{get-order.product_name}},{{get-order.estimated_delivery}}"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-orders
path: "/A_SalesOrder('{{order_id}}')"
inputParameters:
- name: order_id
in: path
operations:
- name: get-sales-order
method: GET
- name: stock
path: "/A_MaterialStock(Material='{{material}}',Plant='{{plant}}')"
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: check-stock
method: GET
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- type: http
namespace: adobe-campaign
baseUri: "https://mc.adobe.io/inditex/campaign"
authentication:
type: bearer
token: "$secrets.adobe_campaign_token"
resources:
- name: emails
path: "/email/send"
operations:
- name: send-email
method: POST
Triggers a GitHub Actions deployment workflow for an Inditex digital platform.
naftiko: "0.5"
info:
label: "GitHub Actions Deployment Trigger"
description: "Triggers a GitHub Actions deployment workflow for an Inditex digital platform."
tags:
- it-operations
- cicd
- github-actions
capability:
exposes:
- type: mcp
namespace: deployments
port: 8080
tools:
- name: trigger-deployment
description: "Trigger a GitHub Actions deployment."
inputParameters:
- name: repo
in: body
type: string
description: "GitHub repository."
- name: workflow_id
in: body
type: string
description: "Workflow ID."
- name: ref
in: body
type: string
description: "Git ref."
call: "github.trigger-workflow"
with:
repo: "{{repo}}"
workflow_id: "{{workflow_id}}"
ref: "{{ref}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflows
path: "/repos/{{repo}}/actions/workflows/{{workflow_id}}/dispatches"
inputParameters:
- name: repo
in: path
- name: workflow_id
in: path
operations:
- name: trigger-workflow
method: POST
Retrieves website traffic metrics from Google Analytics for Zara.com, returning sessions, page views, conversion rate, and top landing pages.
naftiko: "0.5"
info:
label: "Google Analytics Website Traffic Reporter"
description: "Retrieves website traffic metrics from Google Analytics for Zara.com, returning sessions, page views, conversion rate, and top landing pages."
tags:
- marketing
- analytics
- google-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-website-traffic
description: "Get web traffic data from Google Analytics for an Inditex brand."
inputParameters:
- name: property_id
in: body
type: string
description: "The GA property ID."
- name: date_range
in: body
type: string
description: "Date range."
call: "ga.get-report"
with:
property_id: "{{property_id}}"
date_range: "{{date_range}}"
outputParameters:
- name: sessions
type: string
mapping: "$.rows[0].metricValues[0].value"
- name: conversion_rate
type: string
mapping: "$.rows[0].metricValues[1].value"
consumes:
- type: http
namespace: ga
baseUri: "https://analyticsdata.googleapis.com/v1beta"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: reports
path: "/properties/{{property_id}}:runReport"
inputParameters:
- name: property_id
in: path
operations:
- name: get-report
method: POST
Searches for fashion design briefs in Inditex's Google Drive.
naftiko: "0.5"
info:
label: "Google Drive Design Brief Finder"
description: "Searches for fashion design briefs in Inditex's Google Drive."
tags:
- design
- documents
- google-drive
capability:
exposes:
- type: mcp
namespace: gdrive-search
port: 8080
tools:
- name: search-briefs
description: "Search for design briefs in Google Drive."
inputParameters:
- name: search_query
in: body
type: string
description: "Search query."
call: "gdrive.search-files"
with:
query: "{{search_query}}"
outputParameters:
- name: files
type: string
mapping: "$.files"
consumes:
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
inputParameters:
- name: q
in: query
value: "name contains '{{query}}'"
operations:
- name: search-files
method: GET
Retrieves customer feedback responses from Google Forms for Inditex store satisfaction surveys, returning response count, average rating, and latest comments.
naftiko: "0.5"
info:
label: "Google Forms Store Feedback Collector"
description: "Retrieves customer feedback responses from Google Forms for Inditex store satisfaction surveys, returning response count, average rating, and latest comments."
tags:
- customer-experience
- google-forms
- retail
capability:
exposes:
- type: mcp
namespace: store-feedback
port: 8080
tools:
- name: get-feedback
description: "Retrieve store feedback responses from Google Forms."
inputParameters:
- name: form_id
in: body
type: string
description: "The Google Form ID."
call: "gforms.get-responses"
with:
form_id: "{{form_id}}"
outputParameters:
- name: response_count
type: number
mapping: "$.responses.length"
- name: avg_rating
type: string
mapping: "$.summary.averageRating"
- name: latest_comments
type: string
mapping: "$.responses[0].answers.comment"
consumes:
- type: http
namespace: gforms
baseUri: "https://forms.googleapis.com/v1"
authentication:
type: bearer
token: "$secrets.google_api_token"
resources:
- name: responses
path: "/forms/{{form_id}}/responses"
inputParameters:
- name: form_id
in: path
operations:
- name: get-responses
method: GET
Finds the nearest Inditex brand store to a given address using Google Maps.
naftiko: "0.5"
info:
label: "Google Maps Store Locator"
description: "Finds the nearest Inditex brand store to a given address using Google Maps."
tags:
- retail
- customer-service
- google-maps
capability:
exposes:
- type: mcp
namespace: store-locator
port: 8080
tools:
- name: find-nearest-store
description: "Find nearest brand store from a location."
inputParameters:
- name: brand
in: body
type: string
description: "Brand name (Zara, Pull&Bear, etc.)."
- name: address
in: body
type: string
description: "Customer address."
call: "gmaps.find-place"
with:
input: "{{brand}} near {{address}}"
inputtype: "textquery"
outputParameters:
- name: store_name
type: string
mapping: "$.candidates[0].name"
- name: address
type: string
mapping: "$.candidates[0].formatted_address"
consumes:
- type: http
namespace: gmaps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: apiKey
name: "key"
in: query
value: "$secrets.google_maps_api_key"
resources:
- name: places
path: "/place/findplacefromtext/json"
inputParameters:
- name: input
in: query
- name: inputtype
in: query
operations:
- name: find-place
method: GET
Retrieves search performance data from Google Search Console for Inditex brand websites, returning clicks, impressions, CTR, and average position.
naftiko: "0.5"
info:
label: "Google Search Console SEO Metrics"
description: "Retrieves search performance data from Google Search Console for Inditex brand websites, returning clicks, impressions, CTR, and average position."
tags:
- marketing
- google-search-console
- seo
capability:
exposes:
- type: mcp
namespace: seo-metrics
port: 8080
tools:
- name: get-search-performance
description: "Retrieve SEO performance metrics from Google Search Console."
inputParameters:
- name: site_url
in: body
type: string
description: "The Inditex brand website URL."
call: "gsc.get-performance"
with:
site_url: "{{site_url}}"
outputParameters:
- name: clicks
type: number
mapping: "$.rows[0].clicks"
- name: impressions
type: number
mapping: "$.rows[0].impressions"
- name: ctr
type: string
mapping: "$.rows[0].ctr"
- name: position
type: string
mapping: "$.rows[0].position"
consumes:
- type: http
namespace: gsc
baseUri: "https://www.googleapis.com/webmasters/v3"
authentication:
type: bearer
token: "$secrets.google_api_token"
resources:
- name: search-analytics
path: "/sites/{{site_url}}/searchAnalytics/query"
inputParameters:
- name: site_url
in: path
operations:
- name: get-performance
method: POST
Logs sustainability KPI data to a Google Sheets spreadsheet for Inditex ESG reporting, including carbon emissions, water usage, and recycled material percentage.
naftiko: "0.5"
info:
label: "Google Sheets Sustainability KPI Logger"
description: "Logs sustainability KPI data to a Google Sheets spreadsheet for Inditex ESG reporting, including carbon emissions, water usage, and recycled material percentage."
tags:
- sustainability
- google-sheets
- reporting
capability:
exposes:
- type: mcp
namespace: sustainability-kpis
port: 8080
tools:
- name: log-kpi
description: "Log a sustainability KPI entry to Google Sheets."
inputParameters:
- name: kpi_name
in: body
type: string
description: "The KPI metric name."
- name: value
in: body
type: string
description: "The KPI value."
- name: period
in: body
type: string
description: "The reporting period."
call: "gsheets.append-row"
with:
kpi_name: "{{kpi_name}}"
value: "{{value}}"
period: "{{period}}"
outputParameters:
- name: updated_range
type: string
mapping: "$.updates.updatedRange"
- name: updated_rows
type: number
mapping: "$.updates.updatedRows"
consumes:
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_api_token"
resources:
- name: values
path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Retrieves tag firing statistics from Google Tag Manager for Inditex e-commerce sites, returning active tag count, firing rate, and error summary.
naftiko: "0.5"
info:
label: "Google Tag Manager Event Tracker"
description: "Retrieves tag firing statistics from Google Tag Manager for Inditex e-commerce sites, returning active tag count, firing rate, and error summary."
tags:
- marketing
- google-tag-manager
- e-commerce
capability:
exposes:
- type: mcp
namespace: tag-management
port: 8080
tools:
- name: get-tag-stats
description: "Retrieve tag firing statistics from Google Tag Manager."
inputParameters:
- name: container_id
in: body
type: string
description: "The GTM container ID."
call: "gtm.get-container-stats"
with:
container_id: "{{container_id}}"
outputParameters:
- name: active_tags
type: number
mapping: "$.container.tag_count"
- name: firing_rate
type: string
mapping: "$.container.firing_rate"
- name: error_count
type: number
mapping: "$.container.error_count"
consumes:
- type: http
namespace: gtm
baseUri: "https://www.googleapis.com/tagmanager/v2"
authentication:
type: bearer
token: "$secrets.google_api_token"
resources:
- name: containers
path: "/accounts/{{account_id}}/containers/{{container_id}}"
inputParameters:
- name: account_id
in: path
- name: container_id
in: path
operations:
- name: get-container-stats
method: GET
Retrieves B2B wholesale lead information from HubSpot for Inditex corporate sales, returning lead name, company, deal stage, and estimated deal value.
naftiko: "0.5"
info:
label: "HubSpot B2B Wholesale Lead Tracker"
description: "Retrieves B2B wholesale lead information from HubSpot for Inditex corporate sales, returning lead name, company, deal stage, and estimated deal value."
tags:
- sales
- hubspot
capability:
exposes:
- type: mcp
namespace: wholesale-leads
port: 8080
tools:
- name: get-lead
description: "Look up a B2B wholesale lead in HubSpot."
inputParameters:
- name: deal_id
in: body
type: string
description: "The HubSpot deal ID."
call: "hubspot.get-deal"
with:
deal_id: "{{deal_id}}"
outputParameters:
- name: contact_name
type: string
mapping: "$.properties.dealname"
- name: company
type: string
mapping: "$.properties.company"
- name: deal_stage
type: string
mapping: "$.properties.dealstage"
- name: amount
type: string
mapping: "$.properties.amount"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com/crm/v3"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: deals
path: "/objects/deals/{{deal_id}}"
inputParameters:
- name: deal_id
in: path
operations:
- name: get-deal
method: GET
Syncs corporate sales leads from HubSpot to Salesforce for Inditex B2B uniform and wholesale operations.
naftiko: "0.5"
info:
label: "HubSpot Corporate Lead Sync"
description: "Syncs corporate sales leads from HubSpot to Salesforce for Inditex B2B uniform and wholesale operations."
tags:
- sales
- hubspot
- salesforce
capability:
exposes:
- type: mcp
namespace: lead-sync
port: 8080
tools:
- name: sync-lead
description: "Sync a HubSpot lead to Salesforce."
inputParameters:
- name: contact_id
in: body
type: string
description: "HubSpot contact ID."
steps:
- name: get-lead
type: call
call: "hubspot.get-contact"
with:
contact_id: "{{contact_id}}"
- name: create-opp
type: call
call: "salesforce.create-opportunity"
with:
name: "B2B: {{get-lead.company}}"
amount: "{{get-lead.estimated_value}}"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: contacts
path: "/crm/v3/objects/contacts/{{contact_id}}"
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- type: http
namespace: salesforce
baseUri: "https://inditex.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity"
operations:
- name: create-opportunity
method: POST
Runs a data quality profile check in Informatica for a specified Inditex dataset, returning completeness score, duplicate count, and anomaly summary.
naftiko: "0.5"
info:
label: "Informatica Data Quality Check"
description: "Runs a data quality profile check in Informatica for a specified Inditex dataset, returning completeness score, duplicate count, and anomaly summary."
tags:
- data-quality
- informatica
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-quality-check
description: "Execute a data quality profile check in Informatica."
inputParameters:
- name: dataset_name
in: body
type: string
description: "The Informatica dataset name."
call: "informatica.run-profile"
with:
dataset_name: "{{dataset_name}}"
outputParameters:
- name: completeness
type: string
mapping: "$.profileResult.completenessScore"
- name: duplicate_count
type: number
mapping: "$.profileResult.duplicateCount"
- name: anomaly_summary
type: string
mapping: "$.profileResult.anomalySummary"
consumes:
- type: http
namespace: informatica
baseUri: "https://dm-us.informaticacloud.com/saas/api/v2"
authentication:
type: bearer
token: "$secrets.informatica_token"
resources:
- name: profiles
path: "/profile/run"
operations:
- name: run-profile
method: POST
Retrieves engagement metrics from Instagram for Inditex brand posts, returning likes, reach, saves, and comments.
naftiko: "0.5"
info:
label: "Instagram Fashion Post Engagement Tracker"
description: "Retrieves engagement metrics from Instagram for Inditex brand posts, returning likes, reach, saves, and comments."
tags:
- marketing
- social-media
- instagram
capability:
exposes:
- type: mcp
namespace: social-engagement
port: 8080
tools:
- name: get-post-engagement
description: "Retrieve Instagram engagement metrics for a fashion post."
inputParameters:
- name: media_id
in: body
type: string
description: "The Instagram media ID."
call: "instagram.get-media-insights"
with:
media_id: "{{media_id}}"
outputParameters:
- name: likes
type: string
mapping: "$.data[0].values[0].value"
- name: reach
type: string
mapping: "$.data[1].values[0].value"
- name: saves
type: string
mapping: "$.data[2].values[0].value"
consumes:
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: media-insights
path: "/{{media_id}}/insights"
inputParameters:
- name: media_id
in: path
- name: metric
in: query
value: "likes,reach,saved"
operations:
- name: get-media-insights
method: GET
Syncs product catalog to Instagram Shopping by extracting products from SAP, formatting for the Meta Commerce catalog, uploading via Facebook API, and verifying listing status.
naftiko: "0.5"
info:
label: "Instagram Shopping Catalog Sync Pipeline"
description: "Syncs product catalog to Instagram Shopping by extracting products from SAP, formatting for the Meta Commerce catalog, uploading via Facebook API, and verifying listing status."
tags:
- social-media
- e-commerce
- sap
- instagram
- facebook
capability:
exposes:
- type: mcp
namespace: instagram-shopping
port: 8080
tools:
- name: sync-catalog
description: "Sync Inditex product catalog to Instagram Shopping."
inputParameters:
- name: collection_id
in: body
type: string
description: "The product collection to sync."
- name: brand
in: body
type: string
description: "The Inditex brand."
steps:
- name: extract-products
type: call
call: "sap.get-collection-products"
with:
collection_id: "{{collection_id}}"
- name: upload-catalog
type: call
call: "facebook.upload-catalog-batch"
with:
catalog_id: "{{brand}}_instagram_catalog"
product_count: "{{extract-products.product_count}}"
- name: verify-listings
type: call
call: "facebook.get-catalog-status"
with:
catalog_id: "{{brand}}_instagram_catalog"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: collections
path: "/A_Product?$filter=Collection eq '{{collection_id}}'"
inputParameters:
- name: collection_id
in: query
operations:
- name: get-collection-products
method: GET
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.facebook_token"
resources:
- name: catalog-batches
path: "/{{catalog_id}}/items_batch"
inputParameters:
- name: catalog_id
in: path
operations:
- name: upload-catalog-batch
method: POST
- name: catalog-status
path: "/{{catalog_id}}/product_feeds"
inputParameters:
- name: catalog_id
in: path
operations:
- name: get-catalog-status
method: GET
Orchestrates inventory redistribution by analyzing stock levels in Snowflake, creating transfer orders in SAP, scheduling logistics in the warehouse system, and notifying store managers via Microsoft Teams.
naftiko: "0.5"
info:
label: "Inventory Redistribution Orchestrator"
description: "Orchestrates inventory redistribution by analyzing stock levels in Snowflake, creating transfer orders in SAP, scheduling logistics in the warehouse system, and notifying store managers via Microsoft Teams."
tags:
- supply-chain
- inventory
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: inventory-redistribution
port: 8080
tools:
- name: redistribute-inventory
description: "Orchestrate inventory redistribution across Inditex locations."
inputParameters:
- name: article_ref
in: body
type: string
description: "The article reference."
- name: source_plant
in: body
type: string
description: "The source plant code."
- name: target_plant
in: body
type: string
description: "The target plant code."
steps:
- name: analyze-stock
type: call
call: "snowflake.query-stock-levels"
with:
article_ref: "{{article_ref}}"
source: "{{source_plant}}"
target: "{{target_plant}}"
- name: create-transfer
type: call
call: "sap.create-stock-transfer"
with:
material: "{{article_ref}}"
from_plant: "{{source_plant}}"
to_plant: "{{target_plant}}"
quantity: "{{analyze-stock.recommended_qty}}"
- name: notify-stores
type: call
call: "teams.send-message"
with:
channel: "Inventory_Management"
message: "Stock transfer created: {{analyze-stock.recommended_qty}} units of {{article_ref}} from {{source_plant}} to {{target_plant}}. Transfer order: {{create-transfer.transfer_order_id}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://inditex.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: query-stock-levels
method: POST
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_STOCK_TRANSFER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: transfers
path: "/A_StockTransfer"
operations:
- name: create-stock-transfer
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a job posting on LinkedIn from Workday requisition data and notifies recruiters via Teams.
naftiko: "0.5"
info:
label: "LinkedIn Job Posting Publisher"
description: "Creates a job posting on LinkedIn from Workday requisition data and notifies recruiters via Teams."
tags:
- hr
- recruiting
- linkedin
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: job-posting
port: 8080
tools:
- name: publish-job
description: "Publish a Workday requisition to LinkedIn Jobs."
inputParameters:
- name: requisition_id
in: body
type: string
description: "Workday requisition ID."
steps:
- name: get-req
type: call
call: "workday.get-requisition"
with:
requisition_id: "{{requisition_id}}"
- name: post-job
type: call
call: "linkedin.create-job"
with:
title: "{{get-req.job_title}}"
description: "{{get-req.job_description}}"
location: "{{get-req.location}}"
- name: notify
type: call
call: "msteams.send-message"
with:
channel_id: "recruiting"
text: "Job posted: {{get-req.job_title}} in {{get-req.location}}. LinkedIn ID: {{post-job.job_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: requisitions
path: "/recruiting/v1/jobRequisitions/{{requisition_id}}"
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: jobs
path: "/simpleJobPostings"
operations:
- name: create-job
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves subscriber information from Mailchimp for Inditex brand newsletters, returning subscription status, open rate, click rate, and list membership.
naftiko: "0.5"
info:
label: "Mailchimp Newsletter Subscriber Lookup"
description: "Retrieves subscriber information from Mailchimp for Inditex brand newsletters, returning subscription status, open rate, click rate, and list membership."
tags:
- marketing
- mailchimp
capability:
exposes:
- type: mcp
namespace: newsletter-subscribers
port: 8080
tools:
- name: get-subscriber
description: "Look up a newsletter subscriber in Mailchimp."
inputParameters:
- name: email
in: body
type: string
description: "The subscriber email address."
call: "mailchimp.get-member"
with:
email: "{{email}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: open_rate
type: string
mapping: "$.stats.avg_open_rate"
- name: click_rate
type: string
mapping: "$.stats.avg_click_rate"
- name: list_id
type: string
mapping: "$.list_id"
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: members
path: "/lists/{{list_id}}/members/{{subscriber_hash}}"
inputParameters:
- name: list_id
in: path
- name: subscriber_hash
in: path
operations:
- name: get-member
method: GET
Retrieves transaction analytics from Mastercard for Inditex stores, returning transaction volume, average transaction value, and card type breakdown.
naftiko: "0.5"
info:
label: "Mastercard Transaction Analytics"
description: "Retrieves transaction analytics from Mastercard for Inditex stores, returning transaction volume, average transaction value, and card type breakdown."
tags:
- payments
- mastercard
- retail
capability:
exposes:
- type: mcp
namespace: payment-analytics
port: 8080
tools:
- name: get-transaction-analytics
description: "Retrieve Mastercard transaction analytics for Inditex."
inputParameters:
- name: merchant_id
in: body
type: string
description: "The Mastercard merchant ID."
- name: date_range
in: body
type: string
description: "The date range (YYYY-MM-DD/YYYY-MM-DD)."
call: "mastercard.get-analytics"
with:
merchant_id: "{{merchant_id}}"
date_range: "{{date_range}}"
outputParameters:
- name: transaction_volume
type: number
mapping: "$.data.transactionVolume"
- name: avg_value
type: string
mapping: "$.data.averageTransactionValue"
- name: card_type_breakdown
type: string
mapping: "$.data.cardTypeBreakdown"
consumes:
- type: http
namespace: mastercard
baseUri: "https://api.mastercard.com/merchant-analytics/v1"
authentication:
type: bearer
token: "$secrets.mastercard_api_key"
resources:
- name: analytics
path: "/merchants/{{merchant_id}}/analytics"
inputParameters:
- name: merchant_id
in: path
operations:
- name: get-analytics
method: GET
Generates a brand sales report in Excel, populating a template with data from SAP HANA.
naftiko: "0.5"
info:
label: "Microsoft Excel Sales Report Generator"
description: "Generates a brand sales report in Excel, populating a template with data from SAP HANA."
tags:
- retail
- reporting
- microsoft-excel
- sap-hana
capability:
exposes:
- type: mcp
namespace: sales-reporting
port: 8080
tools:
- name: generate-report
description: "Pull SAP HANA sales data and populate an Excel report."
inputParameters:
- name: brand
in: body
type: string
description: "Brand code."
- name: month
in: body
type: string
description: "Month YYYY-MM."
steps:
- name: get-data
type: call
call: "sap-hana.execute-query"
with:
query: "SELECT date, store, revenue, units FROM DAILY_SALES WHERE brand = '{{brand}}' AND month = '{{month}}'"
- name: update-workbook
type: call
call: "excel.update-range"
with:
workbook_id: "sales_{{brand}}"
sheet_name: "Monthly"
range: "A2:D500"
values: "{{get-data.results}}"
consumes:
- type: http
namespace: sap-hana
baseUri: "https://inditex-hana.sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_hana_token"
resources:
- name: queries
path: "/sql"
operations:
- name: execute-query
method: POST
- type: http
namespace: excel
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: workbooks
path: "/me/drive/items/{{workbook_id}}/workbook/worksheets/{{sheet_name}}/range(address='{{range}}')"
inputParameters:
- name: workbook_id
in: path
- name: sheet_name
in: path
- name: range
in: path
operations:
- name: update-range
method: PATCH
Creates a meeting on an employee's Outlook calendar.
naftiko: "0.5"
info:
label: "Microsoft Outlook Meeting Scheduler"
description: "Creates a meeting on an employee's Outlook calendar."
tags:
- communications
- scheduling
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: meeting-scheduler
port: 8080
tools:
- name: schedule-meeting
description: "Create a meeting on Outlook calendar."
inputParameters:
- name: organizer_upn
in: body
type: string
description: "Organizer UPN."
- name: subject
in: body
type: string
description: "Subject."
- name: start_time
in: body
type: string
description: "Start time ISO 8601."
- name: end_time
in: body
type: string
description: "End time ISO 8601."
call: "outlook.create-event"
with:
organizer_upn: "{{organizer_upn}}"
subject: "{{subject}}"
start_time: "{{start_time}}"
end_time: "{{end_time}}"
outputParameters:
- name: meeting_link
type: string
mapping: "$.onlineMeeting.joinUrl"
consumes:
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: events
path: "/users/{{organizer_upn}}/events"
inputParameters:
- name: organizer_upn
in: path
operations:
- name: create-event
method: POST
Triggers a Power Automate flow for custom Inditex automations.
naftiko: "0.5"
info:
label: "Microsoft Power Automate Flow Trigger"
description: "Triggers a Power Automate flow for custom Inditex automations."
tags:
- automation
- microsoft-power-automate
capability:
exposes:
- type: mcp
namespace: flow-trigger
port: 8080
tools:
- name: trigger-flow
description: "Trigger a Power Automate flow."
inputParameters:
- name: flow_id
in: body
type: string
description: "Flow ID."
- name: payload
in: body
type: string
description: "JSON payload."
call: "power-automate.invoke-flow"
with:
flow_id: "{{flow_id}}"
payload: "{{payload}}"
consumes:
- type: http
namespace: power-automate
baseUri: "https://prod-00.westus.logic.azure.com/workflows"
authentication:
type: bearer
token: "$secrets.power_automate_token"
resources:
- name: flows
path: "/{{flow_id}}/triggers/manual/paths/invoke"
inputParameters:
- name: flow_id
in: path
operations:
- name: invoke-flow
method: POST
Sends an announcement to an Inditex brand team's Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Brand Channel Announcement"
description: "Sends an announcement to an Inditex brand team's Microsoft Teams channel."
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-comms
port: 8080
tools:
- name: send-announcement
description: "Post an announcement to a brand Teams channel."
inputParameters:
- name: brand
in: body
type: string
description: "Brand code."
- name: message
in: body
type: string
description: "Message text."
call: "msteams.post-message"
with:
channel_id: "announcements_{{brand}}"
text: "{{message}}"
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves application performance metrics from New Relic for Inditex brand websites.
naftiko: "0.5"
info:
label: "New Relic E-Commerce Performance Monitor"
description: "Retrieves application performance metrics from New Relic for Inditex brand websites."
tags:
- it-operations
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: app-performance
port: 8080
tools:
- name: get-app-metrics
description: "Get application performance from New Relic."
inputParameters:
- name: app_id
in: body
type: string
description: "New Relic application ID."
call: "newrelic.get-app"
with:
app_id: "{{app_id}}"
outputParameters:
- name: response_time
type: string
mapping: "$.application.application_summary.response_time"
- name: error_rate
type: string
mapping: "$.application.application_summary.error_rate"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: apiKey
name: "Api-Key"
in: header
value: "$secrets.newrelic_api_key"
resources:
- name: applications
path: "/applications/{{app_id}}.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-app
method: GET
Processes an online return by validating the order in SAP, creating a return merchandise authorization, processing the refund via the payment gateway, and sending confirmation through WhatsApp.
naftiko: "0.5"
info:
label: "Online Order Return and Refund Pipeline"
description: "Processes an online return by validating the order in SAP, creating a return merchandise authorization, processing the refund via the payment gateway, and sending confirmation through WhatsApp."
tags:
- e-commerce
- returns
- sap
- whatsapp
capability:
exposes:
- type: mcp
namespace: returns-refunds
port: 8080
tools:
- name: process-return
description: "Process an online order return and refund."
inputParameters:
- name: order_id
in: body
type: string
description: "The original order ID."
- name: return_reason
in: body
type: string
description: "The reason for return."
- name: customer_phone
in: body
type: string
description: "Customer phone number for WhatsApp notification."
steps:
- name: validate-order
type: call
call: "sap.get-sales-order"
with:
order_id: "{{order_id}}"
- name: create-rma
type: call
call: "sap.create-return-order"
with:
order_id: "{{order_id}}"
reason: "{{return_reason}}"
- name: process-refund
type: call
call: "payment-gateway.create-refund"
with:
order_id: "{{order_id}}"
amount: "{{validate-order.total_amount}}"
currency: "{{validate-order.currency}}"
- name: send-confirmation
type: call
call: "whatsapp.send-message"
with:
phone: "{{customer_phone}}"
template: "return_confirmed"
parameters: "{{order_id}},{{create-rma.rma_number}},{{process-refund.refund_reference}}"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: orders
path: "/A_SalesOrder('{{order_id}}')"
inputParameters:
- name: order_id
in: path
operations:
- name: get-sales-order
method: GET
- name: returns
path: "/A_SalesOrder"
operations:
- name: create-return-order
method: POST
- type: http
namespace: payment-gateway
baseUri: "https://payments.inditex.com/api/v1"
authentication:
type: bearer
token: "$secrets.payment_gateway_token"
resources:
- name: refunds
path: "/refunds"
operations:
- name: create-refund
method: POST
- type: http
namespace: whatsapp
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.whatsapp_token"
resources:
- name: messages
path: "/{{phone_number_id}}/messages"
inputParameters:
- name: phone_number_id
in: path
operations:
- name: send-message
method: POST
Retrieves budget versus actual variance data from Oracle Cloud Financials for a given cost center and period, returning planned amount, actual spend, and variance percentage.
naftiko: "0.5"
info:
label: "Oracle Cloud Budget Variance Lookup"
description: "Retrieves budget versus actual variance data from Oracle Cloud Financials for a given cost center and period, returning planned amount, actual spend, and variance percentage."
tags:
- finance
- oracle-cloud
capability:
exposes:
- type: mcp
namespace: finance-budgets
port: 8080
tools:
- name: get-budget-variance
description: "Look up budget variance for an Inditex cost center."
inputParameters:
- name: cost_center
in: body
type: string
description: "The cost center code."
- name: period
in: body
type: string
description: "The fiscal period (e.g. 2026-Q1)."
call: "oracle.get-budget"
with:
cost_center: "{{cost_center}}"
period: "{{period}}"
outputParameters:
- name: planned_amount
type: string
mapping: "$.BudgetAmount"
- name: actual_amount
type: string
mapping: "$.ActualAmount"
- name: variance_pct
type: string
mapping: "$.VariancePercentage"
consumes:
- type: http
namespace: oracle
baseUri: "https://inditex-cloud.oraclecloud.com/fscmRestApi/resources/v1"
authentication:
type: bearer
token: "$secrets.oracle_cloud_token"
resources:
- name: budgets
path: "/budgets?q=CostCenter={{cost_center}};Period={{period}}"
inputParameters:
- name: cost_center
in: query
- name: period
in: query
operations:
- name: get-budget
method: GET
Creates a journal entry in Oracle Cloud Financials for Inditex store accounting.
naftiko: "0.5"
info:
label: "Oracle Cloud Finance Journal Creator"
description: "Creates a journal entry in Oracle Cloud Financials for Inditex store accounting."
tags:
- finance
- accounting
- oracle-cloud
capability:
exposes:
- type: mcp
namespace: finance-journals
port: 8080
tools:
- name: create-journal
description: "Create a GL journal entry in Oracle Cloud."
inputParameters:
- name: ledger_name
in: body
type: string
description: "Ledger name."
- name: journal_lines
in: body
type: string
description: "JSON line items."
call: "oracle-cloud.create-journal"
with:
ledger_name: "{{ledger_name}}"
journal_lines: "{{journal_lines}}"
consumes:
- type: http
namespace: oracle-cloud
baseUri: "https://inditex.oraclecloud.com/fscmRestApi/resources/v2"
authentication:
type: bearer
token: "$secrets.oracle_cloud_token"
resources:
- name: journals
path: "/generalAccountingJournals"
operations:
- name: create-journal
method: POST
Retrieves accounts payable invoice details from Oracle E-Business Suite, returning invoice amount, vendor name, payment terms, and approval status.
naftiko: "0.5"
info:
label: "Oracle E-Business Suite AP Invoice Lookup"
description: "Retrieves accounts payable invoice details from Oracle E-Business Suite, returning invoice amount, vendor name, payment terms, and approval status."
tags:
- finance
- oracle-e-business-suite
capability:
exposes:
- type: mcp
namespace: accounts-payable
port: 8080
tools:
- name: get-ap-invoice
description: "Look up an AP invoice in Oracle E-Business Suite."
inputParameters:
- name: invoice_id
in: body
type: string
description: "The Oracle AP invoice ID."
call: "oracle-ebs.get-invoice"
with:
invoice_id: "{{invoice_id}}"
outputParameters:
- name: amount
type: string
mapping: "$.InvoiceAmount"
- name: vendor_name
type: string
mapping: "$.VendorName"
- name: payment_terms
type: string
mapping: "$.PaymentTerms"
- name: approval_status
type: string
mapping: "$.ApprovalStatus"
consumes:
- type: http
namespace: oracle-ebs
baseUri: "https://inditex-ebs.oraclecloud.com/webservices/rest/v1"
authentication:
type: basic
username: "$secrets.oracle_ebs_user"
password: "$secrets.oracle_ebs_password"
resources:
- name: invoices
path: "/ap/invoices/{{invoice_id}}"
inputParameters:
- name: invoice_id
in: path
operations:
- name: get-invoice
method: GET
Retrieves firewall security rule details from Palo Alto Networks for Inditex network security, returning rule name, action, source zones, and hit count.
naftiko: "0.5"
info:
label: "Palo Alto Firewall Rule Lookup"
description: "Retrieves firewall security rule details from Palo Alto Networks for Inditex network security, returning rule name, action, source zones, and hit count."
tags:
- security
- palo-alto-networks
capability:
exposes:
- type: mcp
namespace: firewall-rules
port: 8080
tools:
- name: get-rule
description: "Look up a Palo Alto firewall security rule."
inputParameters:
- name: rule_name
in: body
type: string
description: "The firewall rule name."
call: "paloalto.get-rule"
with:
rule_name: "{{rule_name}}"
outputParameters:
- name: action
type: string
mapping: "$.result.entry.action"
- name: source_zones
type: string
mapping: "$.result.entry.from.member"
- name: hit_count
type: number
mapping: "$.result.entry.hit-count"
consumes:
- type: http
namespace: paloalto
baseUri: "https://panorama.inditex.com/restapi/v10.2"
authentication:
type: bearer
token: "$secrets.paloalto_api_key"
resources:
- name: rules
path: "/Policies/SecurityRules?name={{rule_name}}"
inputParameters:
- name: rule_name
in: query
operations:
- name: get-rule
method: GET
Assigns a Pluralsight learning path to an Inditex employee and notifies them via Teams.
naftiko: "0.5"
info:
label: "Pluralsight Training Assigner"
description: "Assigns a Pluralsight learning path to an Inditex employee and notifies them via Teams."
tags:
- hr
- training
- pluralsight
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: training
port: 8080
tools:
- name: assign-training
description: "Assign training and notify employee."
inputParameters:
- name: employee_email
in: body
type: string
description: "Employee email."
- name: channel_id
in: body
type: string
description: "Pluralsight channel ID."
steps:
- name: assign
type: call
call: "pluralsight.assign-channel"
with:
email: "{{employee_email}}"
channel_id: "{{channel_id}}"
- name: notify
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{employee_email}}"
text: "New training assigned on Pluralsight: {{assign.channel_url}}"
consumes:
- type: http
namespace: pluralsight
baseUri: "https://api.pluralsight.com/api/v1"
authentication:
type: bearer
token: "$secrets.pluralsight_token"
resources:
- name: channels
path: "/channels/{{channel_id}}/assignments"
inputParameters:
- name: channel_id
in: path
operations:
- name: assign-channel
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves a Power BI store performance report by store code, returning revenue, footfall, conversion rate, and average basket size for Inditex retail locations.
naftiko: "0.5"
info:
label: "Power BI Store Performance Report"
description: "Retrieves a Power BI store performance report by store code, returning revenue, footfall, conversion rate, and average basket size for Inditex retail locations."
tags:
- analytics
- power-bi
- retail
capability:
exposes:
- type: mcp
namespace: store-analytics
port: 8080
tools:
- name: get-store-report
description: "Retrieve store performance metrics from Power BI."
inputParameters:
- name: store_code
in: body
type: string
description: "The Inditex store code."
call: "powerbi.get-report"
with:
store_code: "{{store_code}}"
outputParameters:
- name: revenue
type: string
mapping: "$.value[0].Revenue"
- name: footfall
type: string
mapping: "$.value[0].Footfall"
- name: conversion_rate
type: string
mapping: "$.value[0].ConversionRate"
- name: avg_basket
type: string
mapping: "$.value[0].AvgBasketSize"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: reports
path: "/datasets/{{dataset_id}}/executeQueries"
inputParameters:
- name: dataset_id
in: path
operations:
- name: get-report
method: POST
Retrieves product details from the SAP merchandise catalog, returning article reference, price, available sizes, color variants, and collection assignment.
naftiko: "0.5"
info:
label: "Product Catalog Article Lookup"
description: "Retrieves product details from the SAP merchandise catalog, returning article reference, price, available sizes, color variants, and collection assignment."
tags:
- retail
- e-commerce
- sap
capability:
exposes:
- type: mcp
namespace: product-catalog
port: 8080
tools:
- name: get-product
description: "Look up an Inditex product by article reference from SAP."
inputParameters:
- name: article_ref
in: body
type: string
description: "The Inditex article reference number."
call: "sap.get-material"
with:
article_ref: "{{article_ref}}"
outputParameters:
- name: name
type: string
mapping: "$.d.MaterialName"
- name: price
type: string
mapping: "$.d.Price"
- name: sizes
type: string
mapping: "$.d.AvailableSizes"
- name: collection
type: string
mapping: "$.d.Collection"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: materials
path: "/A_Product('{{article_ref}}')"
inputParameters:
- name: article_ref
in: path
operations:
- name: get-material
method: GET
Handles product recalls by retrieving affected order data from SAP, identifying impacted customers via Salesforce, sending recall notifications through Adobe Campaign, and logging the recall in ServiceNow.
naftiko: "0.5"
info:
label: "Product Recall Notification Pipeline"
description: "Handles product recalls by retrieving affected order data from SAP, identifying impacted customers via Salesforce, sending recall notifications through Adobe Campaign, and logging the recall in ServiceNow."
tags:
- quality
- compliance
- sap
- salesforce
- adobe-campaign
- servicenow
capability:
exposes:
- type: mcp
namespace: product-recall
port: 8080
tools:
- name: process-recall
description: "Process a product recall across Inditex systems."
inputParameters:
- name: article_ref
in: body
type: string
description: "The article reference being recalled."
- name: reason
in: body
type: string
description: "The recall reason description."
steps:
- name: get-affected-orders
type: call
call: "sap.get-orders-by-material"
with:
material: "{{article_ref}}"
- name: get-customers
type: call
call: "salesforce.get-affected-customers"
with:
article_ref: "{{article_ref}}"
- name: send-notifications
type: call
call: "adobe-campaign.send-bulk-email"
with:
template: "product_recall"
audience: "{{get-customers.customer_list_id}}"
params: "{{article_ref}},{{reason}}"
- name: create-recall-record
type: call
call: "servicenow.create-task"
with:
short_description: "Product Recall: Article {{article_ref}}"
description: "Reason: {{reason}}. Affected orders: {{get-affected-orders.order_count}}. Customers notified: {{get-customers.customer_count}}."
assignment_group: "Quality_Management"
priority: "1"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: orders
path: "/A_SalesOrder?$filter=Material eq '{{material}}'"
inputParameters:
- name: material
in: query
operations:
- name: get-orders-by-material
method: GET
- type: http
namespace: salesforce
baseUri: "https://inditex.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: customers
path: "/query?q=SELECT+Id+FROM+Contact+WHERE+Article_Ref__c='{{article_ref}}'"
inputParameters:
- name: article_ref
in: query
operations:
- name: get-affected-customers
method: GET
- type: http
namespace: adobe-campaign
baseUri: "https://mc.adobe.io/inditex/campaign"
authentication:
type: bearer
token: "$secrets.adobe_campaign_token"
resources:
- name: bulk-emails
path: "/email/sendBulk"
operations:
- name: send-bulk-email
method: POST
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
Retrieves a SAP purchase order for garment sourcing, returning supplier, delivery date, total value, and approval status.
naftiko: "0.5"
info:
label: "Purchase Order Status Lookup"
description: "Retrieves a SAP purchase order for garment sourcing, returning supplier, delivery date, total value, and approval status."
tags:
- supply-chain
- procurement
- sap
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-purchase-order
description: "Look up a SAP purchase order by PO number."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number."
call: "sap.get-po"
with:
po_number: "{{po_number}}"
outputParameters:
- name: supplier
type: string
mapping: "$.d.Supplier.CompanyName"
- name: total_value
type: string
mapping: "$.d.TotalAmount"
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: delivery_date
type: string
mapping: "$.d.DeliveryDate"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Retrieves inventory dashboard data from Qlik Sense for an Inditex distribution center, returning stock levels, aging inventory percentage, and reorder suggestions.
naftiko: "0.5"
info:
label: "Qlik Sense Inventory Dashboard"
description: "Retrieves inventory dashboard data from Qlik Sense for an Inditex distribution center, returning stock levels, aging inventory percentage, and reorder suggestions."
tags:
- analytics
- qlik-sense
- inventory
capability:
exposes:
- type: mcp
namespace: inventory-analytics
port: 8080
tools:
- name: get-inventory-dashboard
description: "Retrieve inventory analytics dashboard from Qlik Sense."
inputParameters:
- name: dc_code
in: body
type: string
description: "The distribution center code."
call: "qlik.get-dashboard"
with:
dc_code: "{{dc_code}}"
outputParameters:
- name: total_stock
type: number
mapping: "$.qHyperCube.qDataPages[0].totalStock"
- name: aging_pct
type: string
mapping: "$.qHyperCube.qDataPages[0].agingPercentage"
- name: reorder_count
type: number
mapping: "$.qHyperCube.qDataPages[0].reorderSuggestions"
consumes:
- type: http
namespace: qlik
baseUri: "https://inditex.eu.qlikcloud.com/api/v1"
authentication:
type: bearer
token: "$secrets.qlik_token"
resources:
- name: apps
path: "/apps/{{app_id}}/objects/{{object_id}}/layout"
inputParameters:
- name: app_id
in: path
- name: object_id
in: path
operations:
- name: get-dashboard
method: GET
Retrieves a customer support case from Salesforce by case ID.
naftiko: "0.5"
info:
label: "Salesforce Customer Case Lookup"
description: "Retrieves a customer support case from Salesforce by case ID."
tags:
- customer-service
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-cases
port: 8080
tools:
- name: get-case
description: "Look up a customer case in Salesforce."
inputParameters:
- name: case_id
in: body
type: string
description: "Salesforce case ID."
call: "salesforce.get-case"
with:
case_id: "{{case_id}}"
outputParameters:
- name: subject
type: string
mapping: "$.Subject"
- name: status
type: string
mapping: "$.Status"
- name: priority
type: string
mapping: "$.Priority"
consumes:
- type: http
namespace: salesforce
baseUri: "https://inditex.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case/{{case_id}}"
inputParameters:
- name: case_id
in: path
operations:
- name: get-case
method: GET
Queries SAP BW for warehouse utilization metrics across Inditex distribution centers, returning capacity percentage, bin occupancy, and throughput volume.
naftiko: "0.5"
info:
label: "SAP BW Warehouse Utilization Report"
description: "Queries SAP BW for warehouse utilization metrics across Inditex distribution centers, returning capacity percentage, bin occupancy, and throughput volume."
tags:
- logistics
- sap-bw
- supply-chain
capability:
exposes:
- type: mcp
namespace: warehouse-utilization
port: 8080
tools:
- name: get-utilization
description: "Retrieve warehouse utilization metrics from SAP BW."
inputParameters:
- name: warehouse_id
in: body
type: string
description: "The warehouse identifier."
call: "sapbw.query-utilization"
with:
warehouse_id: "{{warehouse_id}}"
outputParameters:
- name: capacity_pct
type: string
mapping: "$.data.capacityPercentage"
- name: bin_occupancy
type: number
mapping: "$.data.binOccupancy"
- name: throughput_volume
type: number
mapping: "$.data.throughputVolume"
consumes:
- type: http
namespace: sapbw
baseUri: "https://inditex-bw.sap.com/sap/bw/ina/GetResponse"
authentication:
type: basic
username: "$secrets.sap_bw_user"
password: "$secrets.sap_bw_password"
resources:
- name: queries
path: "/query"
operations:
- name: query-utilization
method: POST
Queries SAP HANA for customer segmentation data, returning segment name, customer count, average order value, and purchase frequency by brand.
naftiko: "0.5"
info:
label: "SAP HANA Customer Segmentation Query"
description: "Queries SAP HANA for customer segmentation data, returning segment name, customer count, average order value, and purchase frequency by brand."
tags:
- analytics
- sap-hana
- marketing
capability:
exposes:
- type: mcp
namespace: customer-segmentation
port: 8080
tools:
- name: get-segment
description: "Query customer segmentation data from SAP HANA."
inputParameters:
- name: segment_id
in: body
type: string
description: "The customer segment identifier."
call: "saphana.query-segment"
with:
segment_id: "{{segment_id}}"
outputParameters:
- name: segment_name
type: string
mapping: "$.results[0].segment_name"
- name: customer_count
type: number
mapping: "$.results[0].customer_count"
- name: avg_order_value
type: string
mapping: "$.results[0].avg_order_value"
- name: purchase_frequency
type: string
mapping: "$.results[0].purchase_frequency"
consumes:
- type: http
namespace: saphana
baseUri: "https://inditex-hana.sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_hana_token"
resources:
- name: segments
path: "/segments/{{segment_id}}"
inputParameters:
- name: segment_id
in: path
operations:
- name: query-segment
method: GET
Executes an analytical query on SAP HANA to retrieve brand-level daily sales, units, average ticket, and top-selling product families.
naftiko: "0.5"
info:
label: "SAP HANA Sales Performance Dashboard"
description: "Executes an analytical query on SAP HANA to retrieve brand-level daily sales, units, average ticket, and top-selling product families."
tags:
- analytics
- retail
- sap-hana
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: query-sales
description: "Run a sales analytics query against SAP HANA."
inputParameters:
- name: brand
in: body
type: string
description: "Brand code (ZARA, PB, MD, etc.)."
- name: date
in: body
type: string
description: "Sales date YYYY-MM-DD."
call: "sap-hana.execute-query"
with:
query: "SELECT total_revenue, units_sold, avg_ticket, top_family FROM BRAND_DAILY_SALES WHERE brand = '{{brand}}' AND sales_date = '{{date}}'"
outputParameters:
- name: total_revenue
type: string
mapping: "$.results[0].TOTAL_REVENUE"
- name: units_sold
type: string
mapping: "$.results[0].UNITS_SOLD"
- name: avg_ticket
type: string
mapping: "$.results[0].AVG_TICKET"
consumes:
- type: http
namespace: sap-hana
baseUri: "https://inditex-hana.sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_hana_token"
resources:
- name: queries
path: "/sql"
operations:
- name: execute-query
method: POST
Checks material availability in SAP for a given article across Inditex distribution centers, returning available quantity, reserved stock, and next replenishment date.
naftiko: "0.5"
info:
label: "SAP Material Availability Checker"
description: "Checks material availability in SAP for a given article across Inditex distribution centers, returning available quantity, reserved stock, and next replenishment date."
tags:
- supply-chain
- sap
- inventory
capability:
exposes:
- type: mcp
namespace: material-availability
port: 8080
tools:
- name: check-availability
description: "Check material availability across Inditex distribution centers."
inputParameters:
- name: material_id
in: body
type: string
description: "The SAP material number."
- name: plant
in: body
type: string
description: "The distribution center plant code."
call: "sap.get-availability"
with:
material_id: "{{material_id}}"
plant: "{{plant}}"
outputParameters:
- name: available_qty
type: number
mapping: "$.d.AvailableQuantity"
- name: reserved_qty
type: number
mapping: "$.d.ReservedQuantity"
- name: next_replenishment
type: string
mapping: "$.d.NextReplenishmentDate"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: stock
path: "/A_MatlStkInAcctMod(Material='{{material_id}}',Plant='{{plant}}')"
inputParameters:
- name: material_id
in: path
- name: plant
in: path
operations:
- name: get-availability
method: GET
Retrieves purchase requisition details from SAP for Inditex procurement, returning requisition status, requested material, quantity, and delivery date.
naftiko: "0.5"
info:
label: "SAP Purchase Requisition Lookup"
description: "Retrieves purchase requisition details from SAP for Inditex procurement, returning requisition status, requested material, quantity, and delivery date."
tags:
- procurement
- sap
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-requisition
description: "Look up a purchase requisition in SAP."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The SAP purchase requisition number."
call: "sap.get-requisition"
with:
requisition_id: "{{requisition_id}}"
outputParameters:
- name: status
type: string
mapping: "$.d.PurchaseRequisitionStatus"
- name: material
type: string
mapping: "$.d.Material"
- name: quantity
type: number
mapping: "$.d.RequestedQuantity"
- name: delivery_date
type: string
mapping: "$.d.DeliveryDate"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_PURCHASEREQ_PROCESS_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: requisitions
path: "/A_PurchaseRequisitionHeader('{{requisition_id}}')"
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-requisition
method: GET
Retrieves quality inspection results from SAP for Inditex garment manufacturing, returning inspection lot status, defect count, and disposition decision.
naftiko: "0.5"
info:
label: "SAP Quality Inspection Lookup"
description: "Retrieves quality inspection results from SAP for Inditex garment manufacturing, returning inspection lot status, defect count, and disposition decision."
tags:
- quality
- sap
- manufacturing
capability:
exposes:
- type: mcp
namespace: quality-inspection
port: 8080
tools:
- name: get-inspection
description: "Look up a quality inspection lot in SAP."
inputParameters:
- name: inspection_lot
in: body
type: string
description: "The SAP inspection lot number."
call: "sap.get-inspection-lot"
with:
inspection_lot: "{{inspection_lot}}"
outputParameters:
- name: status
type: string
mapping: "$.d.InspectionLotStatus"
- name: defect_count
type: number
mapping: "$.d.DefectCount"
- name: disposition
type: string
mapping: "$.d.UsageDecision"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_QUALITYINSPECTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inspections
path: "/A_InspectionLot('{{inspection_lot}}')"
inputParameters:
- name: inspection_lot
in: path
operations:
- name: get-inspection-lot
method: GET
Retrieves the payment status of a supplier invoice from SAP, returning payment date, amount, currency, and clearing document number.
naftiko: "0.5"
info:
label: "SAP Supplier Payment Status"
description: "Retrieves the payment status of a supplier invoice from SAP, returning payment date, amount, currency, and clearing document number."
tags:
- finance
- sap
- supply-chain
capability:
exposes:
- type: mcp
namespace: supplier-payments
port: 8080
tools:
- name: get-payment-status
description: "Look up payment status for a supplier invoice in SAP."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The SAP supplier invoice number."
call: "sap.get-payment"
with:
invoice_number: "{{invoice_number}}"
outputParameters:
- name: payment_date
type: string
mapping: "$.d.PaymentDate"
- name: amount
type: string
mapping: "$.d.Amount"
- name: currency
type: string
mapping: "$.d.Currency"
- name: clearing_doc
type: string
mapping: "$.d.ClearingDocument"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: invoices
path: "/A_SupplierInvoice('{{invoice_number}}')"
inputParameters:
- name: invoice_number
in: path
operations:
- name: get-payment
method: GET
Orchestrates a seasonal collection launch by activating product listings in SAP, publishing marketing assets via Adobe Campaign, updating store displays in ServiceNow, and notifying teams via Microsoft Teams.
naftiko: "0.5"
info:
label: "Seasonal Collection Launch Orchestrator"
description: "Orchestrates a seasonal collection launch by activating product listings in SAP, publishing marketing assets via Adobe Campaign, updating store displays in ServiceNow, and notifying teams via Microsoft Teams."
tags:
- retail
- supply-chain
- sap
- adobe-campaign
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: collection-launch
port: 8080
tools:
- name: launch-collection
description: "Orchestrate a seasonal collection launch across systems."
inputParameters:
- name: collection_id
in: body
type: string
description: "The collection identifier."
- name: launch_date
in: body
type: string
description: "The planned launch date."
steps:
- name: activate-products
type: call
call: "sap.activate-collection"
with:
collection_id: "{{collection_id}}"
activation_date: "{{launch_date}}"
- name: publish-campaign
type: call
call: "adobe-campaign.trigger-campaign"
with:
campaign_name: "Collection_{{collection_id}}_Launch"
scheduled_date: "{{launch_date}}"
- name: create-display-tasks
type: call
call: "servicenow.create-task"
with:
short_description: "Update store displays for collection {{collection_id}}"
assignment_group: "Visual_Merchandising"
due_date: "{{launch_date}}"
- name: notify-teams
type: call
call: "teams.send-message"
with:
channel: "Collection_Launches"
message: "Collection {{collection_id}} launch initiated. Products activated: {{activate-products.count}}. Campaign: {{publish-campaign.campaign_id}}. Display task: {{create-display-tasks.task_number}}."
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: collections
path: "/A_ProductCollection"
operations:
- name: activate-collection
method: POST
- type: http
namespace: adobe-campaign
baseUri: "https://mc.adobe.io/inditex/campaign"
authentication:
type: bearer
token: "$secrets.adobe_campaign_token"
resources:
- name: campaigns
path: "/campaigns/trigger"
operations:
- name: trigger-campaign
method: POST
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a ServiceNow incident by number, returning state, assigned group, and priority.
naftiko: "0.5"
info:
label: "ServiceNow IT Incident Lookup"
description: "Retrieves a ServiceNow incident by number, returning state, assigned group, and priority."
tags:
- it-operations
- servicenow
capability:
exposes:
- type: mcp
namespace: incident-status
port: 8080
tools:
- name: get-incident
description: "Look up a ServiceNow incident by number."
inputParameters:
- name: incident_number
in: body
type: string
description: "The incident number."
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: assigned_to
type: string
mapping: "$.result.assigned_to.display_value"
- name: priority
type: string
mapping: "$.result.priority"
consumes:
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: sysparm_query
in: query
value: "number={{incident_number}}"
operations:
- name: get-incident
method: GET
Retrieves a fashion design document from SharePoint.
naftiko: "0.5"
info:
label: "SharePoint Design Document Retriever"
description: "Retrieves a fashion design document from SharePoint."
tags:
- design
- documents
- sharepoint
capability:
exposes:
- type: mcp
namespace: design-docs
port: 8080
tools:
- name: get-design-doc
description: "Retrieve a design document from SharePoint."
inputParameters:
- name: site_id
in: body
type: string
description: "SharePoint site ID."
- name: file_path
in: body
type: string
description: "File path."
call: "sharepoint.get-file"
with:
site_id: "{{site_id}}"
file_path: "{{file_path}}"
outputParameters:
- name: download_url
type: string
mapping: "$.@microsoft.graph.downloadUrl"
- name: file_name
type: string
mapping: "$.name"
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
Runs a customer analytics query in Snowflake, returning purchase frequency, average spend, and preferred brand.
naftiko: "0.5"
info:
label: "Snowflake Customer Analytics Query"
description: "Runs a customer analytics query in Snowflake, returning purchase frequency, average spend, and preferred brand."
tags:
- analytics
- data
- snowflake
capability:
exposes:
- type: mcp
namespace: customer-analytics
port: 8080
tools:
- name: query-customer
description: "Run a customer analytics query in Snowflake."
inputParameters:
- name: customer_id
in: body
type: string
description: "The customer ID."
call: "snowflake.execute-query"
with:
statement: "SELECT purchase_count, avg_spend, preferred_brand, preferred_category FROM CUSTOMER_ANALYTICS WHERE customer_id = '{{customer_id}}'"
outputParameters:
- name: purchase_count
type: string
mapping: "$.data[0][0]"
- name: avg_spend
type: string
mapping: "$.data[0][1]"
- name: preferred_brand
type: string
mapping: "$.data[0][2]"
consumes:
- type: http
namespace: snowflake
baseUri: "https://inditex.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
Runs a supply chain analytics query in Snowflake for lead time and supplier performance.
naftiko: "0.5"
info:
label: "Snowflake Supply Chain Analytics"
description: "Runs a supply chain analytics query in Snowflake for lead time and supplier performance."
tags:
- supply-chain
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: supply-analytics
port: 8080
tools:
- name: query-supply-chain
description: "Run supply chain analytics in Snowflake."
inputParameters:
- name: supplier_code
in: body
type: string
description: "Supplier code."
call: "snowflake.execute-query"
with:
statement: "SELECT avg_lead_time, on_time_rate, defect_rate FROM SUPPLIER_METRICS WHERE supplier_code = '{{supplier_code}}'"
outputParameters:
- name: avg_lead_time
type: string
mapping: "$.data[0][0]"
- name: on_time_rate
type: string
mapping: "$.data[0][1]"
consumes:
- type: http
namespace: snowflake
baseUri: "https://inditex.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
Queries SolarWinds for network device health across Inditex store and DC infrastructure, returning node status, CPU load, memory usage, and response time.
naftiko: "0.5"
info:
label: "SolarWinds Network Health Monitor"
description: "Queries SolarWinds for network device health across Inditex store and DC infrastructure, returning node status, CPU load, memory usage, and response time."
tags:
- infrastructure
- solarwinds
- monitoring
capability:
exposes:
- type: mcp
namespace: network-health
port: 8080
tools:
- name: get-node-health
description: "Retrieve network device health from SolarWinds."
inputParameters:
- name: node_id
in: body
type: string
description: "The SolarWinds node ID."
call: "solarwinds.get-node"
with:
node_id: "{{node_id}}"
outputParameters:
- name: status
type: string
mapping: "$.Status"
- name: cpu_load
type: string
mapping: "$.CPULoad"
- name: memory_used
type: string
mapping: "$.PercentMemoryUsed"
- name: response_time
type: string
mapping: "$.ResponseTime"
consumes:
- type: http
namespace: solarwinds
baseUri: "https://solarwinds.inditex.com:17778/SolarWinds/InformationService/v3/Json"
authentication:
type: basic
username: "$secrets.solarwinds_user"
password: "$secrets.solarwinds_password"
resources:
- name: nodes
path: "/Query?query=SELECT+Status,CPULoad,PercentMemoryUsed,ResponseTime+FROM+Orion.Nodes+WHERE+NodeID={{node_id}}"
inputParameters:
- name: node_id
in: query
operations:
- name: get-node
method: GET
Checks real-time inventory levels at a specific Zara store for a given article reference, returning on-hand quantity by size and restock ETA.
naftiko: "0.5"
info:
label: "Store Inventory Stock Level Checker"
description: "Checks real-time inventory levels at a specific Zara store for a given article reference, returning on-hand quantity by size and restock ETA."
tags:
- retail
- supply-chain
- sap
capability:
exposes:
- type: mcp
namespace: store-inventory
port: 8080
tools:
- name: check-store-stock
description: "Check inventory levels at a specific store by article and size."
inputParameters:
- name: store_code
in: body
type: string
description: "The store code."
- name: article_ref
in: body
type: string
description: "The article reference."
call: "sap.get-plant-stock"
with:
plant: "{{store_code}}"
material: "{{article_ref}}"
outputParameters:
- name: stock_by_size
type: string
mapping: "$.d.StockBySizeVariant"
- name: restock_date
type: string
mapping: "$.d.NextDeliveryDate"
- name: total_on_hand
type: string
mapping: "$.d.TotalAvailableStock"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: plant-stock
path: "/A_MatlStkInAcctMod(Material='{{material}}',Plant='{{plant}}')"
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: get-plant-stock
method: GET
Orchestrates new store opening preparation by creating the store record in SAP, setting up the store location in Google Maps, provisioning IT infrastructure via ServiceNow, and scheduling staff training in Pluralsight.
naftiko: "0.5"
info:
label: "Store Opening Preparation Orchestrator"
description: "Orchestrates new store opening preparation by creating the store record in SAP, setting up the store location in Google Maps, provisioning IT infrastructure via ServiceNow, and scheduling staff training in Pluralsight."
tags:
- retail
- operations
- sap
- google-maps
- servicenow
- pluralsight
capability:
exposes:
- type: mcp
namespace: store-opening
port: 8080
tools:
- name: prepare-store-opening
description: "Orchestrate the preparation for a new Inditex store opening."
inputParameters:
- name: store_name
in: body
type: string
description: "The new store name."
- name: address
in: body
type: string
description: "The store address."
- name: brand
in: body
type: string
description: "The Inditex brand (Zara, Pull&Bear, etc.)."
steps:
- name: create-store-record
type: call
call: "sap.create-plant"
with:
plant_name: "{{store_name}}"
address: "{{address}}"
brand: "{{brand}}"
- name: register-location
type: call
call: "google-maps.create-listing"
with:
name: "{{brand}} - {{store_name}}"
address: "{{address}}"
- name: provision-it
type: call
call: "servicenow.create-request"
with:
short_description: "IT provisioning for new store {{store_name}} ({{create-store-record.plant_id}})"
assignment_group: "Store_IT_Provisioning"
priority: "2"
- name: schedule-training
type: call
call: "pluralsight.assign-channel"
with:
channel_name: "{{brand}}_New_Store_Training"
team_id: "{{create-store-record.plant_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_PLANT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: plants
path: "/A_Plant"
operations:
- name: create-plant
method: POST
- type: http
namespace: google-maps
baseUri: "https://mybusiness.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_business_token"
resources:
- name: locations
path: "/accounts/{{account_id}}/locations"
inputParameters:
- name: account_id
in: path
operations:
- name: create-listing
method: POST
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- type: http
namespace: pluralsight
baseUri: "https://api.pluralsight.com/api/v1"
authentication:
type: bearer
token: "$secrets.pluralsight_token"
resources:
- name: channels
path: "/channels/assign"
operations:
- name: assign-channel
method: POST
When a new collection window display is planned, retrieves the visual merchandise guide from SharePoint, assigns tasks in Microsoft Planner, and notifies store visual teams via Teams.
naftiko: "0.5"
info:
label: "Store Window Display Planning"
description: "When a new collection window display is planned, retrieves the visual merchandise guide from SharePoint, assigns tasks in Microsoft Planner, and notifies store visual teams via Teams."
tags:
- retail
- design
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: visual-merchandise
port: 8080
tools:
- name: plan-window-display
description: "Orchestrate window display planning for a new collection."
inputParameters:
- name: collection_name
in: body
type: string
description: "Collection name."
- name: brand
in: body
type: string
description: "Brand code."
- name: store_codes
in: body
type: string
description: "Comma-separated store codes."
steps:
- name: get-guide
type: call
call: "sharepoint.get-file"
with:
site_id: "visual_merchandise"
file_path: "WindowDisplays/{{brand}}/{{collection_name}}_guide.pdf"
- name: notify-stores
type: call
call: "msteams.send-message"
with:
channel_id: "visual_merchandise_{{brand}}"
text: "New window display guide for {{collection_name}} is ready. Download: {{get-guide.download_url}}. Stores: {{store_codes}}"
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a fabric quality issue is reported, creates a SAP quality notification, logs a Confluence investigation page, and alerts the sourcing team via Teams.
naftiko: "0.5"
info:
label: "Supplier Fabric Quality Notification"
description: "When a fabric quality issue is reported, creates a SAP quality notification, logs a Confluence investigation page, and alerts the sourcing team via Teams."
tags:
- supply-chain
- quality
- sap
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-tracking
port: 8080
tools:
- name: report-quality-issue
description: "Report a fabric quality issue and trigger investigation."
inputParameters:
- name: material
in: body
type: string
description: "Fabric material code."
- name: supplier_code
in: body
type: string
description: "SAP supplier code."
- name: defect_description
in: body
type: string
description: "Defect description."
steps:
- name: create-qn
type: call
call: "sap.create-quality-notification"
with:
material: "{{material}}"
supplier: "{{supplier_code}}"
description: "{{defect_description}}"
- name: log-page
type: call
call: "confluence.create-page"
with:
space_key: "QUALITY"
title: "QN {{create-qn.notification_number}} - {{material}}"
body: "Supplier: {{supplier_code}}. Defect: {{defect_description}}"
- name: alert-sourcing
type: call
call: "msteams.send-message"
with:
channel_id: "sourcing_quality"
text: "Quality alert: {{material}} from {{supplier_code}}. QN: {{create-qn.notification_number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: notifications
path: "/A_QualityNotification"
operations:
- name: create-quality-notification
method: POST
- type: http
namespace: confluence
baseUri: "https://inditex.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates new supplier onboarding by creating the vendor record in SAP, uploading compliance documents to Box, scheduling a quality audit in ServiceNow, and notifying procurement via Microsoft Teams.
naftiko: "0.5"
info:
label: "Supplier Onboarding Orchestrator"
description: "Orchestrates new supplier onboarding by creating the vendor record in SAP, uploading compliance documents to Box, scheduling a quality audit in ServiceNow, and notifying procurement via Microsoft Teams."
tags:
- procurement
- supply-chain
- sap
- box
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier-onboarding
port: 8080
tools:
- name: onboard-supplier
description: "Orchestrate the onboarding of a new Inditex supplier."
inputParameters:
- name: supplier_name
in: body
type: string
description: "The supplier company name."
- name: country
in: body
type: string
description: "The supplier country code."
- name: contact_email
in: body
type: string
description: "Primary contact email."
steps:
- name: create-vendor
type: call
call: "sap.create-vendor"
with:
supplier_name: "{{supplier_name}}"
country: "{{country}}"
contact_email: "{{contact_email}}"
- name: upload-documents
type: call
call: "box.create-folder"
with:
folder_name: "Supplier_{{create-vendor.vendor_id}}_{{supplier_name}}"
parent_folder: "Supplier_Onboarding"
- name: schedule-audit
type: call
call: "servicenow.create-task"
with:
short_description: "Quality audit for new supplier {{supplier_name}} ({{create-vendor.vendor_id}})"
assignment_group: "Supplier_Quality"
priority: "2"
- name: notify-procurement
type: call
call: "teams.send-message"
with:
channel: "Procurement_Updates"
message: "New supplier onboarded: {{supplier_name}} ({{create-vendor.vendor_id}}). Documents folder: {{upload-documents.folder_id}}. Audit task: {{schedule-audit.task_number}}."
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: vendors
path: "/A_Supplier"
operations:
- name: create-vendor
method: POST
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: folders
path: "/folders"
operations:
- name: create-folder
method: POST
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates supplier quality audits by retrieving audit schedules from ServiceNow, pulling supplier scores from SAP, generating audit reports in Confluence, and notifying the quality team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Supplier Quality Audit Pipeline"
description: "Orchestrates supplier quality audits by retrieving audit schedules from ServiceNow, pulling supplier scores from SAP, generating audit reports in Confluence, and notifying the quality team via Microsoft Teams."
tags:
- quality
- supply-chain
- servicenow
- sap
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-audit
port: 8080
tools:
- name: run-quality-audit
description: "Execute a supplier quality audit workflow."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The SAP supplier ID."
- name: audit_type
in: body
type: string
description: "The audit type (annual, corrective, follow-up)."
steps:
- name: get-supplier-data
type: call
call: "sap.get-supplier-quality"
with:
supplier_id: "{{supplier_id}}"
- name: create-audit-task
type: call
call: "servicenow.create-task"
with:
short_description: "{{audit_type}} quality audit: Supplier {{supplier_id}} - {{get-supplier-data.supplier_name}}"
assignment_group: "Supplier_Quality"
priority: "2"
- name: create-report-page
type: call
call: "confluence.create-page"
with:
space: "SUPPLIER_QUALITY"
title: "Audit Report - {{supplier_id}} - {{audit_type}}"
body: "Supplier: {{get-supplier-data.supplier_name}}. Current Score: {{get-supplier-data.quality_score}}. Task: {{create-audit-task.task_number}}."
- name: notify-team
type: call
call: "teams.send-message"
with:
channel: "Supplier_Quality"
message: "Quality audit initiated for {{get-supplier-data.supplier_name}}. Type: {{audit_type}}. Report: {{create-report-page.page_url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: suppliers
path: "/A_Supplier('{{supplier_id}}')"
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier-quality
method: GET
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- type: http
namespace: confluence
baseUri: "https://inditex.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls environmental impact data for Inditex stores and logs it to Google Sheets for ESG reporting.
naftiko: "0.5"
info:
label: "Sustainability Metrics Tracker"
description: "Pulls environmental impact data for Inditex stores and logs it to Google Sheets for ESG reporting."
tags:
- sustainability
- retail
- google-sheets
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: track-sustainability
description: "Log sustainability metrics to Google Sheets."
inputParameters:
- name: store_code
in: body
type: string
description: "Store code."
- name: month
in: body
type: string
description: "Month YYYY-MM."
- name: energy_kwh
in: body
type: string
description: "Energy consumption in kWh."
- name: recycled_kg
in: body
type: string
description: "Recycled garment weight in kg."
call: "gsheets.append-row"
with:
spreadsheet_id: "sustainability_metrics"
range: "StoreData!A:D"
values: "{{store_code}},{{month}},{{energy_kwh}},{{recycled_kg}}"
consumes:
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: spreadsheets
path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Queries the Teradata data warehouse for sales trend data by brand and region, returning weekly revenue, units sold, and year-over-year growth percentage.
naftiko: "0.5"
info:
label: "Teradata Sales Trend Query"
description: "Queries the Teradata data warehouse for sales trend data by brand and region, returning weekly revenue, units sold, and year-over-year growth percentage."
tags:
- analytics
- teradata
- retail
capability:
exposes:
- type: mcp
namespace: sales-trends
port: 8080
tools:
- name: get-sales-trend
description: "Query sales trend data from Teradata by brand and region."
inputParameters:
- name: brand
in: body
type: string
description: "The Inditex brand (Zara, Massimo Dutti, etc.)."
- name: region
in: body
type: string
description: "The sales region code."
call: "teradata.query-sales"
with:
brand: "{{brand}}"
region: "{{region}}"
outputParameters:
- name: weekly_revenue
type: string
mapping: "$.results[0].weekly_revenue"
- name: units_sold
type: number
mapping: "$.results[0].units_sold"
- name: yoy_growth
type: string
mapping: "$.results[0].yoy_growth_pct"
consumes:
- type: http
namespace: teradata
baseUri: "https://teradata.inditex.com/api/v1"
authentication:
type: bearer
token: "$secrets.teradata_token"
resources:
- name: queries
path: "/queries/execute"
operations:
- name: query-sales
method: POST
Searches recent Twitter mentions of Inditex brand handles.
naftiko: "0.5"
info:
label: "Twitter Brand Mention Monitor"
description: "Searches recent Twitter mentions of Inditex brand handles."
tags:
- marketing
- social-media
- twitter
capability:
exposes:
- type: mcp
namespace: twitter-monitoring
port: 8080
tools:
- name: get-mentions
description: "Search recent Twitter mentions of Inditex brands."
inputParameters:
- name: query
in: body
type: string
description: "Twitter search query."
call: "twitter.search-tweets"
with:
query: "{{query}}"
outputParameters:
- name: tweets
type: string
mapping: "$.data"
- name: count
type: string
mapping: "$.meta.result_count"
consumes:
- type: http
namespace: twitter
baseUri: "https://api.twitter.com/2"
authentication:
type: bearer
token: "$secrets.twitter_bearer_token"
resources:
- name: tweets
path: "/tweets/search/recent"
inputParameters:
- name: query
in: query
operations:
- name: search-tweets
method: GET
Plans visual merchandising updates by retrieving planogram data from SAP, fetching design assets from Google Drive, creating work orders in ServiceNow, and notifying store managers via Microsoft Teams.
naftiko: "0.5"
info:
label: "Visual Merchandising Planning Pipeline"
description: "Plans visual merchandising updates by retrieving planogram data from SAP, fetching design assets from Google Drive, creating work orders in ServiceNow, and notifying store managers via Microsoft Teams."
tags:
- retail
- visual-merchandising
- sap
- google-drive
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: visual-merchandising
port: 8080
tools:
- name: plan-display-update
description: "Plan a visual merchandising display update across stores."
inputParameters:
- name: planogram_id
in: body
type: string
description: "The planogram identifier."
- name: store_group
in: body
type: string
description: "The store group to apply the update."
steps:
- name: get-planogram
type: call
call: "sap.get-planogram"
with:
planogram_id: "{{planogram_id}}"
- name: get-design-assets
type: call
call: "gdrive.search-files"
with:
query: "Planogram_{{planogram_id}}"
- name: create-work-orders
type: call
call: "servicenow.create-task"
with:
short_description: "Display update: Planogram {{planogram_id}} for {{store_group}}"
description: "Assets: {{get-design-assets.file_count}} files. Layout: {{get-planogram.layout_name}}."
assignment_group: "Visual_Merchandising_{{store_group}}"
- name: notify-managers
type: call
call: "teams.send-message"
with:
channel: "Store_Managers_{{store_group}}"
message: "New display update scheduled. Planogram: {{planogram_id}}. Work order: {{create-work-orders.task_number}}."
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_PLANOGRAM_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: planograms
path: "/A_Planogram('{{planogram_id}}')"
inputParameters:
- name: planogram_id
in: path
operations:
- name: get-planogram
method: GET
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files?q=name contains '{{query}}'"
inputParameters:
- name: query
in: query
operations:
- name: search-files
method: GET
- type: http
namespace: servicenow
baseUri: "https://inditex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a stock transfer order in SAP to move inventory between Inditex distribution centers and notifies logistics via Teams.
naftiko: "0.5"
info:
label: "Warehouse Stock Transfer Creator"
description: "Creates a stock transfer order in SAP to move inventory between Inditex distribution centers and notifies logistics via Teams."
tags:
- supply-chain
- logistics
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: stock-transfers
port: 8080
tools:
- name: create-transfer
description: "Create a stock transfer between distribution centers."
inputParameters:
- name: material
in: body
type: string
description: "Article reference."
- name: source_dc
in: body
type: string
description: "Source distribution center."
- name: target_dc
in: body
type: string
description: "Target distribution center."
- name: quantity
in: body
type: string
description: "Quantity to transfer."
steps:
- name: create-to
type: call
call: "sap.create-stock-transfer"
with:
material: "{{material}}"
source_plant: "{{source_dc}}"
target_plant: "{{target_dc}}"
quantity: "{{quantity}}"
- name: notify-logistics
type: call
call: "msteams.send-message"
with:
channel_id: "logistics_transfers"
text: "Transfer: {{material}} x{{quantity}} from {{source_dc}} to {{target_dc}}. TO#: {{create-to.transfer_order_number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://inditex-s4.sap.com/sap/opu/odata/sap/API_STOCK_TRANSFER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: transfers
path: "/A_StockTransfer"
operations:
- name: create-stock-transfer
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates a weekly sales digest by querying Snowflake for sales data, creating an Excel report via Microsoft Excel Online, uploading to SharePoint, and distributing via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Weekly Sales Digest Orchestrator"
description: "Generates a weekly sales digest by querying Snowflake for sales data, creating an Excel report via Microsoft Excel Online, uploading to SharePoint, and distributing via Microsoft Outlook."
tags:
- analytics
- reporting
- snowflake
- microsoft-excel
- sharepoint
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: sales-digest
port: 8080
tools:
- name: generate-digest
description: "Generate and distribute the weekly sales digest."
inputParameters:
- name: week_number
in: body
type: string
description: "The ISO week number."
- name: brand
in: body
type: string
description: "The Inditex brand."
steps:
- name: query-sales
type: call
call: "snowflake.query-weekly-sales"
with:
week: "{{week_number}}"
brand: "{{brand}}"
- name: create-report
type: call
call: "excel.create-workbook"
with:
name: "Sales_Digest_W{{week_number}}_{{brand}}"
data: "{{query-sales.results}}"
- name: upload-to-sharepoint
type: call
call: "sharepoint.upload-file"
with:
folder: "Weekly_Reports/{{brand}}"
file_name: "{{create-report.workbook_name}}"
- name: send-email
type: call
call: "outlook.send-mail"
with:
to: "{{brand}}_leadership@inditex.com"
subject: "Weekly Sales Digest W{{week_number}} - {{brand}}"
body: "Weekly sales digest attached. Total revenue: {{query-sales.total_revenue}}. YoY growth: {{query-sales.yoy_growth}}."
attachment_url: "{{upload-to-sharepoint.file_url}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://inditex.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: query-weekly-sales
method: POST
- type: http
namespace: excel
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.microsoft_graph_token"
resources:
- name: workbooks
path: "/me/drive/root/children"
operations:
- name: create-workbook
method: POST
- type: http
namespace: sharepoint
baseUri: "https://inditex.sharepoint.com/_api/v2.0"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: files
path: "/drive/root:/{{folder}}/{{file_name}}:/content"
inputParameters:
- name: folder
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.microsoft_graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-mail
method: POST
Sends an order status update to an Inditex customer via WhatsApp when their package ships.
naftiko: "0.5"
info:
label: "WhatsApp Customer Order Update"
description: "Sends an order status update to an Inditex customer via WhatsApp when their package ships."
tags:
- e-commerce
- customer-service
- whatsapp
capability:
exposes:
- type: mcp
namespace: order-notifications
port: 8080
tools:
- name: send-order-update
description: "Send WhatsApp order update to customer."
inputParameters:
- name: customer_phone
in: body
type: string
description: "Customer phone."
- name: order_id
in: body
type: string
description: "Order ID."
- name: tracking_number
in: body
type: string
description: "Tracking number."
call: "whatsapp.send-message"
with:
phone: "{{customer_phone}}"
template: "order_shipped"
parameters: "{{order_id}},{{tracking_number}}"
consumes:
- type: http
namespace: whatsapp
baseUri: "https://graph.facebook.com/v17.0"
authentication:
type: bearer
token: "$secrets.whatsapp_token"
resources:
- name: messages
path: "/{{phone_number_id}}/messages"
inputParameters:
- name: phone_number_id
in: path
operations:
- name: send-message
method: POST
Retrieves employee profile information from Workday by employee ID, returning name, department, job title, and work location across Inditex brands.
naftiko: "0.5"
info:
label: "Workday Employee Directory Lookup"
description: "Retrieves employee profile information from Workday by employee ID, returning name, department, job title, and work location across Inditex brands."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: employee-directory
port: 8080
tools:
- name: get-employee
description: "Look up an Inditex employee profile in Workday."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
call: "workday.get-worker"
with:
employee_id: "{{employee_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.Worker.Worker_Data.Personal_Data.Name_Data.Legal_Name"
- name: department
type: string
mapping: "$.Worker.Worker_Data.Organization_Data.Department"
- name: job_title
type: string
mapping: "$.Worker.Worker_Data.Job_Data.Job_Title"
- name: location
type: string
mapping: "$.Worker.Worker_Data.Job_Data.Location"
consumes:
- type: http
namespace: workday
baseUri: "https://wd3-impl-services1.workday.com/ccx/api/v1/inditex"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{employee_id}}"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-worker
method: GET
Retrieves an Inditex store employee's upcoming shift schedule from Workday.
naftiko: "0.5"
info:
label: "Workday Employee Schedule Retriever"
description: "Retrieves an Inditex store employee's upcoming shift schedule from Workday."
tags:
- hr
- scheduling
- workday
capability:
exposes:
- type: mcp
namespace: shift-scheduling
port: 8080
tools:
- name: get-schedule
description: "Retrieve upcoming shift schedule for a store employee."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-schedule"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: shifts
type: string
mapping: "$.scheduleEntries"
- name: store
type: string
mapping: "$.location"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: schedules
path: "/workers/{{worker_id}}/schedule"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-schedule
method: GET
Retrieves a payroll summary for an Inditex employee from Workday.
naftiko: "0.5"
info:
label: "Workday Payroll Summary Retriever"
description: "Retrieves a payroll summary for an Inditex employee from Workday."
tags:
- hr
- payroll
- workday
capability:
exposes:
- type: mcp
namespace: payroll
port: 8080
tools:
- name: get-payroll
description: "Retrieve the latest payroll summary."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-payslip"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: gross_pay
type: string
mapping: "$.payslip.grossPay"
- name: net_pay
type: string
mapping: "$.payslip.netPay"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: payslips
path: "/workers/{{worker_id}}/paySlips"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-payslip
method: GET
Retrieves YouTube video performance for Inditex brand fashion campaigns.
naftiko: "0.5"
info:
label: "YouTube Fashion Video Tracker"
description: "Retrieves YouTube video performance for Inditex brand fashion campaigns."
tags:
- marketing
- social-media
- youtube
capability:
exposes:
- type: mcp
namespace: youtube-analytics
port: 8080
tools:
- name: get-video-stats
description: "Retrieve YouTube video performance."
inputParameters:
- name: video_id
in: body
type: string
description: "YouTube video ID."
call: "youtube.get-stats"
with:
video_id: "{{video_id}}"
outputParameters:
- name: views
type: string
mapping: "$.items[0].statistics.viewCount"
- name: likes
type: string
mapping: "$.items[0].statistics.likeCount"
consumes:
- type: http
namespace: youtube
baseUri: "https://www.googleapis.com/youtube/v3"
authentication:
type: apiKey
name: "key"
in: query
value: "$secrets.youtube_api_key"
resources:
- name: videos
path: "/videos"
inputParameters:
- name: id
in: query
value: "{{video_id}}"
- name: part
in: query
value: "statistics"
operations:
- name: get-stats
method: GET
Retrieves a customer support ticket from Zendesk by ticket ID, returning the subject, status, priority, and assigned agent for Inditex brand inquiries.
naftiko: "0.5"
info:
label: "Zendesk Customer Inquiry Lookup"
description: "Retrieves a customer support ticket from Zendesk by ticket ID, returning the subject, status, priority, and assigned agent for Inditex brand inquiries."
tags:
- customer-service
- zendesk
capability:
exposes:
- type: mcp
namespace: customer-support
port: 8080
tools:
- name: get-ticket
description: "Look up an Inditex customer support ticket by ID."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The Zendesk ticket ID."
call: "zendesk.get-ticket"
with:
ticket_id: "{{ticket_id}}"
outputParameters:
- name: subject
type: string
mapping: "$.ticket.subject"
- name: status
type: string
mapping: "$.ticket.status"
- name: priority
type: string
mapping: "$.ticket.priority"
- name: assignee
type: string
mapping: "$.ticket.assignee_id"
consumes:
- type: http
namespace: zendesk
baseUri: "https://inditex.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets/{{ticket_id}}"
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
Creates a Zoom meeting for Inditex teams, returning the meeting ID, join URL, and dial-in numbers for cross-regional collaboration.
naftiko: "0.5"
info:
label: "Zoom Meeting Scheduler"
description: "Creates a Zoom meeting for Inditex teams, returning the meeting ID, join URL, and dial-in numbers for cross-regional collaboration."
tags:
- communications
- zoom
capability:
exposes:
- type: mcp
namespace: meetings
port: 8080
tools:
- name: create-meeting
description: "Schedule a Zoom meeting for Inditex teams."
inputParameters:
- name: topic
in: body
type: string
description: "The meeting topic."
- name: duration
in: body
type: number
description: "Meeting duration in minutes."
call: "zoom.create-meeting"
with:
topic: "{{topic}}"
duration: "{{duration}}"
outputParameters:
- name: meeting_id
type: string
mapping: "$.id"
- name: join_url
type: string
mapping: "$.join_url"
- name: dial_in
type: string
mapping: "$.settings.global_dial_in_numbers[0].number"
consumes:
- type: http
namespace: zoom
baseUri: "https://api.zoom.us/v2"
authentication:
type: bearer
token: "$secrets.zoom_token"
resources:
- name: meetings
path: "/users/me/meetings"
operations:
- name: create-meeting
method: POST
Retrieves competitor intelligence data from ZoomInfo for Inditex strategic planning, returning company revenue, employee count, technology stack, and recent news.
naftiko: "0.5"
info:
label: "ZoomInfo Competitor Intelligence"
description: "Retrieves competitor intelligence data from ZoomInfo for Inditex strategic planning, returning company revenue, employee count, technology stack, and recent news."
tags:
- strategy
- zoominfo
- competitive-intelligence
capability:
exposes:
- type: mcp
namespace: competitor-intel
port: 8080
tools:
- name: get-competitor-info
description: "Look up competitor information in ZoomInfo."
inputParameters:
- name: company_name
in: body
type: string
description: "The competitor company name."
call: "zoominfo.search-company"
with:
company_name: "{{company_name}}"
outputParameters:
- name: revenue
type: string
mapping: "$.data[0].revenue"
- name: employee_count
type: number
mapping: "$.data[0].employeeCount"
- name: tech_stack
type: string
mapping: "$.data[0].technographics"
consumes:
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: companies
path: "/search/company"
operations:
- name: search-company
method: POST