Petco Capabilities

Naftiko 0.5 capability definitions for Petco - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

Coordinates pet adoption events by scheduling partners, promoting on social media, and tracking adoption outcomes.

naftiko: "0.5"
info:
  label: "Adoption Event Coordinator Pipeline"
  description: "Coordinates pet adoption events by scheduling partners, promoting on social media, and tracking adoption outcomes."
  tags:
    - adoption
    - petco
    - salesforce
    - facebook
capability:
  exposes:
    - type: mcp
      namespace: adoption
      port: 8080
      tools:
        - name: adoption-event-coordinator-pipeline
          description: "Coordinates pet adoption events by scheduling partners, promoting on social media, and tracking adoption outcomes."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: create-event
              type: call
              call: "petco.create-event"
              with:
                input: "{{input_id}}"
            - name: promote-event
              type: call
              call: "facebook.create-post"
              with:
                input: "{{input_id}}"
            - name: track-outcomes
              type: call
              call: "salesforce.create-campaign"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_token"
      resources:
        - name: facebook-resource
          path: "/feed"
          operations:
            - name: create-post
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST

Creates an adoption event in the store events system, promotes it via SendGrid to local subscribers, and posts an announcement to the store's Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Adoption Event Coordinator"
  description: "Creates an adoption event in the store events system, promotes it via SendGrid to local subscribers, and posts an announcement to the store's Microsoft Teams channel."
  tags:
    - retail
    - community
    - sendgrid
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: events-ops
      port: 8080
      tools:
        - name: create-adoption-event
          description: "Create and promote a pet adoption event at a store location."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The store identifier."
            - name: event_date
              in: body
              type: string
              description: "The event date."
            - name: partner_org
              in: body
              type: string
              description: "The adoption partner organization name."
          steps:
            - name: create-event
              type: call
              call: "events-api.create-event"
              with:
                store_id: "{{store_id}}"
                date: "{{event_date}}"
                type: "adoption"
                partner: "{{partner_org}}"
            - name: send-promotion
              type: call
              call: "sendgrid.send-batch"
              with:
                template_id: "adoption_event"
                data:
                  store_id: "{{store_id}}"
                  date: "{{event_date}}"
                  partner: "{{partner_org}}"
            - name: notify-store
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "store-{{store_id}}-events"
                text: "Adoption event scheduled for {{event_date}} with {{partner_org}}. Event ID: {{create-event.event_id}}"
  consumes:
    - type: http
      namespace: events-api
      baseUri: "https://api.petco.com/events/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_events_token"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-batch
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Handles failed auto-ship payments by retrying charges, updating customer records in Salesforce, and sending payment update requests.

naftiko: "0.5"
info:
  label: "Auto-Ship Payment Failure Handler"
  description: "Handles failed auto-ship payments by retrying charges, updating customer records in Salesforce, and sending payment update requests."
  tags:
    - billing
    - petco
    - salesforce
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: auto
      port: 8080
      tools:
        - name: auto-ship-payment-failure-handler
          description: "Handles failed auto-ship payments by retrying charges, updating customer records in Salesforce, and sending payment update requests."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-subscription
              type: call
              call: "petco.get-autoship"
              with:
                input: "{{input_id}}"
            - name: update-customer
              type: call
              call: "salesforce.update-contact"
              with:
                input: "{{input_id}}"
            - name: send-notice
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/autoship/{{input_id}}"
          operations:
            - name: get-autoship
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/sobjects/Contact"
          operations:
            - name: update-contact
              method: PATCH
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Processes Buy Online Pick Up In Store orders by reserving inventory at the selected store, notifying store associates via Microsoft Teams, and sending a ready-for-pickup email.

naftiko: "0.5"
info:
  label: "BOPIS Order Processor"
  description: "Processes Buy Online Pick Up In Store orders by reserving inventory at the selected store, notifying store associates via Microsoft Teams, and sending a ready-for-pickup email."
  tags:
    - e-commerce
    - retail
    - microsoft-teams
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: bopis-ops
      port: 8080
      tools:
        - name: process-bopis-order
          description: "Process a BOPIS order with inventory reservation, store notification, and customer alert."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The order identifier."
            - name: store_id
              in: body
              type: string
              description: "The pickup store identifier."
            - name: customer_email
              in: body
              type: string
              description: "The customer email."
          steps:
            - name: reserve-inventory
              type: call
              call: "inventory-api.reserve-items"
              with:
                order_id: "{{order_id}}"
                store_id: "{{store_id}}"
            - name: notify-store
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "store-{{store_id}}-bopis"
                text: "New BOPIS order {{order_id}} ready for picking. Items: {{reserve-inventory.item_count}}"
            - name: notify-customer
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{customer_email}}"
                subject: "Your Petco Order is Ready for Pickup!"
                body: "Order {{order_id}} is being prepared at store {{store_id}}. We'll email again when it's ready."
  consumes:
    - type: http
      namespace: inventory-api
      baseUri: "https://api.petco.com/inventory/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_inventory_token"
      resources:
        - name: reservations
          path: "/stores/{{store_id}}/reserve"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: reserve-items
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Audits companion animal welfare standards across stores, documents compliance, and generates corrective action plans.

naftiko: "0.5"
info:
  label: "Companion Animal Welfare Audit"
  description: "Audits companion animal welfare standards across stores, documents compliance, and generates corrective action plans."
  tags:
    - welfare
    - petco
    - servicenow
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: companion
      port: 8080
      tools:
        - name: companion-animal-welfare-audit
          description: "Audits companion animal welfare standards across stores, documents compliance, and generates corrective action plans."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-audit-data
              type: call
              call: "petco.get-welfare-audit"
              with:
                input: "{{input_id}}"
            - name: log-findings
              type: call
              call: "servicenow.create-record"
              with:
                input: "{{input_id}}"
            - name: publish-report
              type: call
              call: "confluence.create-page"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/stores/{{input_id}}/welfare-audit"
          operations:
            - name: get-welfare-audit
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://petco.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/table/u_welfare_audit"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://petco.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: confluence-resource
          path: "/content"
          operations:
            - name: create-page
              method: POST

Enriches customer profiles by aggregating purchase history, pet data, and loyalty status into a unified view.

naftiko: "0.5"
info:
  label: "Customer 360 Profile Enrichment"
  description: "Enriches customer profiles by aggregating purchase history, pet data, and loyalty status into a unified view."
  tags:
    - customer
    - petco
    - snowflake
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-360-profile-enrichment
          description: "Enriches customer profiles by aggregating purchase history, pet data, and loyalty status into a unified view."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: aggregate-data
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: enrich-crm
              type: call
              call: "salesforce.update-account"
              with:
                input: "{{input_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/sobjects/Account"
          operations:
            - name: update-account
              method: PATCH
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Collects customer feedback from the website and app, runs sentiment analysis in Snowflake, and creates Salesforce cases for negative feedback requiring follow-up.

naftiko: "0.5"
info:
  label: "Customer Feedback Aggregator"
  description: "Collects customer feedback from the website and app, runs sentiment analysis in Snowflake, and creates Salesforce cases for negative feedback requiring follow-up."
  tags:
    - e-commerce
    - member-engagement
    - snowflake
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: feedback-ops
      port: 8080
      tools:
        - name: process-customer-feedback
          description: "Process customer feedback with sentiment analysis and case escalation."
          inputParameters:
            - name: feedback_id
              in: body
              type: string
              description: "The feedback submission identifier."
            - name: customer_email
              in: body
              type: string
              description: "The customer email."
          steps:
            - name: get-feedback
              type: call
              call: "feedback-api.get-submission"
              with:
                feedback_id: "{{feedback_id}}"
            - name: analyze-sentiment
              type: call
              call: "snowflake.execute-query"
              with:
                query: "SELECT analyze_sentiment('{{get-feedback.text}}')"
            - name: escalate-negative
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Negative feedback: {{feedback_id}}"
                description: "Sentiment: {{analyze-sentiment.score}}. Feedback: {{get-feedback.text}}"
                contact_email: "{{customer_email}}"
  consumes:
    - type: http
      namespace: feedback-api
      baseUri: "https://api.petco.com/feedback/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_feedback_token"
      resources:
        - name: submissions
          path: "/submissions/{{feedback_id}}"
          inputParameters:
            - name: feedback_id
              in: path
          operations:
            - name: get-submission
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://petco.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

Calculates customer lifetime value scores, segments by profitability tiers, and updates CRM records for targeted marketing.

naftiko: "0.5"
info:
  label: "Customer Lifetime Value Pipeline"
  description: "Calculates customer lifetime value scores, segments by profitability tiers, and updates CRM records for targeted marketing."
  tags:
    - analytics
    - petco
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: customer-lifetime-value-pipeline
          description: "Calculate CLV and segment customers by profitability."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: calculate-clv
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: update-crm
              type: call
              call: "salesforce.update-contact"
              with:
                input: "{{input_id}}"
            - name: notify-marketing
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/sobjects/Contact"
          operations:
            - name: update-contact
              method: PATCH
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Handles escalated customer service cases by pulling order history, assessing priority, and routing to specialist teams.

naftiko: "0.5"
info:
  label: "Customer Service Escalation Orchestrator"
  description: "Handles escalated customer service cases by pulling order history, assessing priority, and routing to specialist teams."
  tags:
    - support
    - petco
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: customer
      port: 8080
      tools:
        - name: customer-service-escalation-orchestrator
          description: "Handles escalated customer service cases by pulling order history, assessing priority, and routing to specialist teams."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-history
              type: call
              call: "petco.get-customer-history"
              with:
                input: "{{input_id}}"
            - name: assess-priority
              type: call
              call: "salesforce.get-case"
              with:
                input: "{{input_id}}"
            - name: escalate
              type: call
              call: "servicenow.create-incident"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/customers/{{input_id}}/orders"
          operations:
            - name: get-customer-history
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/sobjects/Case"
          operations:
            - name: get-case
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://petco.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Pulls daily POS sales data from all store locations, aggregates by region in Snowflake, and refreshes the revenue dashboard in Tableau for the leadership team.

naftiko: "0.5"
info:
  label: "Daily Sales Revenue Aggregator"
  description: "Pulls daily POS sales data from all store locations, aggregates by region in Snowflake, and refreshes the revenue dashboard in Tableau for the leadership team."
  tags:
    - retail
    - revenue
    - snowflake
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: sales-analytics
      port: 8080
      tools:
        - name: aggregate-daily-sales
          description: "Aggregate daily sales data from all stores and update the revenue dashboard."
          inputParameters:
            - name: date
              in: body
              type: string
              description: "The sales date in YYYY-MM-DD format."
          steps:
            - name: pull-pos-data
              type: call
              call: "pos-api.get-daily-sales"
              with:
                date: "{{date}}"
            - name: aggregate-in-snowflake
              type: call
              call: "snowflake.execute-query"
              with:
                query: "CALL aggregate_daily_sales('{{date}}')"
            - name: refresh-dashboard
              type: call
              call: "tableau.refresh-extract"
              with:
                datasource_id: "daily_sales_ds"
  consumes:
    - type: http
      namespace: pos-api
      baseUri: "https://api.petco.com/pos/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_pos_token"
      resources:
        - name: sales
          path: "/sales/daily/{{date}}"
          inputParameters:
            - name: date
              in: path
          operations:
            - name: get-daily-sales
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://tableau.petco.com/api/3.21"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/sites/petco/datasources/{{datasource_id}}/refresh"
          inputParameters:
            - name: datasource_id
              in: path
          operations:
            - name: refresh-extract
              method: POST

Retrieves Datadog monitor status for Petco's digital infrastructure. Returns monitor name, state, and last triggered time.

naftiko: "0.5"
info:
  label: "Datadog Monitor Status Lookup"
  description: "Retrieves Datadog monitor status for Petco's digital infrastructure. Returns monitor name, state, and last triggered time."
  tags:
    - operations
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: infra-monitoring
      port: 8080
      tools:
        - name: get-monitor-status
          description: "Check Datadog monitor status."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "The Datadog monitor identifier."
          call: "datadog.get-monitor"
          with:
            monitor_id: "{{monitor_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: status
              type: string
              mapping: "$.overall_state"
            - name: last_triggered
              type: string
              mapping: "$.state.last_triggered_ts"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        header: "DD-API-KEY"
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET

Tracks digital marketing campaign ROI by correlating ad spend with conversions and generating performance reports.

