Inditex Capabilities

Naftiko 0.5 capability definitions for Inditex - 101 capabilities showing integration workflows and service orchestrations.

Sort
Expand

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