naftiko: "0.5"
info:
  label: "Digital Marketing ROI Tracker"
  description: "Tracks digital marketing campaign ROI by correlating ad spend with conversions and generating performance reports."
  tags:
    - marketing
    - petco
    - google-analytics
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: digital
      port: 8080
      tools:
        - name: digital-marketing-roi-tracker
          description: "Tracks digital marketing campaign ROI by correlating ad spend with conversions and generating performance reports."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-ad-data
              type: call
              call: "google-analytics.run-report"
              with:
                input: "{{input_id}}"
            - name: correlate-sales
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: refresh-dashboard
              type: call
              call: "tableau.refresh-workbook"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: google-analytics-resource
          path: "/properties/runReport"
          operations:
            - name: run-report
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://tableau.petco.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: tableau-resource
          path: "/sites/default/workbooks/refresh"
          operations:
            - name: refresh-workbook
              method: POST

When a new online order is placed, validates inventory in the warehouse management system, creates a fulfillment request, sends confirmation via SendGrid, and logs the order in Snowflake.

naftiko: "0.5"
info:
  label: "E-Commerce Order Fulfillment Orchestrator"
  description: "When a new online order is placed, validates inventory in the warehouse management system, creates a fulfillment request, sends confirmation via SendGrid, and logs the order in Snowflake."
  tags:
    - e-commerce
    - supply-chain
    - sendgrid
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: order-fulfillment
      port: 8080
      tools:
        - name: process-online-order
          description: "Orchestrate e-commerce order fulfillment across inventory, shipping, and notification systems."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The e-commerce order identifier."
            - name: customer_email
              in: body
              type: string
              description: "The customer email address."
          steps:
            - name: get-order-details
              type: call
              call: "ecommerce-api.get-order"
              with:
                order_id: "{{order_id}}"
            - name: check-inventory
              type: call
              call: "wms-api.check-availability"
              with:
                items: "{{get-order-details.line_items}}"
            - name: create-fulfillment
              type: call
              call: "wms-api.create-fulfillment"
              with:
                order_id: "{{order_id}}"
                warehouse_id: "{{check-inventory.optimal_warehouse}}"
            - name: send-confirmation
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{customer_email}}"
                subject: "Petco Order Confirmed - {{order_id}}"
                body: "Your order is being prepared. Estimated delivery: {{create-fulfillment.estimated_delivery}}"
            - name: log-order
              type: call
              call: "snowflake.insert-record"
              with:
                table: "ecommerce_orders"
                data:
                  order_id: "{{order_id}}"
                  warehouse: "{{check-inventory.optimal_warehouse}}"
                  total: "{{get-order-details.total}}"
  consumes:
    - type: http
      namespace: ecommerce-api
      baseUri: "https://api.petco.com/ecommerce/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_ecommerce_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: wms-api
      baseUri: "https://api.petco.com/warehouse/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_wms_token"
      resources:
        - name: inventory
          path: "/inventory/check"
          operations:
            - name: check-availability
              method: POST
        - name: fulfillment
          path: "/fulfillment"
          operations:
            - name: create-fulfillment
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: insert-record
              method: POST

Analyzes return patterns for potential fraud, flags suspicious returns, and creates investigation cases.

naftiko: "0.5"
info:
  label: "E-Commerce Return Fraud Detector"
  description: "Analyzes return patterns for potential fraud, flags suspicious returns, and creates investigation cases."
  tags:
    - fraud
    - petco
    - snowflake
    - jira
capability:
  exposes:
    - type: mcp
      namespace: e
      port: 8080
      tools:
        - name: e-commerce-return-fraud-detector
          description: "Analyzes return patterns for potential fraud, flags suspicious returns, and creates investigation cases."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: analyze-returns
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: flag-fraud
              type: call
              call: "jira.create-issue"
              with:
                input: "{{input_id}}"
            - name: alert-team
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://petco.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Optimizes e-commerce search results by analyzing search patterns, adjusting relevance algorithms, and testing improvements.

naftiko: "0.5"
info:
  label: "E-Commerce Search Optimization Pipeline"
  description: "Optimizes e-commerce search results by analyzing search patterns, adjusting relevance algorithms, and testing improvements."
  tags:
    - search
    - petco
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: search
      port: 8080
      tools:
        - name: e-commerce-search-optimization-pipeline
          description: "Optimize e-commerce search relevance based on user behavior."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: analyze-patterns
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: update-config
              type: call
              call: "petco.update-search-config"
              with:
                input: "{{input_id}}"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/search/config"
          operations:
            - name: update-search-config
              method: PATCH
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves a customer segment from Salesforce Marketing Cloud, sends personalized email campaigns via SendGrid, and logs delivery metrics.

naftiko: "0.5"
info:
  label: "Email Campaign Dispatcher"
  description: "Retrieves a customer segment from Salesforce Marketing Cloud, sends personalized email campaigns via SendGrid, and logs delivery metrics."
  tags:
    - marketing
    - email
    - salesforce-marketing-cloud
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: email-campaigns
      port: 8080
      tools:
        - name: dispatch-email-campaign
          description: "Dispatch a personalized email campaign to a customer segment."
          inputParameters:
            - name: segment_id
              in: body
              type: string
              description: "The SFMC audience segment identifier."
            - name: template_id
              in: body
              type: string
              description: "The SendGrid email template identifier."
          steps:
            - name: get-segment
              type: call
              call: "sfmc.get-data-extension"
              with:
                data_extension: "{{segment_id}}"
            - name: send-emails
              type: call
              call: "sendgrid.send-batch"
              with:
                recipients: "{{get-segment.rows}}"
                template_id: "{{template_id}}"
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://petco.rest.marketingcloudapis.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: data-extensions
          path: "/customobjectdata/key/{{data_extension}}/rowset"
          inputParameters:
            - name: data_extension
              in: path
          operations:
            - name: get-data-extension
              method: GET
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-batch
              method: POST

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Orchestrate new hire onboarding across Workday, ServiceNow, SharePoint, and Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "The start date."
            - name: department
              in: body
              type: string
              description: "The department."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding"
                folder_path: "NewHires/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "new-hires"
                text: "Welcome to Petco, {{get-employee.first_name}}! Onboarding ticket: {{open-ticket.number}}"
  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://petco.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: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Optimizes employee schedules by analyzing foot traffic patterns, staff availability, and labor budget constraints.

naftiko: "0.5"
info:
  label: "Employee Scheduling Optimizer"
  description: "Optimizes employee schedules by analyzing foot traffic patterns, staff availability, and labor budget constraints."
  tags:
    - hr
    - petco
    - workday
    - slack
capability:
  exposes:
    - type: mcp
      namespace: employee
      port: 8080
      tools:
        - name: employee-scheduling-optimizer
          description: "Optimizes employee schedules by analyzing foot traffic patterns, staff availability, and labor budget constraints."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-traffic-data
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: optimize-schedule
              type: call
              call: "workday.create-schedule"
              with:
                input: "{{input_id}}"
            - name: notify-managers
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/petco/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/scheduling"
          operations:
            - name: create-schedule
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Reconciles end-of-day store transactions against POS data, identifies discrepancies, and generates closing reports.

naftiko: "0.5"
info:
  label: "End of Day Store Reconciliation"
  description: "Reconciles end-of-day store transactions against POS data, identifies discrepancies, and generates closing reports."
  tags:
    - finance
    - petco
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: end
      port: 8080
      tools:
        - name: end-of-day-store-reconciliation
          description: "Reconciles end-of-day store transactions against POS data, identifies discrepancies, and generates closing reports."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-pos-data
              type: call
              call: "petco.get-daily-transactions"
              with:
                input: "{{input_id}}"
            - name: reconcile
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: report-discrepancies
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/stores/{{input_id}}/transactions"
          operations:
            - name: get-daily-transactions
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves available animals for adoption at a Petco location.

naftiko: "0.5"
info:
  label: "Get Adoption Animal Listing"
  description: "Retrieves available animals for adoption at a Petco location."
  tags:
    - adoption
    - petco
    - animals
capability:
  exposes:
    - type: mcp
      namespace: adoption
      port: 8080
      tools:
        - name: get-adoption-animal-listing
          description: "Retrieves available animals for adoption at a Petco location."
          inputParameters:
            - name: location_id
              in: body
              type: string
              description: "The location id."
          call: "petco.get-listings"
          with:
            location_id: "{{location_id}}"
          outputParameters:
            - name: animals
              type: array
              mapping: "$.animals"
            - name: count
              type: integer
              mapping: "$.total"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/adoption/{{location_id}}/animals"
          inputParameters:
            - name: location_id
              in: path
          operations:
            - name: get-listings
              method: GET

Retrieves aquarium products from the Petco specialty catalog.

naftiko: "0.5"
info:
  label: "Get Aquarium Product Catalog"
  description: "Retrieves aquarium products from the Petco specialty catalog."
  tags:
    - aquatics
    - petco
    - catalog
capability:
  exposes:
    - type: mcp
      namespace: aquatics
      port: 8080
      tools:
        - name: get-aquarium-product-catalog
          description: "Browse aquarium products in the Petco catalog."
          inputParameters:
            - name: category
              in: body
              type: string
              description: "The aquarium category."
          call: "petco.get-aquarium-products"
          with:
            category: "{{category}}"
          outputParameters:
            - name: products
              type: array
              mapping: "$.products"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: aquarium
          path: "/products/aquarium"
          inputParameters:
            - name: category
              in: query
          operations:
            - name: get-aquarium-products
              method: GET

Retrieves details for a Petco auto-ship recurring order subscription.

naftiko: "0.5"
info:
  label: "Get Auto-Ship Subscription Details"
  description: "Retrieves details for a Petco auto-ship recurring order subscription."
  tags:
    - subscriptions
    - petco
    - auto-ship
capability:
  exposes:
    - type: mcp
      namespace: subscriptions
      port: 8080
      tools:
        - name: get-auto-ship-subscription-details
          description: "Retrieves details for a Petco auto-ship recurring order subscription."
          inputParameters:
            - name: subscription_id
              in: body
              type: string
              description: "The subscription id."
          call: "petco.get-autoship"
          with:
            subscription_id: "{{subscription_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: next_delivery
              type: string
              mapping: "$.next_delivery_date"
            - name: items
              type: array
              mapping: "$.items"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/autoship/{{subscription_id}}"
          inputParameters:
            - name: subscription_id
              in: path
          operations:
            - name: get-autoship
              method: GET

Checks the status of a curbside pickup order at a Petco store.

naftiko: "0.5"
info:
  label: "Get Curbside Pickup Status"
  description: "Checks the status of a curbside pickup order at a Petco store."
  tags:
    - orders
    - petco
    - curbside
capability:
  exposes:
    - type: mcp
      namespace: orders
      port: 8080
      tools:
        - name: get-curbside-pickup-status
          description: "Checks the status of a curbside pickup order at a Petco store."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The order id."
          call: "petco.get-pickup"
          with:
            order_id: "{{order_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: ready_time
              type: string
              mapping: "$.ready_at"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/orders/{{order_id}}/pickup"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-pickup
              method: GET

Retrieves pet profile details including breed, age, and health records.

naftiko: "0.5"
info:
  label: "Get Customer Pet Profile"
  description: "Retrieves pet profile details including breed, age, and health records."
  tags:
    - pets
    - petco
    - profiles
capability:
  exposes:
    - type: mcp
      namespace: pets
      port: 8080
      tools:
        - name: get-customer-pet-profile
          description: "Retrieves pet profile details including breed, age, and health records."
          inputParameters:
            - name: pet_id
              in: body
              type: string
              description: "The pet id."
          call: "petco.get-pet"
          with:
            pet_id: "{{pet_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: breed
              type: string
              mapping: "$.breed"
            - name: age
              type: integer
              mapping: "$.age"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/pets/{{pet_id}}"
          inputParameters:
            - name: pet_id
              in: path
          operations:
            - name: get-pet
              method: GET

Retrieves shipping and tracking information for a Petco online order.

naftiko: "0.5"
info:
  label: "Get Delivery Tracking Info"
  description: "Retrieves shipping and tracking information for a Petco online order."
  tags:
    - shipping
    - petco
    - tracking
capability:
  exposes:
    - type: mcp
      namespace: shipping
      port: 8080
      tools:
        - name: get-delivery-tracking-info
          description: "Retrieves shipping and tracking information for a Petco online order."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The order id."
          call: "petco.get-tracking"
          with:
            order_id: "{{order_id}}"
          outputParameters:
            - name: carrier
              type: string
              mapping: "$.carrier"
            - name: tracking_number
              type: string
              mapping: "$.tracking_number"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/orders/{{order_id}}/tracking"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-tracking
              method: GET

Retrieves nearby dog park locations from Petco community services.

naftiko: "0.5"
info:
  label: "Get Dog Park Location"
  description: "Retrieves nearby dog park locations from Petco community services."
  tags:
    - community
    - petco
    - locations
capability:
  exposes:
    - type: mcp
      namespace: community
      port: 8080
      tools:
        - name: get-dog-park-location
          description: "Find nearby dog parks."
          inputParameters:
            - name: zip_code
              in: body
              type: string
              description: "The zip code."
          call: "petco.get-dog-parks"
          with:
            zip_code: "{{zip_code}}"
          outputParameters:
            - name: parks
              type: array
              mapping: "$.parks"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: parks
          path: "/community/dog-parks"
          inputParameters:
            - name: zip_code
              in: query
          operations:
            - name: get-dog-parks
              method: GET

Checks the balance of a Petco gift card.

naftiko: "0.5"
info:
  label: "Get Gift Card Balance"
  description: "Checks the balance of a Petco gift card."
  tags:
    - payments
    - petco
    - gift-cards
capability:
  exposes:
    - type: mcp
      namespace: payments
      port: 8080
      tools:
        - name: get-gift-card-balance
          description: "Checks the balance of a Petco gift card."
          inputParameters:
            - name: card_number
              in: body
              type: string
              description: "The card number."
          call: "petco.get-balance"
          with:
            card_number: "{{card_number}}"
          outputParameters:
            - name: balance
              type: string
              mapping: "$.balance"
            - name: currency
              type: string
              mapping: "$.currency"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/gift-cards/{{card_number}}/balance"
          inputParameters:
            - name: card_number
              in: path
          operations:
            - name: get-balance
              method: GET

Retrieves grooming service pricing by service type and pet size.

naftiko: "0.5"
info:
  label: "Get Grooming Service Pricing"
  description: "Retrieves grooming service pricing by service type and pet size."
  tags:
    - grooming
    - petco
    - pricing
capability:
  exposes:
    - type: mcp
      namespace: grooming
      port: 8080
      tools:
        - name: get-grooming-service-pricing
          description: "Retrieves grooming service pricing by service type and pet size."
          inputParameters:
            - name: service_type
              in: body
              type: string
              description: "The service type."
          call: "petco.get-pricing"
          with:
            service_type: "{{service_type}}"
          outputParameters:
            - name: price
              type: string
              mapping: "$.price"
            - name: duration_minutes
              type: integer
              mapping: "$.duration_minutes"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/grooming/pricing/{{service_type}}"
          inputParameters:
            - name: service_type
              in: path
          operations:
            - name: get-pricing
              method: GET

Retrieves Vital Care loyalty program membership status and points balance.

naftiko: "0.5"
info:
  label: "Get Loyalty Member Status"
  description: "Retrieves Vital Care loyalty program membership status and points balance."
  tags:
    - loyalty
    - petco
    - vital-care
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: get-loyalty-member-status
          description: "Retrieves Vital Care loyalty program membership status and points balance."
          inputParameters:
            - name: member_id
              in: body
              type: string
              description: "The member id."
          call: "petco.get-member"
          with:
            member_id: "{{member_id}}"
          outputParameters:
            - name: tier
              type: string
              mapping: "$.tier"
            - name: points_balance
              type: integer
              mapping: "$.points"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/loyalty/{{member_id}}"
          inputParameters:
            - name: member_id
              in: path
          operations:
            - name: get-member
              method: GET

Retrieves personalized pet food recommendations based on pet profile.

naftiko: "0.5"
info:
  label: "Get Nutrition Recommendation"
  description: "Retrieves personalized pet food recommendations based on pet profile."
  tags:
    - nutrition
    - petco
    - recommendations
capability:
  exposes:
    - type: mcp
      namespace: nutrition
      port: 8080
      tools:
        - name: get-nutrition-recommendation
          description: "Retrieves personalized pet food recommendations based on pet profile."
          inputParameters:
            - name: pet_id
              in: body
              type: string
              description: "The pet id."
          call: "petco.get-recommendations"
          with:
            pet_id: "{{pet_id}}"
          outputParameters:
            - name: recommendations
              type: array
              mapping: "$.products"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/nutrition/recommendations/{{pet_id}}"
          inputParameters:
            - name: pet_id
              in: path
          operations:
            - name: get-recommendations
              method: GET

Checks whether a pet food product is subject to any active recalls.

naftiko: "0.5"
info:
  label: "Get Pet Food Recall Status"
  description: "Checks whether a pet food product is subject to any active recalls."
  tags:
    - safety
    - petco
    - recalls
capability:
  exposes:
    - type: mcp
      namespace: safety
      port: 8080
      tools:
        - name: get-pet-food-recall-status
          description: "Check recall status for a pet food product."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "The product ID."
          call: "petco.check-recall"
          with:
            product_id: "{{product_id}}"
          outputParameters:
            - name: recalled
              type: boolean
              mapping: "$.recalled"
            - name: recall_date
              type: string
              mapping: "$.recall_date"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: recalls
          path: "/products/{{product_id}}/recall-status"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: check-recall
              method: GET

Retrieves a pet insurance quote based on pet profile and coverage options.

naftiko: "0.5"
info:
  label: "Get Pet Insurance Quote"
  description: "Retrieves a pet insurance quote based on pet profile and coverage options."
  tags:
    - insurance
    - petco
    - quotes
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: get-pet-insurance-quote
          description: "Retrieves a pet insurance quote based on pet profile and coverage options."
          inputParameters:
            - name: pet_id
              in: body
              type: string
              description: "The pet id."
          call: "petco.get-quote"
          with:
            pet_id: "{{pet_id}}"
          outputParameters:
            - name: monthly_premium
              type: string
              mapping: "$.monthly_premium"
            - name: coverage_type
              type: string
              mapping: "$.coverage"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/insurance/quotes/{{pet_id}}"
          inputParameters:
            - name: pet_id
              in: path
          operations:
            - name: get-quote
              method: GET

Retrieves pet microchip registration details from Petco systems.

naftiko: "0.5"
info:
  label: "Get Pet Microchip Registry"
  description: "Retrieves pet microchip registration details from Petco systems."
  tags:
    - pets
    - petco
    - microchip
capability:
  exposes:
    - type: mcp
      namespace: pets
      port: 8080
      tools:
        - name: get-pet-microchip-registry
          description: "Look up pet microchip registration details."
          inputParameters:
            - name: chip_id
              in: body
              type: string
              description: "The microchip ID."
          call: "petco.get-microchip"
          with:
            chip_id: "{{chip_id}}"
          outputParameters:
            - name: pet_name
              type: string
              mapping: "$.pet_name"
            - name: owner_name
              type: string
              mapping: "$.owner_name"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: microchips
          path: "/microchips/{{chip_id}}"
          inputParameters:
            - name: chip_id
              in: path
          operations:
            - name: get-microchip
              method: GET

Retrieves the status of a pet prescription order.

naftiko: "0.5"
info:
  label: "Get Pet Prescription Status"
  description: "Retrieves the status of a pet prescription order."
  tags:
    - pharmacy
    - petco
    - prescriptions
capability:
  exposes:
    - type: mcp
      namespace: pharmacy
      port: 8080
      tools:
        - name: get-pet-prescription-status
          description: "Retrieves the status of a pet prescription order."
          inputParameters:
            - name: prescription_id
              in: body
              type: string
              description: "The prescription id."
          call: "petco.get-prescription"
          with:
            prescription_id: "{{prescription_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: medication
              type: string
              mapping: "$.medication_name"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/prescriptions/{{prescription_id}}"
          inputParameters:
            - name: prescription_id
              in: path
          operations:
            - name: get-prescription
              method: GET

Retrieves customer reviews and ratings for a Petco product.

naftiko: "0.5"
info:
  label: "Get Product Reviews"
  description: "Retrieves customer reviews and ratings for a Petco product."
  tags:
    - reviews
    - petco
    - products
capability:
  exposes:
    - type: mcp
      namespace: reviews
      port: 8080
      tools:
        - name: get-product-reviews
          description: "Retrieves customer reviews and ratings for a Petco product."
          inputParameters:
            - name: product_id
              in: body
              type: string
              description: "The product id."
          call: "petco.get-reviews"
          with:
            product_id: "{{product_id}}"
          outputParameters:
            - name: average_rating
              type: number
              mapping: "$.average_rating"
            - name: reviews
              type: array
              mapping: "$.reviews"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/products/{{product_id}}/reviews"
          inputParameters:
            - name: product_id
              in: path
          operations:
            - name: get-reviews
              method: GET

Retrieves details for an active Petco promotion or coupon.

naftiko: "0.5"
info:
  label: "Get Promotion Details"
  description: "Retrieves details for an active Petco promotion or coupon."
  tags:
    - marketing
    - petco
    - promotions
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: get-promotion-details
          description: "Retrieves details for an active Petco promotion or coupon."
          inputParameters:
            - name: promo_code
              in: body
              type: string
              description: "The promo code."
          call: "petco.get-promotion"
          with:
            promo_code: "{{promo_code}}"
          outputParameters:
            - name: discount_type
              type: string
              mapping: "$.type"
            - name: discount_value
              type: string
              mapping: "$.value"
            - name: valid_until
              type: string
              mapping: "$.expiration"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/promotions/{{promo_code}}"
          inputParameters:
            - name: promo_code
              in: path
          operations:
            - name: get-promotion
              method: GET

Retrieves reptile care guides and husbandry information from Petco content.

naftiko: "0.5"
info:
  label: "Get Reptile Care Guide"
  description: "Retrieves reptile care guides and husbandry information from Petco content."
  tags:
    - content
    - petco
    - reptiles
capability:
  exposes:
    - type: mcp
      namespace: content
      port: 8080
      tools:
        - name: get-reptile-care-guide
          description: "Look up reptile care guides."
          inputParameters:
            - name: species
              in: body
              type: string
              description: "The reptile species."
          call: "petco.get-care-guide"
          with:
            species: "{{species}}"
          outputParameters:
            - name: guide
              type: object
              mapping: "$.care_guide"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: guides
          path: "/content/care-guides/reptiles"
          inputParameters:
            - name: species
              in: query
          operations:
            - name: get-care-guide
              method: GET

Checks same-day delivery availability for a given zip code.

naftiko: "0.5"
info:
  label: "Get Same Day Delivery Availability"
  description: "Checks same-day delivery availability for a given zip code."
  tags:
    - delivery
    - petco
    - logistics
capability:
  exposes:
    - type: mcp
      namespace: delivery
      port: 8080
      tools:
        - name: get-same-day-delivery-availability
          description: "Checks same-day delivery availability for a given zip code."
          inputParameters:
            - name: zip_code
              in: body
              type: string
              description: "The zip code."
          call: "petco.check-availability"
          with:
            zip_code: "{{zip_code}}"
          outputParameters:
            - name: available
              type: boolean
              mapping: "$.available"
            - name: cutoff_time
              type: string
              mapping: "$.cutoff_time"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/delivery/availability/{{zip_code}}"
          inputParameters:
            - name: zip_code
              in: path
          operations:
            - name: check-availability
              method: GET

Retrieves upcoming events and activities at a Petco store.

naftiko: "0.5"
info:
  label: "Get Store Event Calendar"
  description: "Retrieves upcoming events and activities at a Petco store."
  tags:
    - events
    - petco
    - stores
capability:
  exposes:
    - type: mcp
      namespace: events
      port: 8080
      tools:
        - name: get-store-event-calendar
          description: "Retrieves upcoming events and activities at a Petco store."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The store id."
          call: "petco.get-events"
          with:
            store_id: "{{store_id}}"
          outputParameters:
            - name: events
              type: array
              mapping: "$.events"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/stores/{{store_id}}/events"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: get-events
              method: GET

Retrieves operating hours for a Petco store location.

naftiko: "0.5"
info:
  label: "Get Store Hours"
  description: "Retrieves operating hours for a Petco store location."
  tags:
    - stores
    - petco
    - hours
capability:
  exposes:
    - type: mcp
      namespace: stores
      port: 8080
      tools:
        - name: get-store-hours
          description: "Look up operating hours for a Petco store."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The store ID."
          call: "petco.get-store-hours"
          with:
            store_id: "{{store_id}}"
          outputParameters:
            - name: hours
              type: object
              mapping: "$.operating_hours"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: stores
          path: "/stores/{{store_id}}/hours"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: get-store-hours
              method: GET

Lists available services at a Petco store including grooming, vet, and training.

naftiko: "0.5"
info:
  label: "Get Store Services List"
  description: "Lists available services at a Petco store including grooming, vet, and training."
  tags:
    - stores
    - petco
    - services
capability:
  exposes:
    - type: mcp
      namespace: stores
      port: 8080
      tools:
        - name: get-store-services-list
          description: "Lists available services at a Petco store including grooming, vet, and training."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The store id."
          call: "petco.get-services"
          with:
            store_id: "{{store_id}}"
          outputParameters:
            - name: services
              type: array
              mapping: "$.services"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/stores/{{store_id}}/services"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: get-services
              method: GET

Retrieves the pet training class schedule for a Petco store.

naftiko: "0.5"
info:
  label: "Get Training Class Schedule"
  description: "Retrieves the pet training class schedule for a Petco store."
  tags:
    - training
    - petco
    - classes
capability:
  exposes:
    - type: mcp
      namespace: training
      port: 8080
      tools:
        - name: get-training-class-schedule
          description: "Retrieves the pet training class schedule for a Petco store."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The store id."
          call: "petco.get-schedule"
          with:
            store_id: "{{store_id}}"
          outputParameters:
            - name: classes
              type: array
              mapping: "$.classes"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/stores/{{store_id}}/training"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: get-schedule
              method: GET

Retrieves vaccination records for a pet from Petco Vet clinics.

naftiko: "0.5"
info:
  label: "Get Vaccination Record"
  description: "Retrieves vaccination records for a pet from Petco Vet clinics."
  tags:
    - vet
    - petco
    - vaccinations
capability:
  exposes:
    - type: mcp
      namespace: vet
      port: 8080
      tools:
        - name: get-vaccination-record
          description: "Retrieves vaccination records for a pet from Petco Vet clinics."
          inputParameters:
            - name: pet_id
              in: body
              type: string
              description: "The pet id."
          call: "petco.get-vaccinations"
          with:
            pet_id: "{{pet_id}}"
          outputParameters:
            - name: vaccinations
              type: array
              mapping: "$.vaccinations"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/vet/pets/{{pet_id}}/vaccinations"
          inputParameters:
            - name: pet_id
              in: path
          operations:
            - name: get-vaccinations
              method: GET

Retrieves a vendor product catalog listing from the Petco supply chain system.

naftiko: "0.5"
info:
  label: "Get Vendor Product Catalog"
  description: "Retrieves a vendor product catalog listing from the Petco supply chain system."
  tags:
    - supply-chain
    - petco
    - vendors
capability:
  exposes:
    - type: mcp
      namespace: supply-chain
      port: 8080
      tools:
        - name: get-vendor-product-catalog
          description: "Retrieves a vendor product catalog listing from the Petco supply chain system."
          inputParameters:
            - name: vendor_id
              in: body
              type: string
              description: "The vendor id."
          call: "petco.get-vendor-catalog"
          with:
            vendor_id: "{{vendor_id}}"
          outputParameters:
            - name: products
              type: array
              mapping: "$.products"
            - name: total
              type: integer
              mapping: "$.total"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/vendors/{{vendor_id}}/products"
          inputParameters:
            - name: vendor_id
              in: path
          operations:
            - name: get-vendor-catalog
              method: GET

Checks veterinary appointment availability at a Petco Vetco clinic.

naftiko: "0.5"
info:
  label: "Get Vet Appointment Availability"
  description: "Checks veterinary appointment availability at a Petco Vetco clinic."
  tags:
    - vet
    - petco
    - appointments
capability:
  exposes:
    - type: mcp
      namespace: vet
      port: 8080
      tools:
        - name: get-vet-appointment-availability
          description: "Checks veterinary appointment availability at a Petco Vetco clinic."
          inputParameters:
            - name: clinic_id
              in: body
              type: string
              description: "The clinic id."
          call: "petco.get-availability"
          with:
            clinic_id: "{{clinic_id}}"
          outputParameters:
            - name: slots
              type: array
              mapping: "$.available_slots"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: resource
          path: "/vet/clinics/{{clinic_id}}/availability"
          inputParameters:
            - name: clinic_id
              in: path
          operations:
            - name: get-availability
              method: GET

Retrieves Petco.com traffic metrics from Google Analytics. Returns sessions, bounce rate, and e-commerce conversion rate.

naftiko: "0.5"
info:
  label: "Google Analytics Web Traffic Report"
  description: "Retrieves Petco.com traffic metrics from Google Analytics. Returns sessions, bounce rate, and e-commerce conversion rate."
  tags:
    - marketing
    - analytics
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: web-analytics
      port: 8080
      tools:
        - name: get-web-traffic
          description: "Get Petco.com web traffic metrics from Google Analytics."
          inputParameters:
            - name: start_date
              in: body
              type: string
              description: "Report start date."
            - name: end_date
              in: body
              type: string
              description: "Report end date."
          call: "google-analytics.run-report"
          with:
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: sessions
              type: integer
              mapping: "$.rows[0].metricValues[0].value"
            - name: bounce_rate
              type: number
              mapping: "$.rows[0].metricValues[1].value"
            - name: conversion_rate
              type: number
              mapping: "$.rows[0].metricValues[2].value"
  consumes:
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/petco/runReport"
          operations:
            - name: run-report
              method: POST

Retrieves grooming appointment details from the scheduling system by appointment ID. Returns service type, pet info, groomer, and time.

naftiko: "0.5"
info:
  label: "Grooming Appointment Lookup"
  description: "Retrieves grooming appointment details from the scheduling system by appointment ID. Returns service type, pet info, groomer, and time."
  tags:
    - retail
    - grooming
capability:
  exposes:
    - type: mcp
      namespace: grooming-ops
      port: 8080
      tools:
        - name: get-grooming-appointment
          description: "Look up a grooming appointment by ID."
          inputParameters:
            - name: appointment_id
              in: body
              type: string
              description: "The grooming appointment identifier."
          call: "grooming-api.get-appointment"
          with:
            appointment_id: "{{appointment_id}}"
          outputParameters:
            - name: pet_name
              type: string
              mapping: "$.data.pet_name"
            - name: service_type
              type: string
              mapping: "$.data.service_type"
            - name: groomer
              type: string
              mapping: "$.data.groomer_name"
            - name: appointment_time
              type: string
              mapping: "$.data.scheduled_time"
  consumes:
    - type: http
      namespace: grooming-api
      baseUri: "https://api.petco.com/grooming/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_grooming_token"
      resources:
        - name: appointments
          path: "/appointments/{{appointment_id}}"
          inputParameters:
            - name: appointment_id
              in: path
          operations:
            - name: get-appointment
              method: GET

Sends grooming appointment reminders to customers, checks pet health requirements, and updates the appointment system.

naftiko: "0.5"
info:
  label: "Grooming Appointment Reminder Workflow"
  description: "Sends grooming appointment reminders to customers, checks pet health requirements, and updates the appointment system."
  tags:
    - grooming
    - petco
    - twilio
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: grooming
      port: 8080
      tools:
        - name: grooming-appointment-reminder-workflow
          description: "Sends grooming appointment reminders to customers, checks pet health requirements, and updates the appointment system."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-appointment
              type: call
              call: "petco.get-appointment"
              with:
                input: "{{input_id}}"
            - name: send-reminder-sms
              type: call
              call: "twilio.send-message"
              with:
                input: "{{input_id}}"
            - name: send-reminder-email
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/grooming/appointments/{{input_id}}"
          operations:
            - name: get-appointment
              method: GET
    - type: http
      namespace: twilio
      baseUri: "https://api.twilio.com/2010-04-01"
      authentication:
        type: bearer
        token: "$secrets.twilio_auth_token"
      resources:
        - name: twilio-resource
          path: "/Messages.json"
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

When inventory falls below minimum threshold, creates a replenishment purchase order in SAP, notifies the supply chain team via Microsoft Teams, and logs the event in Snowflake.

naftiko: "0.5"
info:
  label: "Inventory Replenishment Orchestrator"
  description: "When inventory falls below minimum threshold, creates a replenishment purchase order in SAP, notifies the supply chain team via Microsoft Teams, and logs the event in Snowflake."
  tags:
    - supply-chain
    - retail
    - sap
    - microsoft-teams
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: replenishment-ops
      port: 8080
      tools:
        - name: trigger-replenishment
          description: "Trigger inventory replenishment when stock falls below threshold."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The store identifier."
            - name: sku
              in: body
              type: string
              description: "The product SKU."
            - name: reorder_quantity
              in: body
              type: integer
              description: "The quantity to reorder."
          steps:
            - name: create-po
              type: call
              call: "sap.create-purchase-order"
              with:
                store_id: "{{store_id}}"
                sku: "{{sku}}"
                quantity: "{{reorder_quantity}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "supply-chain-ops"
                text: "Auto-replenishment PO {{create-po.po_number}} created for SKU {{sku}} at store {{store_id}}. Qty: {{reorder_quantity}}"
            - name: log-event
              type: call
              call: "snowflake.insert-record"
              with:
                table: "replenishment_events"
                data:
                  store_id: "{{store_id}}"
                  sku: "{{sku}}"
                  po_number: "{{create-po.po_number}}"
                  quantity: "{{reorder_quantity}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://petco.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"
          operations:
            - name: create-purchase-order
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: insert-record
              method: POST

Detects inventory shrinkage by comparing expected vs actual counts, flagging anomalies, and creating investigation cases.

naftiko: "0.5"
info:
  label: "Inventory Shrinkage Detection Pipeline"
  description: "Detects inventory shrinkage by comparing expected vs actual counts, flagging anomalies, and creating investigation cases."
  tags:
    - loss-prevention
    - petco
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: loss
      port: 8080
      tools:
        - name: inventory-shrinkage-detection-pipeline
          description: "Detect inventory shrinkage and flag anomalies for investigation."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: analyze-shrinkage
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: create-case
              type: call
              call: "servicenow.create-incident"
              with:
                input: "{{input_id}}"
            - name: notify-lp
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://petco.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Pulls sprint progress from Jira and posts a summary to a Microsoft Teams channel for the technology team.

naftiko: "0.5"
info:
  label: "Jira Sprint Status Reporter"
  description: "Pulls sprint progress from Jira and posts a summary to a Microsoft Teams channel for the technology team."
  tags:
    - development
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: dev-reporting
      port: 8080
      tools:
        - name: report-sprint-status
          description: "Generate and post a Jira sprint status report to Teams."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board identifier."
          steps:
            - name: get-sprint
              type: call
              call: "jira.get-active-sprint"
              with:
                board_id: "{{board_id}}"
            - name: get-issues
              type: call
              call: "jira.get-sprint-issues"
              with:
                sprint_id: "{{get-sprint.id}}"
            - name: post-report
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "engineering"
                text: "Sprint {{get-sprint.name}}: {{get-issues.done_count}}/{{get-issues.total_count}} done. {{get-issues.in_progress_count}} in progress."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://petco.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint?state=active"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-active-sprint
              method: GET
        - name: sprint-issues
          path: "/sprint/{{sprint_id}}/issue"
          inputParameters:
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint-issues
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

After a purchase, calculates Pals Rewards points, updates the member profile in Salesforce, and sends a points summary via SendGrid.

naftiko: "0.5"
info:
  label: "Loyalty Program Points Calculator"
  description: "After a purchase, calculates Pals Rewards points, updates the member profile in Salesforce, and sends a points summary via SendGrid."
  tags:
    - retail
    - member-engagement
    - salesforce
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: loyalty-ops
      port: 8080
      tools:
        - name: process-loyalty-points
          description: "Calculate and award Pals Rewards points after a purchase."
          inputParameters:
            - name: member_id
              in: body
              type: string
              description: "The Pals Rewards member identifier."
            - name: transaction_id
              in: body
              type: string
              description: "The purchase transaction identifier."
            - name: amount
              in: body
              type: number
              description: "The purchase amount."
          steps:
            - name: calculate-points
              type: call
              call: "loyalty-api.calculate-points"
              with:
                member_id: "{{member_id}}"
                amount: "{{amount}}"
            - name: update-salesforce
              type: call
              call: "salesforce.update-contact"
              with:
                member_id: "{{member_id}}"
                points_balance: "{{calculate-points.new_balance}}"
                tier: "{{calculate-points.tier}}"
            - name: send-summary
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{calculate-points.email}}"
                subject: "You Earned Pals Rewards Points!"
                body: "You earned {{calculate-points.points_earned}} points! Balance: {{calculate-points.new_balance}}. Tier: {{calculate-points.tier}}"
  consumes:
    - type: http
      namespace: loyalty-api
      baseUri: "https://api.petco.com/loyalty/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_loyalty_token"
      resources:
        - name: points
          path: "/members/{{member_id}}/calculate"
          inputParameters:
            - name: member_id
              in: path
          operations:
            - name: calculate-points
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact"
          operations:
            - name: update-contact
              method: PATCH
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Evaluates loyalty members for tier upgrades or downgrades based on spending patterns and engagement metrics.

naftiko: "0.5"
info:
  label: "Loyalty Program Tier Evaluation"
  description: "Evaluates loyalty members for tier upgrades or downgrades based on spending patterns and engagement metrics."
  tags:
    - loyalty
    - petco
    - salesforce
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: loyalty-program-tier-evaluation
          description: "Evaluates loyalty members for tier upgrades or downgrades based on spending patterns and engagement metrics."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: evaluate-spending
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: update-tier
              type: call
              call: "petco.update-member"
              with:
                input: "{{input_id}}"
            - name: notify-member
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/loyalty/members/{{input_id}}"
          operations:
            - name: update-member
              method: PATCH
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Pulls campaign metrics from Google Ads and Google Analytics, correlates with e-commerce conversions in Snowflake, and refreshes the marketing dashboard in Tableau.

naftiko: "0.5"
info:
  label: "Marketing Campaign Performance Reporter"
  description: "Pulls campaign metrics from Google Ads and Google Analytics, correlates with e-commerce conversions in Snowflake, and refreshes the marketing dashboard in Tableau."
  tags:
    - marketing
    - e-commerce
    - google-ads
    - google-analytics
    - snowflake
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: marketing-analytics
      port: 8080
      tools:
        - name: report-campaign-performance
          description: "Generate a marketing campaign report correlating ad spend with e-commerce conversions."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The campaign identifier."
            - name: date_start
              in: body
              type: string
              description: "Report start date."
            - name: date_end
              in: body
              type: string
              description: "Report end date."
          steps:
            - name: get-ads-metrics
              type: call
              call: "google-ads.get-campaign-stats"
              with:
                campaign_id: "{{campaign_id}}"
                start_date: "{{date_start}}"
                end_date: "{{date_end}}"
            - name: get-ga-metrics
              type: call
              call: "google-analytics.get-report"
              with:
                campaign_id: "{{campaign_id}}"
                start_date: "{{date_start}}"
                end_date: "{{date_end}}"
            - name: correlate-conversions
              type: call
              call: "snowflake.execute-query"
              with:
                query: "CALL correlate_campaign_conversions('{{campaign_id}}', '{{date_start}}', '{{date_end}}')"
            - name: refresh-dashboard
              type: call
              call: "tableau.refresh-extract"
              with:
                datasource_id: "marketing_performance_ds"
  consumes:
    - type: http
      namespace: google-ads
      baseUri: "https://googleads.googleapis.com/v14"
      authentication:
        type: bearer
        token: "$secrets.google_ads_token"
      resources:
        - name: campaigns
          path: "/customers/petco/campaigns/{{campaign_id}}/stats"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-stats
              method: GET
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/petco/runReport"
          operations:
            - name: get-report
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://tableau.petco.com/api/3.21"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/sites/petco/datasources/{{datasource_id}}/refresh"
          inputParameters:
            - name: datasource_id
              in: path
          operations:
            - name: refresh-extract
              method: POST

Sends a message to a Microsoft Teams channel. Reusable notification primitive for Petco workflows.

naftiko: "0.5"
info:
  label: "Microsoft Teams Notifier"
  description: "Sends a message to a Microsoft Teams channel. Reusable notification primitive for Petco workflows."
  tags:
    - communications
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: teams-notifications
      port: 8080
      tools:
        - name: send-teams-notification
          description: "Send a message to a Microsoft Teams channel."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "The Teams channel identifier."
            - name: message
              in: body
              type: string
              description: "The message text."
          call: "msteams.send-message"
          with:
            channel_id: "{{channel_id}}"
            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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Analyzes mobile app engagement metrics, segments users by behavior, and triggers targeted push notification campaigns.

naftiko: "0.5"
info:
  label: "Mobile App Engagement Pipeline"
  description: "Analyzes mobile app engagement metrics, segments users by behavior, and triggers targeted push notification campaigns."
  tags:
    - mobile
    - petco
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: mobile
      port: 8080
      tools:
        - name: mobile-app-engagement-pipeline
          description: "Analyze mobile engagement and trigger targeted campaigns."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: analyze-engagement
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: segment-users
              type: call
              call: "petco.create-segment"
              with:
                input: "{{input_id}}"
            - name: notify-marketing
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/marketing/segments"
          operations:
            - name: create-segment
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Coordinates new product launches by setting up catalog entries, pricing, marketing materials, and store planograms.

naftiko: "0.5"
info:
  label: "New Product Launch Pipeline"
  description: "Coordinates new product launches by setting up catalog entries, pricing, marketing materials, and store planograms."
  tags:
    - products
    - petco
    - sap
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: new
      port: 8080
      tools:
        - name: new-product-launch-pipeline
          description: "Coordinates new product launches by setting up catalog entries, pricing, marketing materials, and store planograms."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: create-product
              type: call
              call: "petco.create-product"
              with:
                input: "{{input_id}}"
            - name: setup-pricing
              type: call
              call: "sap.create-material"
              with:
                input: "{{input_id}}"
            - name: setup-campaign
              type: call
              call: "salesforce.create-campaign"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/products"
          operations:
            - name: create-product
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://petco-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/materials"
          operations:
            - name: create-material
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST

Routes online orders to the optimal fulfillment location based on inventory, proximity, and delivery method.

naftiko: "0.5"
info:
  label: "Omnichannel Order Routing Pipeline"
  description: "Routes online orders to the optimal fulfillment location based on inventory, proximity, and delivery method."
  tags:
    - fulfillment
    - petco
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: omnichannel
      port: 8080
      tools:
        - name: omnichannel-order-routing-pipeline
          description: "Routes online orders to the optimal fulfillment location based on inventory, proximity, and delivery method."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: check-inventory
              type: call
              call: "petco.check-inventory"
              with:
                input: "{{input_id}}"
            - name: determine-routing
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: assign-fulfillment
              type: call
              call: "petco.assign-fulfillment"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/inventory/availability"
          operations:
            - name: check-inventory
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Checks a pet's profile for known food allergies and cross-references against recent auto-ship orders, alerting the customer if a potential allergen is detected in a pending shipment.

naftiko: "0.5"
info:
  label: "Pet Allergy Alert Pipeline"
  description: "Checks a pet's profile for known food allergies and cross-references against recent auto-ship orders, alerting the customer if a potential allergen is detected in a pending shipment."
  tags:
    - pet-health
    - auto-ship
    - customer-safety
capability:
  exposes:
    - type: mcp
      namespace: pet-allergy-alert
      port: 8080
      tools:
        - name: check-pet-allergy-conflict
          description: "Cross-reference a pet's known allergies with items in their upcoming auto-ship order."
          inputParameters:
            - name: pet_id
              in: body
              type: string
              description: "Unique pet profile identifier."
            - name: customer_id
              in: body
              type: string
              description: "Customer account identifier."
          call: "petco-api.get-pet-allergies"
          with:
            pet_id: "{{pet_id}}"
            customer_id: "{{customer_id}}"
          outputParameters:
            - name: allergy_conflicts
              type: array
              mapping: "$.conflicts"
            - name: alert_sent
              type: boolean
              mapping: "$.alertDispatched"
  consumes:
    - type: http
      namespace: petco-api
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: pet-allergies
          path: "/pets/{{pet_id}}/allergy-check?customerId={{customer_id}}"
          inputParameters:
            - name: pet_id
              in: path
            - name: customer_id
              in: query
          operations:
            - name: get-pet-allergies
              method: GET

Identifies pets with upcoming birthdays, generates personalized offers, and sends celebration emails to pet parents.

naftiko: "0.5"
info:
  label: "Pet Birthday Celebration Pipeline"
  description: "Identifies pets with upcoming birthdays, generates personalized offers, and sends celebration emails to pet parents."
  tags:
    - celebrations
    - petco
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: celebrations
      port: 8080
      tools:
        - name: pet-birthday-celebration-pipeline
          description: "Send pet birthday celebration offers and emails."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: find-birthdays
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: generate-offers
              type: call
              call: "petco.create-offer"
              with:
                input: "{{input_id}}"
            - name: send-email
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/offers"
          operations:
            - name: create-offer
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Monitors product expiration dates across stores, generates markdown recommendations, and alerts store managers.

naftiko: "0.5"
info:
  label: "Pet Food Expiration Monitoring"
  description: "Monitors product expiration dates across stores, generates markdown recommendations, and alerts store managers."
  tags:
    - quality
    - petco
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: pet
      port: 8080
      tools:
        - name: pet-food-expiration-monitoring
          description: "Monitors product expiration dates across stores, generates markdown recommendations, and alerts store managers."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: check-expirations
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: update-pricing
              type: call
              call: "petco.update-price"
              with:
                input: "{{input_id}}"
            - name: alert-managers
              type: call
              call: "teams.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/products/pricing"
          operations:
            - name: update-price
              method: PATCH
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Sends prescription refill reminders to pet parents based on medication schedules and remaining doses.

naftiko: "0.5"
info:
  label: "Pet Pharmacy Refill Reminder Pipeline"
  description: "Sends prescription refill reminders to pet parents based on medication schedules and remaining doses."
  tags:
    - pharmacy
    - petco
    - twilio
capability:
  exposes:
    - type: mcp
      namespace: pharmacy
      port: 8080
      tools:
        - name: pet-pharmacy-refill-reminder-pipeline
          description: "Send prescription refill reminders based on medication schedules."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: check-refills
              type: call
              call: "petco.check-refill-schedule"
              with:
                input: "{{input_id}}"
            - name: send-sms
              type: call
              call: "twilio.send-message"
              with:
                input: "{{input_id}}"
            - name: log-reminder
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/pharmacy/refill-schedule"
          operations:
            - name: check-refill-schedule
              method: GET
    - type: http
      namespace: twilio
      baseUri: "https://api.twilio.com/2010-04-01"
      authentication:
        type: basic
        username: "$secrets.twilio_account_sid"
        password: "$secrets.twilio_auth_token"
      resources:
        - name: twilio-resource
          path: "/Messages.json"
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Processes veterinary prescription orders by verifying the prescription with the vet system, checking pharmacy inventory, and dispatching fulfillment with customer notification.

naftiko: "0.5"
info:
  label: "Pet Prescription Fulfillment"
  description: "Processes veterinary prescription orders by verifying the prescription with the vet system, checking pharmacy inventory, and dispatching fulfillment with customer notification."
  tags:
    - vet-services
    - e-commerce
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: rx-fulfillment
      port: 8080
      tools:
        - name: fulfill-prescription
          description: "Process and fulfill a pet prescription order."
          inputParameters:
            - name: prescription_id
              in: body
              type: string
              description: "The prescription identifier."
            - name: customer_email
              in: body
              type: string
              description: "The customer email address."
          steps:
            - name: verify-prescription
              type: call
              call: "vet-api.verify-prescription"
              with:
                prescription_id: "{{prescription_id}}"
            - name: check-pharmacy-stock
              type: call
              call: "pharmacy-api.check-stock"
              with:
                medication: "{{verify-prescription.medication}}"
                dosage: "{{verify-prescription.dosage}}"
            - name: create-fulfillment
              type: call
              call: "pharmacy-api.create-order"
              with:
                prescription_id: "{{prescription_id}}"
                pharmacy_location: "{{check-pharmacy-stock.location}}"
            - name: notify-customer
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{customer_email}}"
                subject: "Petco Prescription Order Confirmed"
                body: "Prescription for {{verify-prescription.pet_name}} is being fulfilled. Medication: {{verify-prescription.medication}}."
  consumes:
    - type: http
      namespace: vet-api
      baseUri: "https://api.petco.com/vetco/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_vet_token"
      resources:
        - name: prescriptions
          path: "/prescriptions/{{prescription_id}}/verify"
          inputParameters:
            - name: prescription_id
              in: path
          operations:
            - name: verify-prescription
              method: GET
    - type: http
      namespace: pharmacy-api
      baseUri: "https://api.petco.com/pharmacy/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_pharmacy_token"
      resources:
        - name: stock
          path: "/stock/check"
          operations:
            - name: check-stock
              method: GET
        - name: orders
          path: "/orders"
          operations:
            - name: create-order
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Processes pet training course completions, generates graduation certificates, and sends congratulatory communications.

naftiko: "0.5"
info:
  label: "Pet Training Graduation Pipeline"
  description: "Processes pet training course completions, generates graduation certificates, and sends congratulatory communications."
  tags:
    - training
    - petco
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: training
      port: 8080
      tools:
        - name: pet-training-graduation-pipeline
          description: "Process training graduations and send certificates."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-completion
              type: call
              call: "petco.get-training-completion"
              with:
                input: "{{input_id}}"
            - name: generate-certificate
              type: call
              call: "petco.create-certificate"
              with:
                input: "{{input_id}}"
            - name: send-congratulations
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/training/completions"
          operations:
            - name: get-training-completion
              method: GET
            - name: create-certificate
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Checks pet vaccination schedules, generates wellness reminders, and sends personalized notifications via email and SMS.

naftiko: "0.5"
info:
  label: "Pet Wellness Reminder Pipeline"
  description: "Checks pet vaccination schedules, generates wellness reminders, and sends personalized notifications via email and SMS."
  tags:
    - wellness
    - petco
    - sendgrid
    - twilio
capability:
  exposes:
    - type: mcp
      namespace: pet
      port: 8080
      tools:
        - name: pet-wellness-reminder-pipeline
          description: "Checks pet vaccination schedules, generates wellness reminders, and sends personalized notifications via email and SMS."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: check-schedule
              type: call
              call: "petco.get-pet-schedule"
              with:
                input: "{{input_id}}"
            - name: send-email
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
            - name: send-sms
              type: call
              call: "twilio.send-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/vet/pets/{{input_id}}/schedule"
          operations:
            - name: get-pet-schedule
              method: GET
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: twilio
      baseUri: "https://api.twilio.com/2010-04-01"
      authentication:
        type: bearer
        token: "$secrets.twilio_auth_token"
      resources:
        - name: twilio-resource
          path: "/Messages.json"
          operations:
            - name: send-message
              method: POST

Verifies competitor pricing claims for price match requests, validates eligibility, and processes adjustments.

naftiko: "0.5"
info:
  label: "Price Matching Verification Pipeline"
  description: "Verifies competitor pricing claims for price match requests, validates eligibility, and processes adjustments."
  tags:
    - pricing
    - petco
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: price
      port: 8080
      tools:
        - name: price-matching-verification-pipeline
          description: "Verifies competitor pricing claims for price match requests, validates eligibility, and processes adjustments."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: verify-price
              type: call
              call: "petco.check-competitor-price"
              with:
                input: "{{input_id}}"
            - name: process-adjustment
              type: call
              call: "salesforce.create-case"
              with:
                input: "{{input_id}}"
            - name: notify-cs
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/pricing/price-match"
          operations:
            - name: check-competitor-price
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves product details from the Petco product catalog by SKU. Returns product name, price, category, and availability status.

naftiko: "0.5"
info:
  label: "Product Catalog Lookup"
  description: "Retrieves product details from the Petco product catalog by SKU. Returns product name, price, category, and availability status."
  tags:
    - retail
    - e-commerce
    - catalog
capability:
  exposes:
    - type: mcp
      namespace: product-catalog
      port: 8080
      tools:
        - name: get-product-details
          description: "Look up product details by SKU from the Petco catalog."
          inputParameters:
            - name: sku
              in: body
              type: string
              description: "The product SKU."
          call: "catalog-api.get-product"
          with:
            sku: "{{sku}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.data.name"
            - name: price
              type: number
              mapping: "$.data.price"
            - name: category
              type: string
              mapping: "$.data.category"
            - name: availability
              type: string
              mapping: "$.data.availability_status"
  consumes:
    - type: http
      namespace: catalog-api
      baseUri: "https://api.petco.com/catalog/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_catalog_token"
      resources:
        - name: products
          path: "/products/{{sku}}"
          inputParameters:
            - name: sku
              in: path
          operations:
            - name: get-product
              method: GET

When prices are updated in SAP, syncs the new prices to the e-commerce platform and POS system, then logs changes in Snowflake for pricing analytics.

naftiko: "0.5"
info:
  label: "Product Price Update Sync"
  description: "When prices are updated in SAP, syncs the new prices to the e-commerce platform and POS system, then logs changes in Snowflake for pricing analytics."
  tags:
    - retail
    - e-commerce
    - sap
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: pricing-ops
      port: 8080
      tools:
        - name: sync-price-update
          description: "Sync product price changes from SAP to e-commerce and POS systems."
          inputParameters:
            - name: sku
              in: body
              type: string
              description: "The product SKU."
            - name: new_price
              in: body
              type: number
              description: "The new price."
          steps:
            - name: update-ecommerce
              type: call
              call: "ecommerce-api.update-price"
              with:
                sku: "{{sku}}"
                price: "{{new_price}}"
            - name: update-pos
              type: call
              call: "pos-api.update-price"
              with:
                sku: "{{sku}}"
                price: "{{new_price}}"
            - name: log-change
              type: call
              call: "snowflake.insert-record"
              with:
                table: "price_changes"
                data:
                  sku: "{{sku}}"
                  new_price: "{{new_price}}"
  consumes:
    - type: http
      namespace: ecommerce-api
      baseUri: "https://api.petco.com/ecommerce/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_ecommerce_token"
      resources:
        - name: products
          path: "/products/{{sku}}/price"
          inputParameters:
            - name: sku
              in: path
          operations:
            - name: update-price
              method: PUT
    - type: http
      namespace: pos-api
      baseUri: "https://api.petco.com/pos/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_pos_token"
      resources:
        - name: products
          path: "/products/{{sku}}/price"
          inputParameters:
            - name: sku
              in: path
          operations:
            - name: update-price
              method: PUT
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: insert-record
              method: POST

Identifies customers who purchased recalled products, generates refund credits, and sends recall notifications.

naftiko: "0.5"
info:
  label: "Product Recall Customer Notification"
  description: "Identifies customers who purchased recalled products, generates refund credits, and sends recall notifications."
  tags:
    - safety
    - petco
    - salesforce
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: product
      port: 8080
      tools:
        - name: product-recall-customer-notification
          description: "Identifies customers who purchased recalled products, generates refund credits, and sends recall notifications."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: find-affected
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: update-crm
              type: call
              call: "salesforce.update-contact"
              with:
                input: "{{input_id}}"
            - name: send-notification
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/sobjects/Contact"
          operations:
            - name: update-contact
              method: PATCH
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Processes a product return, updates inventory in the warehouse system, refunds via the payment gateway, and sends confirmation to the customer via SendGrid.

naftiko: "0.5"
info:
  label: "Return and Exchange Processor"
  description: "Processes a product return, updates inventory in the warehouse system, refunds via the payment gateway, and sends confirmation to the customer via SendGrid."
  tags:
    - e-commerce
    - retail
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: returns-ops
      port: 8080
      tools:
        - name: process-return
          description: "Process a product return with inventory update, refund, and customer notification."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The original order identifier."
            - name: sku
              in: body
              type: string
              description: "The product SKU being returned."
            - name: reason
              in: body
              type: string
              description: "Return reason."
            - name: customer_email
              in: body
              type: string
              description: "The customer email."
          steps:
            - name: create-return
              type: call
              call: "ecommerce-api.create-return"
              with:
                order_id: "{{order_id}}"
                sku: "{{sku}}"
                reason: "{{reason}}"
            - name: update-inventory
              type: call
              call: "wms-api.receive-return"
              with:
                sku: "{{sku}}"
                quantity: 1
            - name: process-refund
              type: call
              call: "payment-api.issue-refund"
              with:
                order_id: "{{order_id}}"
                amount: "{{create-return.refund_amount}}"
            - name: notify-customer
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{customer_email}}"
                subject: "Petco Return Confirmed"
                body: "Your return for order {{order_id}} has been processed. Refund of ${{create-return.refund_amount}} will be issued."
  consumes:
    - type: http
      namespace: ecommerce-api
      baseUri: "https://api.petco.com/ecommerce/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_ecommerce_token"
      resources:
        - name: returns
          path: "/returns"
          operations:
            - name: create-return
              method: POST
    - type: http
      namespace: wms-api
      baseUri: "https://api.petco.com/warehouse/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_wms_token"
      resources:
        - name: returns
          path: "/returns/receive"
          operations:
            - name: receive-return
              method: POST
    - type: http
      namespace: payment-api
      baseUri: "https://api.petco.com/payments/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_payment_token"
      resources:
        - name: refunds
          path: "/refunds"
          operations:
            - name: issue-refund
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Looks up a Salesforce customer contact by email. Returns contact details, loyalty tier, and recent case history.

naftiko: "0.5"
info:
  label: "Salesforce Customer Lookup"
  description: "Looks up a Salesforce customer contact by email. Returns contact details, loyalty tier, and recent case history."
  tags:
    - retail
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: customer-ops
      port: 8080
      tools:
        - name: get-customer-by-email
          description: "Look up a customer by email in Salesforce."
          inputParameters:
            - name: email
              in: body
              type: string
              description: "The customer email address."
          call: "salesforce.query-contact"
          with:
            email: "{{email}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.records[0].Name"
            - name: loyalty_tier
              type: string
              mapping: "$.records[0].Loyalty_Tier__c"
            - name: account_id
              type: string
              mapping: "$.records[0].AccountId"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/query?q=SELECT+Name,Loyalty_Tier__c,AccountId+FROM+Contact+WHERE+Email='{{email}}'"
          inputParameters:
            - name: email
              in: query
          operations:
            - name: query-contact
              method: GET

Plans seasonal merchandise by analyzing sales trends, generating demand forecasts, and creating purchase orders.

naftiko: "0.5"
info:
  label: "Seasonal Merchandise Planning Pipeline"
  description: "Plans seasonal merchandise by analyzing sales trends, generating demand forecasts, and creating purchase orders."
  tags:
    - merchandising
    - petco
    - snowflake
    - sap
capability:
  exposes:
    - type: mcp
      namespace: seasonal
      port: 8080
      tools:
        - name: seasonal-merchandise-planning-pipeline
          description: "Plans seasonal merchandise by analyzing sales trends, generating demand forecasts, and creating purchase orders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: analyze-trends
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: create-po
              type: call
              call: "sap.create-purchase-order"
              with:
                input: "{{input_id}}"
            - name: notify-buyers
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://petco-erp.s4hana.ondemand.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: sap-resource
          path: "/purchase-orders"
          operations:
            - name: create-purchase-order
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Generates seasonal pet safety alerts based on weather conditions and holiday hazards, distributing to customers via email and app notifications.

naftiko: "0.5"
info:
  label: "Seasonal Pet Safety Alert Pipeline"
  description: "Generates seasonal pet safety alerts based on weather conditions and holiday hazards, distributing to customers via email and app notifications."
  tags:
    - safety
    - petco
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: safety
      port: 8080
      tools:
        - name: seasonal-pet-safety-alert-pipeline
          description: "Generate and distribute seasonal pet safety alerts."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-alerts
              type: call
              call: "petco.get-safety-alerts"
              with:
                input: "{{input_id}}"
            - name: segment-customers
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: send-alerts
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/safety/alerts"
          operations:
            - name: get-safety-alerts
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Looks up a ServiceNow incident by number. Returns state, priority, assigned group, and description.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Looks up a ServiceNow incident by number. Returns state, priority, assigned group, and description."
  tags:
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: itsm-ops
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: priority
              type: string
              mapping: "$.result.priority"
            - name: assigned_group
              type: string
              mapping: "$.result.assignment_group.display_value"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://petco.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: query
          operations:
            - name: get-incident
              method: GET

Executes a SQL query against Petco's Snowflake data warehouse. Returns result rows and metadata.

naftiko: "0.5"
info:
  label: "Snowflake Query Runner"
  description: "Executes a SQL query against Petco's Snowflake data warehouse. Returns result rows and metadata."
  tags:
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: data-warehouse
      port: 8080
      tools:
        - name: run-snowflake-query
          description: "Execute a SQL query against the Petco Snowflake warehouse."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The SQL query to execute."
          call: "snowflake.execute-query"
          with:
            statement: "{{query}}"
          outputParameters:
            - name: rows
              type: array
              mapping: "$.data"
            - name: row_count
              type: integer
              mapping: "$.resultSetMetaData.numRows"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Pulls brand engagement from Instagram and Facebook, stores metrics in Snowflake, and refreshes the social media dashboard in Tableau.

naftiko: "0.5"
info:
  label: "Social Media Engagement Monitor"
  description: "Pulls brand engagement from Instagram and Facebook, stores metrics in Snowflake, and refreshes the social media dashboard in Tableau."
  tags:
    - marketing
    - social-media
    - instagram
    - facebook
    - snowflake
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: social-analytics
      port: 8080
      tools:
        - name: monitor-social-engagement
          description: "Monitor social media engagement across platforms and update dashboards."
          inputParameters:
            - name: date
              in: body
              type: string
              description: "The reporting date."
          steps:
            - name: get-meta-metrics
              type: call
              call: "meta-api.get-page-insights"
              with:
                date: "{{date}}"
            - name: store-metrics
              type: call
              call: "snowflake.insert-record"
              with:
                table: "social_engagement"
                data:
                  date: "{{date}}"
                  ig_engagement: "{{get-meta-metrics.instagram_engagement}}"
                  fb_engagement: "{{get-meta-metrics.facebook_engagement}}"
            - name: refresh-dashboard
              type: call
              call: "tableau.refresh-extract"
              with:
                datasource_id: "social_engagement_ds"
  consumes:
    - type: http
      namespace: meta-api
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_access_token"
      resources:
        - name: insights
          path: "/petco/insights"
          operations:
            - name: get-page-insights
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: insert-record
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://tableau.petco.com/api/3.21"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/sites/petco/datasources/{{datasource_id}}/refresh"
          inputParameters:
            - name: datasource_id
              in: path
          operations:
            - name: refresh-extract
              method: POST

Evaluates store associate performance using sales metrics, customer feedback, and training completion data.

naftiko: "0.5"
info:
  label: "Store Associate Performance Pipeline"
  description: "Evaluates store associate performance using sales metrics, customer feedback, and training completion data."
  tags:
    - hr
    - petco
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: store-associate-performance-pipeline
          description: "Evaluate store associate performance across multiple metrics."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-metrics
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: update-hr
              type: call
              call: "workday.update-worker"
              with:
                input: "{{input_id}}"
            - name: notify-manager
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/petco/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/workers"
          operations:
            - name: update-worker
              method: PATCH
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Analyzes store foot traffic patterns, correlates with sales data, and generates staffing recommendations.

naftiko: "0.5"
info:
  label: "Store Foot Traffic Analysis Pipeline"
  description: "Analyzes store foot traffic patterns, correlates with sales data, and generates staffing recommendations."
  tags:
    - operations
    - petco
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: store-foot-traffic-analysis-pipeline
          description: "Analyze foot traffic and generate staffing recommendations."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-traffic
              type: call
              call: "google-analytics.run-report"
              with:
                input: "{{input_id}}"
            - name: correlate-sales
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: notify-ops
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: ga-resource
          path: "/properties/runReport"
          operations:
            - name: run-report
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries real-time inventory levels for a product at a specific store location. Returns on-hand quantity, reserved quantity, and reorder status.

naftiko: "0.5"
info:
  label: "Store Inventory Level Lookup"
  description: "Queries real-time inventory levels for a product at a specific store location. Returns on-hand quantity, reserved quantity, and reorder status."
  tags:
    - retail
    - inventory
capability:
  exposes:
    - type: mcp
      namespace: store-inventory
      port: 8080
      tools:
        - name: get-store-inventory
          description: "Look up inventory levels for a product at a store location."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The store location identifier."
            - name: sku
              in: body
              type: string
              description: "The product SKU."
          call: "inventory-api.get-level"
          with:
            store_id: "{{store_id}}"
            sku: "{{sku}}"
          outputParameters:
            - name: on_hand
              type: integer
              mapping: "$.data.on_hand_qty"
            - name: reserved
              type: integer
              mapping: "$.data.reserved_qty"
            - name: reorder_status
              type: string
              mapping: "$.data.reorder_status"
  consumes:
    - type: http
      namespace: inventory-api
      baseUri: "https://api.petco.com/inventory/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_inventory_token"
      resources:
        - name: levels
          path: "/stores/{{store_id}}/products/{{sku}}"
          inputParameters:
            - name: store_id
              in: path
            - name: sku
              in: path
          operations:
            - name: get-level
              method: GET

Analyzes inventory levels across stores, identifies imbalances, and triggers inter-store transfer orders.

naftiko: "0.5"
info:
  label: "Store Inventory Rebalancing Pipeline"
  description: "Analyzes inventory levels across stores, identifies imbalances, and triggers inter-store transfer orders."
  tags:
    - inventory
    - petco
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-inventory-rebalancing-pipeline
          description: "Analyzes inventory levels across stores, identifies imbalances, and triggers inter-store transfer orders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: analyze-levels
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: create-transfer
              type: call
              call: "petco.create-transfer"
              with:
                input: "{{input_id}}"
            - name: notify-ops
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/inventory/transfers"
          operations:
            - name: create-transfer
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Finds nearby Petco store locations by coordinates or zip code. Returns store details including services offered, hours, and distance.

naftiko: "0.5"
info:
  label: "Store Location Finder"
  description: "Finds nearby Petco store locations by coordinates or zip code. Returns store details including services offered, hours, and distance."
  tags:
    - retail
    - store-locator
capability:
  exposes:
    - type: mcp
      namespace: store-locator
      port: 8080
      tools:
        - name: find-nearby-stores
          description: "Find nearby Petco stores by location."
          inputParameters:
            - name: zip_code
              in: body
              type: string
              description: "The zip code to search near."
            - name: radius_miles
              in: body
              type: integer
              description: "Search radius in miles."
          call: "store-api.search-locations"
          with:
            zip_code: "{{zip_code}}"
            radius: "{{radius_miles}}"
          outputParameters:
            - name: stores
              type: array
              mapping: "$.data.locations"
            - name: total_found
              type: integer
              mapping: "$.data.total_count"
  consumes:
    - type: http
      namespace: store-api
      baseUri: "https://api.petco.com/stores/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_store_token"
      resources:
        - name: locations
          path: "/search?zip={{zip_code}}&radius={{radius}}"
          inputParameters:
            - name: zip_code
              in: query
            - name: radius
              in: query
          operations:
            - name: search-locations
              method: GET

Coordinates new store openings by provisioning systems, scheduling staff, and setting up inventory.

naftiko: "0.5"
info:
  label: "Store Opening Checklist Orchestrator"
  description: "Coordinates new store openings by provisioning systems, scheduling staff, and setting up inventory."
  tags:
    - operations
    - petco
    - servicenow
    - workday
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-opening-checklist-orchestrator
          description: "Coordinates new store openings by provisioning systems, scheduling staff, and setting up inventory."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: provision-store
              type: call
              call: "petco.create-store"
              with:
                input: "{{input_id}}"
            - name: create-tasks
              type: call
              call: "servicenow.create-task"
              with:
                input: "{{input_id}}"
            - name: schedule-staff
              type: call
              call: "workday.create-schedule"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/stores"
          operations:
            - name: create-store
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://petco.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl.workday.com/petco/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workday-resource
          path: "/scheduling"
          operations:
            - name: create-schedule
              method: POST

Audits store planogram compliance, identifies deviations, and creates corrective action tasks.

naftiko: "0.5"
info:
  label: "Store Planogram Compliance Pipeline"
  description: "Audits store planogram compliance, identifies deviations, and creates corrective action tasks."
  tags:
    - merchandising
    - petco
    - jira
capability:
  exposes:
    - type: mcp
      namespace: merchandising
      port: 8080
      tools:
        - name: store-planogram-compliance-pipeline
          description: "Audit planogram compliance and create corrective actions."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: check-compliance
              type: call
              call: "petco.audit-planogram"
              with:
                input: "{{input_id}}"
            - name: create-tasks
              type: call
              call: "jira.create-issue"
              with:
                input: "{{input_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/stores/planogram-audit"
          operations:
            - name: audit-planogram
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://petco.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Manages store safety inspections by scheduling audits, recording findings, and tracking corrective actions.

naftiko: "0.5"
info:
  label: "Store Safety Inspection Pipeline"
  description: "Manages store safety inspections by scheduling audits, recording findings, and tracking corrective actions."
  tags:
    - safety
    - petco
    - servicenow
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: store
      port: 8080
      tools:
        - name: store-safety-inspection-pipeline
          description: "Manages store safety inspections by scheduling audits, recording findings, and tracking corrective actions."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: schedule-audit
              type: call
              call: "servicenow.create-task"
              with:
                input: "{{input_id}}"
            - name: record-findings
              type: call
              call: "sharepoint.upload-file"
              with:
                input: "{{input_id}}"
            - name: track-actions
              type: call
              call: "jira.create-issue"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://petco.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: sharepoint-resource
          path: "/sites/drives/root/children"
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: jira
      baseUri: "https://petco.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Curates personalized pet subscription boxes based on pet profiles, preferences, and seasonal themes.

naftiko: "0.5"
info:
  label: "Subscription Box Curation Pipeline"
  description: "Curates personalized pet subscription boxes based on pet profiles, preferences, and seasonal themes."
  tags:
    - subscriptions
    - petco
    - snowflake
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: subscription
      port: 8080
      tools:
        - name: subscription-box-curation-pipeline
          description: "Curates personalized pet subscription boxes based on pet profiles, preferences, and seasonal themes."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-preferences
              type: call
              call: "petco.get-preferences"
              with:
                input: "{{input_id}}"
            - name: curate-box
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: send-preview
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/customers/{{input_id}}/preferences"
          operations:
            - name: get-preferences
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Audits supplier sustainability practices, scores environmental compliance, and tracks remediation actions.

naftiko: "0.5"
info:
  label: "Supplier Sustainability Audit Pipeline"
  description: "Audits supplier sustainability practices, scores environmental compliance, and tracks remediation actions."
  tags:
    - sustainability
    - petco
    - jira
capability:
  exposes:
    - type: mcp
      namespace: sustainability
      port: 8080
      tools:
        - name: supplier-sustainability-audit-pipeline
          description: "Audit supplier sustainability and track remediation."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-audit-data
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: create-actions
              type: call
              call: "jira.create-issue"
              with:
                input: "{{input_id}}"
            - name: notify-procurement
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://petco.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Responds to supply chain disruptions by identifying affected products, finding alternatives, and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Supply Chain Disruption Response"
  description: "Responds to supply chain disruptions by identifying affected products, finding alternatives, and notifying stakeholders."
  tags:
    - supply-chain
    - petco
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: supply
      port: 8080
      tools:
        - name: supply-chain-disruption-response
          description: "Responds to supply chain disruptions by identifying affected products, finding alternatives, and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: identify-impact
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: find-alternatives
              type: call
              call: "petco.search-alternatives"
              with:
                input: "{{input_id}}"
            - name: create-incident
              type: call
              call: "jira.create-issue"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/products/alternatives"
          operations:
            - name: search-alternatives
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://petco.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Looks up a SAP purchase order for supply chain replenishment. Returns order status, vendor, expected delivery, and line items.

naftiko: "0.5"
info:
  label: "Supply Chain Purchase Order Status"
  description: "Looks up a SAP purchase order for supply chain replenishment. Returns order status, vendor, expected delivery, and line items."
  tags:
    - supply-chain
    - sap
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-ops
      port: 8080
      tools:
        - name: get-po-status
          description: "Look up a supply chain purchase order status from SAP."
          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: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: delivery_date
              type: string
              mapping: "$.d.DeliveryDate"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://petco.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

Triggers a Tableau datasource extract refresh. Used to update dashboards after data pipeline completions.

naftiko: "0.5"
info:
  label: "Tableau Dashboard Refresh"
  description: "Triggers a Tableau datasource extract refresh. Used to update dashboards after data pipeline completions."
  tags:
    - analytics
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: dashboard-ops
      port: 8080
      tools:
        - name: refresh-tableau-dashboard
          description: "Trigger a Tableau datasource extract refresh."
          inputParameters:
            - name: datasource_id
              in: body
              type: string
              description: "The Tableau datasource identifier."
          call: "tableau.refresh-extract"
          with:
            datasource_id: "{{datasource_id}}"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://tableau.petco.com/api/3.21"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/sites/petco/datasources/{{datasource_id}}/refresh"
          inputParameters:
            - name: datasource_id
              in: path
          operations:
            - name: refresh-extract
              method: POST

Validates vendor invoices against SAP purchase orders, creates payment requests in Oracle, and notifies the accounts payable team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Vendor Invoice Processor"
  description: "Validates vendor invoices against SAP purchase orders, creates payment requests in Oracle, and notifies the accounts payable team in Microsoft Teams."
  tags:
    - supply-chain
    - finance
    - sap
    - oracle
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vendor-payments
      port: 8080
      tools:
        - name: process-vendor-invoice
          description: "Validate and process a vendor invoice against the purchase order."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "The vendor invoice number."
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number."
            - name: amount
              in: body
              type: number
              description: "The invoice amount."
          steps:
            - name: validate-po
              type: call
              call: "sap.get-po"
              with:
                po_number: "{{po_number}}"
            - name: create-payment
              type: call
              call: "oracle.create-payment-request"
              with:
                invoice_number: "{{invoice_number}}"
                po_number: "{{po_number}}"
                amount: "{{amount}}"
            - name: notify-ap
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "accounts-payable"
                text: "Invoice {{invoice_number}} for ${{amount}} validated against PO {{po_number}}. Payment: {{create-payment.request_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://petco.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
    - type: http
      namespace: oracle
      baseUri: "https://petco.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: payments
          path: "/payablesInvoices"
          operations:
            - name: create-payment-request
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Optimizes product markdowns by analyzing sales velocity, inventory aging, and margin targets.

naftiko: "0.5"
info:
  label: "Vendor Markdown Optimization Pipeline"
  description: "Optimizes product markdowns by analyzing sales velocity, inventory aging, and margin targets."
  tags:
    - pricing
    - petco
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: pricing
      port: 8080
      tools:
        - name: vendor-markdown-optimization-pipeline
          description: "Optimize product markdowns based on sales velocity and inventory aging."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: analyze-inventory
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: apply-markdowns
              type: call
              call: "petco.update-pricing"
              with:
                input: "{{input_id}}"
            - name: notify-merch
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/products/pricing"
          operations:
            - name: update-pricing
              method: PATCH
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Onboards new vendors by collecting certifications, running compliance checks, and provisioning supply chain access.

naftiko: "0.5"
info:
  label: "Vendor Onboarding Compliance Pipeline"
  description: "Onboards new vendors by collecting certifications, running compliance checks, and provisioning supply chain access."
  tags:
    - vendors
    - petco
    - docusign
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: vendor
      port: 8080
      tools:
        - name: vendor-onboarding-compliance-pipeline
          description: "Onboards new vendors by collecting certifications, running compliance checks, and provisioning supply chain access."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: send-documents
              type: call
              call: "docusign.create-envelope"
              with:
                input: "{{input_id}}"
            - name: check-compliance
              type: call
              call: "petco.check-vendor-compliance"
              with:
                input: "{{input_id}}"
            - name: create-access
              type: call
              call: "servicenow.create-request"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: docusign
      baseUri: "https://na4.docusign.net/restapi/v2.1"
      authentication:
        type: bearer
        token: "$secrets.docusign_token"
      resources:
        - name: docusign-resource
          path: "/accounts/envelopes"
          operations:
            - name: create-envelope
              method: POST
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/vendors/compliance"
          operations:
            - name: check-vendor-compliance
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://petco.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST

Reviews vendor performance metrics, generates scorecards, and distributes to procurement team.

naftiko: "0.5"
info:
  label: "Vendor Performance Review Pipeline"
  description: "Reviews vendor performance metrics, generates scorecards, and distributes to procurement team."
  tags:
    - vendors
    - petco
    - snowflake
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: vendor
      port: 8080
      tools:
        - name: vendor-performance-review-pipeline
          description: "Reviews vendor performance metrics, generates scorecards, and distributes to procurement team."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-metrics
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: refresh-scorecard
              type: call
              call: "tableau.refresh-workbook"
              with:
                input: "{{input_id}}"
            - name: notify-procurement
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://tableau.petco.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: tableau-resource
          path: "/sites/default/workbooks/refresh"
          operations:
            - name: refresh-workbook
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Tracks inbound vendor shipments from the supply chain system, updates receiving status in the warehouse management system, and notifies the distribution team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Vendor Shipment Tracker"
  description: "Tracks inbound vendor shipments from the supply chain system, updates receiving status in the warehouse management system, and notifies the distribution team via Microsoft Teams."
  tags:
    - supply-chain
    - logistics
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: shipment-tracking
      port: 8080
      tools:
        - name: track-vendor-shipment
          description: "Track an inbound vendor shipment and update receiving systems."
          inputParameters:
            - name: shipment_id
              in: body
              type: string
              description: "The vendor shipment identifier."
            - name: warehouse_id
              in: body
              type: string
              description: "The destination warehouse identifier."
          steps:
            - name: get-shipment-status
              type: call
              call: "logistics-api.get-shipment"
              with:
                shipment_id: "{{shipment_id}}"
            - name: update-receiving
              type: call
              call: "wms-api.update-inbound"
              with:
                shipment_id: "{{shipment_id}}"
                warehouse_id: "{{warehouse_id}}"
                eta: "{{get-shipment-status.eta}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "distribution-ops"
                text: "Shipment {{shipment_id}} status: {{get-shipment-status.status}}. ETA to warehouse {{warehouse_id}}: {{get-shipment-status.eta}}"
  consumes:
    - type: http
      namespace: logistics-api
      baseUri: "https://api.petco.com/logistics/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_logistics_token"
      resources:
        - name: shipments
          path: "/shipments/{{shipment_id}}"
          inputParameters:
            - name: shipment_id
              in: path
          operations:
            - name: get-shipment
              method: GET
    - type: http
      namespace: wms-api
      baseUri: "https://api.petco.com/warehouse/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_wms_token"
      resources:
        - name: inbound
          path: "/inbound/{{shipment_id}}"
          inputParameters:
            - name: shipment_id
              in: path
          operations:
            - name: update-inbound
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Books a veterinary appointment at a Petco Vetco clinic, creates a patient record if needed, sends confirmation via SendGrid, and logs the appointment in Salesforce.

naftiko: "0.5"
info:
  label: "Vet Appointment Scheduler"
  description: "Books a veterinary appointment at a Petco Vetco clinic, creates a patient record if needed, sends confirmation via SendGrid, and logs the appointment in Salesforce."
  tags:
    - vet-services
    - salesforce
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: vet-scheduling
      port: 8080
      tools:
        - name: book-vet-appointment
          description: "Book a vet appointment with patient record creation and confirmation."
          inputParameters:
            - name: clinic_id
              in: body
              type: string
              description: "The Vetco clinic identifier."
            - name: pet_name
              in: body
              type: string
              description: "The pet name."
            - name: pet_type
              in: body
              type: string
              description: "Type of pet (dog, cat, bird, reptile)."
            - name: owner_email
              in: body
              type: string
              description: "The pet owner email."
            - name: service_type
              in: body
              type: string
              description: "Type of vet service (wellness-exam, vaccination, dental, grooming)."
            - name: preferred_date
              in: body
              type: string
              description: "Preferred appointment date."
          steps:
            - name: check-availability
              type: call
              call: "vet-api.get-availability"
              with:
                clinic_id: "{{clinic_id}}"
                date: "{{preferred_date}}"
                service_type: "{{service_type}}"
            - name: create-appointment
              type: call
              call: "vet-api.book-appointment"
              with:
                clinic_id: "{{clinic_id}}"
                slot_id: "{{check-availability.next_available_slot}}"
                pet_name: "{{pet_name}}"
                pet_type: "{{pet_type}}"
                service: "{{service_type}}"
            - name: log-in-salesforce
              type: call
              call: "salesforce.create-record"
              with:
                object: "Vet_Appointment__c"
                data:
                  clinic: "{{clinic_id}}"
                  pet_name: "{{pet_name}}"
                  service: "{{service_type}}"
                  appointment_id: "{{create-appointment.appointment_id}}"
            - name: send-confirmation
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{owner_email}}"
                subject: "Petco Vet Appointment Confirmed"
                body: "Appointment for {{pet_name}} ({{service_type}}) at clinic {{clinic_id}} on {{create-appointment.date}} at {{create-appointment.time}}."
  consumes:
    - type: http
      namespace: vet-api
      baseUri: "https://api.petco.com/vetco/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_vet_token"
      resources:
        - name: availability
          path: "/clinics/{{clinic_id}}/availability"
          inputParameters:
            - name: clinic_id
              in: path
          operations:
            - name: get-availability
              method: GET
        - name: appointments
          path: "/appointments"
          operations:
            - name: book-appointment
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: records
          path: "/sobjects/{{object}}"
          inputParameters:
            - name: object
              in: path
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Processes veterinary referrals between Petco Vetco clinics and specialist hospitals, tracking referral outcomes.

naftiko: "0.5"
info:
  label: "Vet Clinic Referral Pipeline"
  description: "Processes veterinary referrals between Petco Vetco clinics and specialist hospitals, tracking referral outcomes."
  tags:
    - vet
    - petco
    - servicenow
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: vet
      port: 8080
      tools:
        - name: vet-clinic-referral-pipeline
          description: "Processes veterinary referrals between Petco Vetco clinics and specialist hospitals, tracking referral outcomes."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: create-referral
              type: call
              call: "petco.create-referral"
              with:
                input: "{{input_id}}"
            - name: track-referral
              type: call
              call: "servicenow.create-case"
              with:
                input: "{{input_id}}"
            - name: notify-pet-parent
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/vet/referrals"
          operations:
            - name: create-referral
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://petco.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/table/sn_customerservice_case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Retrieves the daily appointment schedule for a Vetco clinic. Returns booked appointments, available slots, and service types.

naftiko: "0.5"
info:
  label: "Vet Clinic Schedule Lookup"
  description: "Retrieves the daily appointment schedule for a Vetco clinic. Returns booked appointments, available slots, and service types."
  tags:
    - vet-services
    - scheduling
capability:
  exposes:
    - type: mcp
      namespace: clinic-scheduling
      port: 8080
      tools:
        - name: get-clinic-schedule
          description: "Look up the daily appointment schedule for a Vetco clinic."
          inputParameters:
            - name: clinic_id
              in: body
              type: string
              description: "The Vetco clinic identifier."
            - name: date
              in: body
              type: string
              description: "The schedule date."
          call: "vet-api.get-schedule"
          with:
            clinic_id: "{{clinic_id}}"
            date: "{{date}}"
          outputParameters:
            - name: booked_appointments
              type: array
              mapping: "$.data.appointments"
            - name: available_slots
              type: integer
              mapping: "$.data.available_slots"
  consumes:
    - type: http
      namespace: vet-api
      baseUri: "https://api.petco.com/vetco/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_vet_token"
      resources:
        - name: schedules
          path: "/clinics/{{clinic_id}}/schedule/{{date}}"
          inputParameters:
            - name: clinic_id
              in: path
            - name: date
              in: path
          operations:
            - name: get-schedule
              method: GET

Processes Vital Care loyalty program enrollments, provisions membership benefits, and sends welcome packages.

naftiko: "0.5"
info:
  label: "Vital Care Enrollment Orchestrator"
  description: "Processes Vital Care loyalty program enrollments, provisions membership benefits, and sends welcome packages."
  tags:
    - loyalty
    - petco
    - salesforce
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: vital
      port: 8080
      tools:
        - name: vital-care-enrollment-orchestrator
          description: "Processes Vital Care loyalty program enrollments, provisions membership benefits, and sends welcome packages."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: create-membership
              type: call
              call: "petco.create-member"
              with:
                input: "{{input_id}}"
            - name: sync-crm
              type: call
              call: "salesforce.create-contact"
              with:
                input: "{{input_id}}"
            - name: send-welcome
              type: call
              call: "sendgrid.send-email"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/loyalty/members"
          operations:
            - name: create-member
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://petco.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/sobjects/Contact"
          operations:
            - name: create-contact
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Forecasts warehouse capacity needs by analyzing seasonal demand, current utilization, and planned promotions.

naftiko: "0.5"
info:
  label: "Warehouse Capacity Forecast Pipeline"
  description: "Forecasts warehouse capacity needs by analyzing seasonal demand, current utilization, and planned promotions."
  tags:
    - supply-chain
    - petco
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: warehouse
      port: 8080
      tools:
        - name: warehouse-capacity-forecast-pipeline
          description: "Forecasts warehouse capacity needs by analyzing seasonal demand, current utilization, and planned promotions."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: get-utilization
              type: call
              call: "snowflake.run-query"
              with:
                input: "{{input_id}}"
            - name: forecast-demand
              type: call
              call: "petco.run-forecast"
              with:
                input: "{{input_id}}"
            - name: notify-logistics
              type: call
              call: "slack.post-message"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: petco
      baseUri: "https://api.petco.com/v2"
      authentication:
        type: bearer
        token: "$secrets.petco_api_token"
      resources:
        - name: petco-resource
          path: "/supply-chain/forecast"
          operations:
            - name: run-forecast
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries warehouse capacity and utilization from the WMS, stores daily snapshots in Snowflake, and refreshes the supply chain dashboard in Tableau.

naftiko: "0.5"
info:
  label: "Warehouse Capacity Report"
  description: "Queries warehouse capacity and utilization from the WMS, stores daily snapshots in Snowflake, and refreshes the supply chain dashboard in Tableau."
  tags:
    - supply-chain
    - snowflake
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: warehouse-analytics
      port: 8080
      tools:
        - name: report-warehouse-capacity
          description: "Generate a warehouse capacity and utilization report."
          inputParameters:
            - name: warehouse_id
              in: body
              type: string
              description: "The warehouse identifier."
          steps:
            - name: get-capacity
              type: call
              call: "wms-api.get-capacity"
              with:
                warehouse_id: "{{warehouse_id}}"
            - name: store-snapshot
              type: call
              call: "snowflake.insert-record"
              with:
                table: "warehouse_capacity"
                data:
                  warehouse_id: "{{warehouse_id}}"
                  utilization_pct: "{{get-capacity.utilization_pct}}"
                  available_slots: "{{get-capacity.available_slots}}"
            - name: refresh-dashboard
              type: call
              call: "tableau.refresh-extract"
              with:
                datasource_id: "warehouse_capacity_ds"
  consumes:
    - type: http
      namespace: wms-api
      baseUri: "https://api.petco.com/warehouse/v1"
      authentication:
        type: bearer
        token: "$secrets.petco_wms_token"
      resources:
        - name: capacity
          path: "/warehouses/{{warehouse_id}}/capacity"
          inputParameters:
            - name: warehouse_id
              in: path
          operations:
            - name: get-capacity
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://petco.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: insert-record
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://tableau.petco.com/api/3.21"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/sites/petco/datasources/{{datasource_id}}/refresh"
          inputParameters:
            - name: datasource_id
              in: path
          operations:
            - name: refresh-extract
              method: POST