Instacart Capabilities

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

Sort
Expand

Retrieves current bid performance from the ads platform and adjusts bids for sponsored products based on ROAS targets, then notifies the ads ops team via Slack.

naftiko: "0.5"
info:
  label: "Ad Sponsored Product Bidding Optimizer"
  description: "Retrieves current bid performance from the ads platform and adjusts bids for sponsored products based on ROAS targets, then notifies the ads ops team via Slack."
  tags:
    - advertising
    - analytics
    - slack
capability:
  exposes:
    - type: mcp
      namespace: bid-optimization
      port: 8080
      tools:
        - name: optimize-bids
          description: "Optimize sponsored product bids based on performance."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "Ad campaign ID."
            - name: target_roas
              in: body
              type: string
              description: "Target ROAS."
          steps:
            - name: get-performance
              type: call
              call: "ads-platform.get-campaign"
              with:
                campaign_id: "{{campaign_id}}"
            - name: adjust-bids
              type: call
              call: "ads-platform.update-bids"
              with:
                campaign_id: "{{campaign_id}}"
                current_roas: "{{get-performance.roas}}"
                target_roas: "{{target_roas}}"
            - name: notify-ops
              type: call
              call: "slack.post-message"
              with:
                channel: "ads-ops"
                text: "Bid adjustment: Campaign {{campaign_id}}. Current ROAS: {{get-performance.roas}}. Target: {{target_roas}}. New bid: {{adjust-bids.new_bid}}"
  consumes:
    - type: http
      namespace: ads-platform
      baseUri: "https://ads-api.instacart.com/v1"
      authentication:
        type: bearer
        token: "$secrets.ads_platform_token"
      resources:
        - name: campaigns
          path: "/campaigns/{{campaign_id}}/metrics"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign
              method: GET
        - name: bids
          path: "/campaigns/{{campaign_id}}/bids"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: update-bids
              method: PUT
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves ad campaign performance metrics from the Instacart advertising platform, returning impressions, clicks, spend, and ROAS for a brand's sponsored products.

naftiko: "0.5"
info:
  label: "Advertising Campaign Performance Reporter"
  description: "Retrieves ad campaign performance metrics from the Instacart advertising platform, returning impressions, clicks, spend, and ROAS for a brand's sponsored products."
  tags:
    - advertising
    - analytics
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: ad-performance
      port: 8080
      tools:
        - name: get-campaign-metrics
          description: "Retrieve advertising campaign performance metrics."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The ad campaign ID."
          call: "ads-platform.get-campaign"
          with:
            campaign_id: "{{campaign_id}}"
          outputParameters:
            - name: impressions
              type: string
              mapping: "$.metrics.impressions"
            - name: clicks
              type: string
              mapping: "$.metrics.clicks"
            - name: spend
              type: string
              mapping: "$.metrics.spend"
            - name: roas
              type: string
              mapping: "$.metrics.roas"
  consumes:
    - type: http
      namespace: ads-platform
      baseUri: "https://ads-api.instacart.com/v1"
      authentication:
        type: bearer
        token: "$secrets.ads_platform_token"
      resources:
        - name: campaigns
          path: "/campaigns/{{campaign_id}}/metrics"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign
              method: GET

Orchestrates alcohol delivery age verification workflows, coordinating ID scanning, shopper compliance checks, and state-specific regulatory requirements.

naftiko: "0.5"
info:
  label: "Alcohol Age Verification Orchestrator"
  description: "Orchestrates alcohol delivery age verification workflows, coordinating ID scanning, shopper compliance checks, and state-specific regulatory requirements."
  tags:
    - compliance
    - age-verification
    - alcohol-delivery
capability:
  exposes:
    - type: mcp
      namespace: age-verification
      port: 8080
      tools:
        - name: verify-alcohol-delivery
          description: "Verify age compliance for an alcohol delivery order."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The order identifier containing alcohol items."
            - name: shopper_id
              in: body
              type: string
              description: "The assigned shopper identifier."
            - name: delivery_state
              in: body
              type: string
              description: "US state code for the delivery address."
          call: "compliance-api.verify-age"
          with:
            order: "{{order_id}}"
            shopper: "{{shopper_id}}"
            state: "{{delivery_state}}"
          outputParameters:
            - name: verification_status
              type: string
              mapping: "$.verification.status"
            - name: id_scan_required
              type: boolean
              mapping: "$.verification.idScanRequired"
            - name: state_restrictions
              type: array
              mapping: "$.verification.stateRestrictions"
  consumes:
    - type: http
      namespace: compliance-api
      baseUri: "https://api.instacart.com/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.instacart_compliance_token"
      resources:
        - name: age-verifications
          path: "/orders/{{order}}/age-verification"
          inputParameters:
            - name: order
              in: path
          operations:
            - name: verify-age
              method: POST

Runs an analytics query on Amazon Redshift for historical marketplace data.

naftiko: "0.5"
info:
  label: "Amazon Redshift Analytics Query"
  description: "Runs an analytics query on Amazon Redshift for historical marketplace data."
  tags:
    - analytics
    - data
    - amazon-redshift
capability:
  exposes:
    - type: mcp
      namespace: redshift-analytics
      port: 8080
      tools:
        - name: query-redshift
          description: "Run an analytics query on Redshift."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "SQL query."
          call: "redshift.execute-query"
          with:
            sql: "{{query}}"
  consumes:
    - type: http
      namespace: redshift
      baseUri: "https://redshift-data.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_redshift_token"
      resources:
        - name: statements
          path: "/execute-statement"
          operations:
            - name: execute-query
              method: POST

Queries Amazon Redshift for customer cohort analysis data, returning retention rate, average order frequency, and lifetime value by cohort.

naftiko: "0.5"
info:
  label: "Amazon Redshift Customer Cohort Query"
  description: "Queries Amazon Redshift for customer cohort analysis data, returning retention rate, average order frequency, and lifetime value by cohort."
  tags:
    - analytics
    - amazon-redshift
    - customer-insights
capability:
  exposes:
    - type: mcp
      namespace: customer-cohorts
      port: 8080
      tools:
        - name: get-cohort-data
          description: "Query customer cohort analysis from Amazon Redshift."
          inputParameters:
            - name: cohort_month
              in: body
              type: string
              description: "The cohort month (YYYY-MM)."
          call: "redshift.query-cohort"
          with:
            cohort_month: "{{cohort_month}}"
          outputParameters:
            - name: retention_rate
              type: string
              mapping: "$.Records[0].retention_rate"
            - name: avg_frequency
              type: string
              mapping: "$.Records[0].avg_order_frequency"
            - name: ltv
              type: string
              mapping: "$.Records[0].lifetime_value"
  consumes:
    - type: http
      namespace: redshift
      baseUri: "https://redshift-data.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_redshift_token"
      resources:
        - name: statements
          path: "/execute-statement"
          operations:
            - name: query-cohort
              method: POST

Retrieves product roadmap task status from Asana for Instacart product teams, returning task name, milestone, due date, and completion status.

naftiko: "0.5"
info:
  label: "Asana Product Roadmap Tracker"
  description: "Retrieves product roadmap task status from Asana for Instacart product teams, returning task name, milestone, due date, and completion status."
  tags:
    - product-management
    - asana
capability:
  exposes:
    - type: mcp
      namespace: product-roadmap
      port: 8080
      tools:
        - name: get-roadmap-tasks
          description: "Retrieve product roadmap tasks from Asana."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "The Asana project ID."
          call: "asana.get-tasks"
          with:
            project_id: "{{project_id}}"
          outputParameters:
            - name: task_name
              type: string
              mapping: "$.data[0].name"
            - name: milestone
              type: string
              mapping: "$.data[0].memberships[0].section.name"
            - name: due_date
              type: string
              mapping: "$.data[0].due_on"
            - name: completed
              type: string
              mapping: "$.data[0].completed"
  consumes:
    - type: http
      namespace: asana
      baseUri: "https://app.asana.com/api/1.0"
      authentication:
        type: bearer
        token: "$secrets.asana_token"
      resources:
        - name: tasks
          path: "/projects/{{project_id}}/tasks"
          inputParameters:
            - name: project_id
              in: path
          operations:
            - name: get-tasks
              method: GET

Retrieves tasks from an Asana project for Instacart operational planning.

naftiko: "0.5"
info:
  label: "Asana Project Task Tracker"
  description: "Retrieves tasks from an Asana project for Instacart operational planning."
  tags:
    - project-management
    - asana
capability:
  exposes:
    - type: mcp
      namespace: project-tasks
      port: 8080
      tools:
        - name: get-project-tasks
          description: "Retrieve tasks from an Asana project."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "Asana project ID."
          call: "asana.get-tasks"
          with:
            project_id: "{{project_id}}"
          outputParameters:
            - name: tasks
              type: string
              mapping: "$.data"
  consumes:
    - type: http
      namespace: asana
      baseUri: "https://app.asana.com/api/1.0"
      authentication:
        type: bearer
        token: "$secrets.asana_token"
      resources:
        - name: tasks
          path: "/projects/{{project_id}}/tasks"
          inputParameters:
            - name: project_id
              in: path
          operations:
            - name: get-tasks
              method: GET

Calculates sales tax for an Instacart order using Avalara, returning tax amount, rate, and jurisdiction.

naftiko: "0.5"
info:
  label: "Avalara Tax Calculation"
  description: "Calculates sales tax for an Instacart order using Avalara, returning tax amount, rate, and jurisdiction."
  tags:
    - ordering
    - finance
    - avalara
capability:
  exposes:
    - type: mcp
      namespace: tax-calculation
      port: 8080
      tools:
        - name: calculate-tax
          description: "Calculate sales tax for an order using Avalara."
          inputParameters:
            - name: order_total
              in: body
              type: string
              description: "Order subtotal."
            - name: delivery_address
              in: body
              type: string
              description: "Delivery address."
            - name: item_categories
              in: body
              type: string
              description: "JSON array of item tax categories."
          call: "avalara.calculate-tax"
          with:
            amount: "{{order_total}}"
            address: "{{delivery_address}}"
            items: "{{item_categories}}"
          outputParameters:
            - name: tax_amount
              type: string
              mapping: "$.totalTax"
            - name: tax_rate
              type: string
              mapping: "$.totalTaxRate"
  consumes:
    - type: http
      namespace: avalara
      baseUri: "https://rest.avatax.com/api/v2"
      authentication:
        type: basic
        username: "$secrets.avalara_user"
        password: "$secrets.avalara_password"
      resources:
        - name: transactions
          path: "/transactions/create"
          operations:
            - name: calculate-tax
              method: POST

Retrieves tax rate information from Avalara for Instacart delivery locations, returning combined tax rate, state rate, and local rate by ZIP code.

naftiko: "0.5"
info:
  label: "Avalara Tax Rate Lookup"
  description: "Retrieves tax rate information from Avalara for Instacart delivery locations, returning combined tax rate, state rate, and local rate by ZIP code."
  tags:
    - tax
    - avalara
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: tax-rates
      port: 8080
      tools:
        - name: get-tax-rate
          description: "Look up tax rate from Avalara by address."
          inputParameters:
            - name: zip_code
              in: body
              type: string
              description: "The delivery ZIP code."
          call: "avalara.get-rate"
          with:
            zip_code: "{{zip_code}}"
          outputParameters:
            - name: combined_rate
              type: string
              mapping: "$.totalRate"
            - name: state_rate
              type: string
              mapping: "$.stateRate"
            - name: local_rate
              type: string
              mapping: "$.localRate"
  consumes:
    - type: http
      namespace: avalara
      baseUri: "https://rest.avatax.com/api/v2"
      authentication:
        type: basic
        username: "$secrets.avalara_user"
        password: "$secrets.avalara_password"
      resources:
        - name: rates
          path: "/taxrates/bypostalcode?country=US&postalCode={{zip_code}}"
          inputParameters:
            - name: zip_code
              in: query
          operations:
            - name: get-rate
              method: GET

Queries Cloudflare for CDN performance metrics for Instacart's consumer-facing web properties.

naftiko: "0.5"
info:
  label: "Cloudflare CDN Performance Monitor"
  description: "Queries Cloudflare for CDN performance metrics for Instacart's consumer-facing web properties."
  tags:
    - it-operations
    - monitoring
    - cloudflare
capability:
  exposes:
    - type: mcp
      namespace: cdn-performance
      port: 8080
      tools:
        - name: get-cdn-metrics
          description: "Retrieve Cloudflare CDN performance metrics."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "Cloudflare zone ID."
          call: "cloudflare.get-analytics"
          with:
            zone_id: "{{zone_id}}"
          outputParameters:
            - name: total_requests
              type: string
              mapping: "$.result.totals.requests.all"
            - name: bandwidth
              type: string
              mapping: "$.result.totals.bandwidth.all"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: analytics
          path: "/zones/{{zone_id}}/analytics/dashboard"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-analytics
              method: GET

Retrieves DDoS protection analytics from Cloudflare for Instacart web properties, returning threat count, mitigated requests, and current threat level.

naftiko: "0.5"
info:
  label: "Cloudflare DDoS Protection Status"
  description: "Retrieves DDoS protection analytics from Cloudflare for Instacart web properties, returning threat count, mitigated requests, and current threat level."
  tags:
    - security
    - cloudflare
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: ddos-protection
      port: 8080
      tools:
        - name: get-ddos-status
          description: "Retrieve Cloudflare DDoS protection analytics."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The Cloudflare zone ID."
          call: "cloudflare.get-firewall-analytics"
          with:
            zone_id: "{{zone_id}}"
          outputParameters:
            - name: threat_count
              type: number
              mapping: "$.result.totals.threats"
            - name: mitigated_requests
              type: number
              mapping: "$.result.totals.mitigatedRequests"
            - name: threat_level
              type: string
              mapping: "$.result.totals.currentThreatLevel"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: analytics
          path: "/zones/{{zone_id}}/analytics/dashboard"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-firewall-analytics
              method: GET

Monitors cold chain temperature compliance during grocery delivery, tracking insulated bag temperatures and alerting shoppers when frozen or refrigerated items exceed safe thresholds.

naftiko: "0.5"
info:
  label: "Cold Chain Temperature Monitoring Pipeline"
  description: "Monitors cold chain temperature compliance during grocery delivery, tracking insulated bag temperatures and alerting shoppers when frozen or refrigerated items exceed safe thresholds."
  tags:
    - food-safety
    - cold-chain
    - delivery-monitoring
capability:
  exposes:
    - type: mcp
      namespace: cold-chain-monitor
      port: 8080
      tools:
        - name: check-cold-chain-status
          description: "Check cold chain temperature compliance for a delivery in progress."
          inputParameters:
            - name: delivery_id
              in: body
              type: string
              description: "The active delivery identifier."
            - name: shopper_id
              in: body
              type: string
              description: "The assigned shopper identifier."
          call: "delivery-safety-api.get-temperature-status"
          with:
            delivery: "{{delivery_id}}"
            shopper: "{{shopper_id}}"
          outputParameters:
            - name: frozen_bag_temp
              type: number
              mapping: "$.coldChain.frozenBagTemp"
            - name: refrigerated_bag_temp
              type: number
              mapping: "$.coldChain.refrigeratedBagTemp"
            - name: compliance_status
              type: string
              mapping: "$.coldChain.complianceStatus"
  consumes:
    - type: http
      namespace: delivery-safety-api
      baseUri: "https://api.instacart.com/delivery-safety/v1"
      authentication:
        type: bearer
        token: "$secrets.instacart_delivery_safety_token"
      resources:
        - name: temperature-checks
          path: "/deliveries/{{delivery}}/temperature"
          inputParameters:
            - name: delivery
              in: path
          operations:
            - name: get-temperature-status
              method: GET

When a Concur expense is submitted, retrieves details and notifies approver via Slack.

naftiko: "0.5"
info:
  label: "Concur Travel Expense Notifier"
  description: "When a Concur expense is submitted, retrieves details and notifies approver via Slack."
  tags:
    - finance
    - expenses
    - sap-concur
    - slack
capability:
  exposes:
    - type: mcp
      namespace: expense-approval
      port: 8080
      tools:
        - name: notify-expense
          description: "Fetch Concur expense and notify approver."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "Concur report ID."
          steps:
            - name: get-report
              type: call
              call: "concur.get-expense-report"
              with:
                report_id: "{{report_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "expense-approvals"
                text: "Expense pending: {{get-report.employee_name}} - ${{get-report.total_amount}}. Review: {{get-report.approval_url}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-expense-report
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Creates a knowledge base article in Confluence for Instacart operations.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Article Creator"
  description: "Creates a knowledge base article in Confluence for Instacart operations."
  tags:
    - knowledge-management
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: knowledge-base
      port: 8080
      tools:
        - name: create-article
          description: "Create a Confluence knowledge base article."
          inputParameters:
            - name: space_key
              in: body
              type: string
              description: "Confluence space key."
            - name: title
              in: body
              type: string
              description: "Title."
            - name: body
              in: body
              type: string
              description: "Body in HTML."
          call: "confluence.create-page"
          with:
            space_key: "{{space_key}}"
            title: "{{title}}"
            body: "{{body}}"
          outputParameters:
            - name: page_url
              type: string
              mapping: "$._links.webui"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://instacart.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Retrieves operational runbook content from Confluence for Instacart engineering teams, returning page title, last update, and content body.

naftiko: "0.5"
info:
  label: "Confluence Runbook Lookup"
  description: "Retrieves operational runbook content from Confluence for Instacart engineering teams, returning page title, last update, and content body."
  tags:
    - operations
    - confluence
    - documentation
capability:
  exposes:
    - type: mcp
      namespace: runbooks
      port: 8080
      tools:
        - name: get-runbook
          description: "Look up an operational runbook in Confluence."
          inputParameters:
            - name: page_id
              in: body
              type: string
              description: "The Confluence page ID."
          call: "confluence.get-page"
          with:
            page_id: "{{page_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: last_updated
              type: string
              mapping: "$.version.when"
            - name: body
              type: string
              mapping: "$.body.storage.value"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://instacart.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: content
          path: "/content/{{page_id}}?expand=body.storage,version"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              method: GET

Retrieves the current status of a grocery delivery order, returning order state, assigned shopper, estimated delivery time, and item count.

naftiko: "0.5"
info:
  label: "Customer Order Status Lookup"
  description: "Retrieves the current status of a grocery delivery order, returning order state, assigned shopper, estimated delivery time, and item count."
  tags:
    - ordering
    - e-commerce
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: order-status
      port: 8080
      tools:
        - name: get-order-status
          description: "Look up a customer order status by order ID."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Instacart order ID."
          call: "salesforce.get-order"
          with:
            order_id: "{{order_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.Order_Status__c"
            - name: assigned_shopper
              type: string
              mapping: "$.Assigned_Shopper__c"
            - name: estimated_delivery
              type: string
              mapping: "$.Estimated_Delivery__c"
            - name: item_count
              type: string
              mapping: "$.Item_Count__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://instacart.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: orders
          path: "/sobjects/Order__c/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET

When a customer support case is escalated in Salesforce, creates a ServiceNow incident, notifies the support lead via Slack, and sends the customer an update via email.

naftiko: "0.5"
info:
  label: "Customer Support Ticket Escalation Pipeline"
  description: "When a customer support case is escalated in Salesforce, creates a ServiceNow incident, notifies the support lead via Slack, and sends the customer an update via email."
  tags:
    - customer-service
    - salesforce
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: support-escalation
      port: 8080
      tools:
        - name: escalate-case
          description: "Escalate a customer support case across ServiceNow, Slack, and email."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "Salesforce case ID."
          steps:
            - name: get-case
              type: call
              call: "salesforce.get-case"
              with:
                case_id: "{{case_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Escalated: {{get-case.Subject}}"
                priority: "{{get-case.Priority}}"
                category: "customer_escalation"
                description: "{{get-case.Description}}"
            - name: notify-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "support-escalations"
                text: "Escalation: {{get-case.Subject}} - Case {{case_id}}. ServiceNow: {{create-incident.number}}. Priority: {{get-case.Priority}}"
            - name: email-customer
              type: call
              call: "gmail.send-email"
              with:
                to: "{{get-case.ContactEmail}}"
                subject: "Update on your support case #{{case_id}}"
                body: "Your case has been escalated to our senior support team. Reference: {{create-incident.number}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://instacart.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: get-case
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://instacart.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: gmail
      baseUri: "https://gmail.googleapis.com/gmail/v1"
      authentication:
        type: bearer
        token: "$secrets.gmail_token"
      resources:
        - name: messages
          path: "/users/me/messages/send"
          operations:
            - name: send-email
              method: POST

Retrieves the status of a Dagster data pipeline run for data engineering workflows.

naftiko: "0.5"
info:
  label: "Dagster Data Pipeline Monitor"
  description: "Retrieves the status of a Dagster data pipeline run for data engineering workflows."
  tags:
    - data
    - analytics
    - dagster
capability:
  exposes:
    - type: mcp
      namespace: data-pipelines
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Check Dagster pipeline run status."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "Dagster run ID."
          call: "dagster.get-run"
          with:
            run_id: "{{run_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.data.pipelineRunOrError.status"
  consumes:
    - type: http
      namespace: dagster
      baseUri: "https://dagster.instacart.com/graphql"
      authentication:
        type: bearer
        token: "$secrets.dagster_token"
      resources:
        - name: runs
          path: "/"
          operations:
            - name: get-run
              method: POST

Retrieves ETL pipeline run status from Dagster for Instacart data engineering, returning run status, materialized assets count, and execution duration.

naftiko: "0.5"
info:
  label: "Dagster ETL Pipeline Status"
  description: "Retrieves ETL pipeline run status from Dagster for Instacart data engineering, returning run status, materialized assets count, and execution duration."
  tags:
    - data-engineering
    - dagster
    - etl
capability:
  exposes:
    - type: mcp
      namespace: etl-pipelines
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Retrieve Dagster ETL pipeline run status."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The Dagster run ID."
          call: "dagster.get-run"
          with:
            run_id: "{{run_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.data.runOrError.status"
            - name: materialized_assets
              type: number
              mapping: "$.data.runOrError.assetMaterializations.length"
            - name: duration_seconds
              type: number
              mapping: "$.data.runOrError.stats.endTime"
  consumes:
    - type: http
      namespace: dagster
      baseUri: "https://dagster.instacart.com"
      authentication:
        type: bearer
        token: "$secrets.dagster_token"
      resources:
        - name: graphql
          path: "/graphql"
          operations:
            - name: get-run
              method: POST

Triggers a demand forecasting ML pipeline in Databricks for Instacart, returning run ID, forecasted order volume, and confidence interval.

naftiko: "0.5"
info:
  label: "Databricks Demand Forecasting Trigger"
  description: "Triggers a demand forecasting ML pipeline in Databricks for Instacart, returning run ID, forecasted order volume, and confidence interval."
  tags:
    - machine-learning
    - databricks
    - forecasting
capability:
  exposes:
    - type: mcp
      namespace: demand-forecasting
      port: 8080
      tools:
        - name: trigger-forecast
          description: "Trigger a demand forecasting pipeline in Databricks."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The delivery zone ID."
            - name: forecast_horizon
              in: body
              type: string
              description: "Forecast horizon in days."
          call: "databricks.run-job"
          with:
            zone_id: "{{zone_id}}"
            forecast_horizon: "{{forecast_horizon}}"
          outputParameters:
            - name: run_id
              type: string
              mapping: "$.run_id"
            - name: forecasted_volume
              type: number
              mapping: "$.output.forecasted_orders"
            - name: confidence_interval
              type: string
              mapping: "$.output.confidence_interval"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://instacart.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/run-now"
          operations:
            - name: run-job
              method: POST

Triggers a Databricks ML pipeline for demand forecasting model retraining.

naftiko: "0.5"
info:
  label: "Databricks ML Pipeline Trigger"
  description: "Triggers a Databricks ML pipeline for demand forecasting model retraining."
  tags:
    - data
    - analytics
    - databricks
capability:
  exposes:
    - type: mcp
      namespace: ml-pipelines
      port: 8080
      tools:
        - name: trigger-pipeline
          description: "Trigger a Databricks ML pipeline."
          inputParameters:
            - name: job_id
              in: body
              type: string
              description: "Databricks job ID."
          call: "databricks.run-job"
          with:
            job_id: "{{job_id}}"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://instacart.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/run-now"
          operations:
            - name: run-job
              method: POST

Queries Datadog for API endpoint latency metrics across Instacart services, returning p50, p95, p99 latency, and error count.

naftiko: "0.5"
info:
  label: "Datadog API Latency Monitor"
  description: "Queries Datadog for API endpoint latency metrics across Instacart services, returning p50, p95, p99 latency, and error count."
  tags:
    - monitoring
    - datadog
    - performance
capability:
  exposes:
    - type: mcp
      namespace: api-latency
      port: 8080
      tools:
        - name: get-latency-metrics
          description: "Retrieve API latency metrics from Datadog."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The service name."
            - name: endpoint
              in: body
              type: string
              description: "The API endpoint path."
          call: "datadog.query-metrics"
          with:
            service_name: "{{service_name}}"
            endpoint: "{{endpoint}}"
          outputParameters:
            - name: p50
              type: string
              mapping: "$.series[0].pointlist[0][1]"
            - name: p95
              type: string
              mapping: "$.series[1].pointlist[0][1]"
            - name: p99
              type: string
              mapping: "$.series[2].pointlist[0][1]"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query"
          operations:
            - name: query-metrics
              method: GET

Queries Datadog for infrastructure health metrics of Instacart's platform services.

naftiko: "0.5"
info:
  label: "Datadog Platform Health Monitor"
  description: "Queries Datadog for infrastructure health metrics of Instacart's platform services."
  tags:
    - it-operations
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: infra-monitoring
      port: 8080
      tools:
        - name: get-platform-health
          description: "Retrieve infrastructure health from Datadog."
          inputParameters:
            - name: service
              in: body
              type: string
              description: "Service name."
          call: "datadog.query-metrics"
          with:
            query: "avg:system.cpu.user{service:{{service}}}"
          outputParameters:
            - name: cpu_utilization
              type: string
              mapping: "$.series[0].pointlist[-1][1]"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        name: "DD-API-KEY"
        in: header
        value: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: query-metrics
              method: GET

Calculates the optimal delivery route for a shopper's batch of orders using Google Maps, returning distance, duration, and turn-by-turn directions.

naftiko: "0.5"
info:
  label: "Delivery Route Optimizer"
  description: "Calculates the optimal delivery route for a shopper's batch of orders using Google Maps, returning distance, duration, and turn-by-turn directions."
  tags:
    - logistics
    - ordering
    - google-maps
capability:
  exposes:
    - type: mcp
      namespace: delivery-routing
      port: 8080
      tools:
        - name: optimize-route
          description: "Calculate optimal delivery route for a batch of orders."
          inputParameters:
            - name: store_address
              in: body
              type: string
              description: "Store pickup address."
            - name: delivery_addresses
              in: body
              type: string
              description: "Pipe-separated delivery addresses."
          call: "gmaps.get-directions"
          with:
            origin: "{{store_address}}"
            waypoints: "{{delivery_addresses}}"
            optimize: "true"
          outputParameters:
            - name: total_distance
              type: string
              mapping: "$.routes[0].legs[-1].distance.text"
            - name: total_duration
              type: string
              mapping: "$.routes[0].legs[-1].duration.text"
            - name: optimized_order
              type: string
              mapping: "$.routes[0].waypoint_order"
  consumes:
    - type: http
      namespace: gmaps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: apiKey
        name: "key"
        in: query
        value: "$secrets.google_maps_api_key"
      resources:
        - name: directions
          path: "/directions/json"
          inputParameters:
            - name: origin
              in: query
            - name: waypoints
              in: query
            - name: optimize
              in: query
          operations:
            - name: get-directions
              method: GET

Manages delivery surge pricing by analyzing demand in Snowflake, calculating optimal surge multiplier, applying pricing updates, and notifying operations via Slack.

naftiko: "0.5"
info:
  label: "Delivery Surge Pricing Orchestrator"
  description: "Manages delivery surge pricing by analyzing demand in Snowflake, calculating optimal surge multiplier, applying pricing updates, and notifying operations via Slack."
  tags:
    - pricing
    - operations
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: surge-pricing
      port: 8080
      tools:
        - name: manage-surge
          description: "Calculate and apply delivery surge pricing."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The delivery zone ID."
          steps:
            - name: analyze-demand
              type: call
              call: "snowflake.query-demand"
              with:
                zone_id: "{{zone_id}}"
            - name: calculate-surge
              type: call
              call: "pricing-engine.calculate-surge"
              with:
                zone_id: "{{zone_id}}"
                demand_level: "{{analyze-demand.demand_index}}"
                shopper_supply: "{{analyze-demand.active_shoppers}}"
            - name: apply-pricing
              type: call
              call: "pricing-engine.apply-surge"
              with:
                zone_id: "{{zone_id}}"
                multiplier: "{{calculate-surge.multiplier}}"
            - name: notify-ops
              type: call
              call: "slack.post-message"
              with:
                channel: "ops-pricing"
                message: "Surge pricing applied to zone {{zone_id}}. Multiplier: {{calculate-surge.multiplier}}x. Demand index: {{analyze-demand.demand_index}}. Active shoppers: {{analyze-demand.active_shoppers}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://instacart.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-demand
              method: POST
    - type: http
      namespace: pricing-engine
      baseUri: "https://pricing.instacart.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.pricing_engine_token"
      resources:
        - name: surge
          path: "/surge/calculate"
          operations:
            - name: calculate-surge
              method: POST
        - name: apply
          path: "/surge/apply"
          operations:
            - name: apply-surge
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Optimizes delivery windows by analyzing historical delivery data in Snowflake, running the optimization model in Databricks, updating available windows in the scheduling service, and notifying the ops team via Slack.

naftiko: "0.5"
info:
  label: "Delivery Window Optimization Pipeline"
  description: "Optimizes delivery windows by analyzing historical delivery data in Snowflake, running the optimization model in Databricks, updating available windows in the scheduling service, and notifying the ops team via Slack."
  tags:
    - logistics
    - optimization
    - snowflake
    - databricks
    - slack
capability:
  exposes:
    - type: mcp
      namespace: delivery-windows
      port: 8080
      tools:
        - name: optimize-windows
          description: "Optimize delivery windows for a zone."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The delivery zone ID."
            - name: date
              in: body
              type: string
              description: "The target date."
          steps:
            - name: analyze-historical
              type: call
              call: "snowflake.query-delivery-history"
              with:
                zone_id: "{{zone_id}}"
            - name: run-optimization
              type: call
              call: "databricks.run-optimizer"
              with:
                zone_id: "{{zone_id}}"
                date: "{{date}}"
                avg_delivery_time: "{{analyze-historical.avg_delivery_time}}"
            - name: update-windows
              type: call
              call: "scheduling-service.update-windows"
              with:
                zone_id: "{{zone_id}}"
                date: "{{date}}"
                optimized_windows: "{{run-optimization.windows}}"
            - name: notify-ops
              type: call
              call: "slack.post-message"
              with:
                channel: "delivery-ops"
                message: "Delivery windows optimized for zone {{zone_id}} on {{date}}. Windows updated: {{update-windows.window_count}}. Expected improvement: {{run-optimization.improvement_pct}}%."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://instacart.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-delivery-history
              method: POST
    - type: http
      namespace: databricks
      baseUri: "https://instacart.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/run-now"
          operations:
            - name: run-optimizer
              method: POST
    - type: http
      namespace: scheduling-service
      baseUri: "https://scheduling.instacart.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.scheduling_token"
      resources:
        - name: windows
          path: "/windows/update"
          operations:
            - name: update-windows
              method: PUT
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves order detail records from DynamoDB for real-time order tracking.

naftiko: "0.5"
info:
  label: "DynamoDB Order Data Lookup"
  description: "Retrieves order detail records from DynamoDB for real-time order tracking."
  tags:
    - ordering
    - data
    - dynamodb
capability:
  exposes:
    - type: mcp
      namespace: order-data
      port: 8080
      tools:
        - name: get-order-record
          description: "Retrieve order details from DynamoDB."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "Order ID."
          call: "dynamodb.get-item"
          with:
            table: "Orders"
            key: "{{order_id}}"
          outputParameters:
            - name: order_details
              type: string
              mapping: "$.Item"
  consumes:
    - type: http
      namespace: dynamodb
      baseUri: "https://dynamodb.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_dynamodb_token"
      resources:
        - name: items
          path: "/"
          operations:
            - name: get-item
              method: POST

Retrieves shopper profile data from DynamoDB, returning shopper rating, total orders completed, active zones, and certification status.

naftiko: "0.5"
info:
  label: "DynamoDB Shopper Profile Lookup"
  description: "Retrieves shopper profile data from DynamoDB, returning shopper rating, total orders completed, active zones, and certification status."
  tags:
    - shopper-ops
    - dynamodb
capability:
  exposes:
    - type: mcp
      namespace: shopper-profiles
      port: 8080
      tools:
        - name: get-shopper-profile
          description: "Look up a shopper profile from DynamoDB."
          inputParameters:
            - name: shopper_id
              in: body
              type: string
              description: "The shopper ID."
          call: "dynamodb.get-item"
          with:
            shopper_id: "{{shopper_id}}"
          outputParameters:
            - name: rating
              type: string
              mapping: "$.Item.rating.N"
            - name: total_orders
              type: number
              mapping: "$.Item.total_orders.N"
            - name: active_zones
              type: string
              mapping: "$.Item.active_zones.SS"
            - name: certified
              type: string
              mapping: "$.Item.certified.BOOL"
  consumes:
    - type: http
      namespace: dynamodb
      baseUri: "https://dynamodb.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_dynamodb_token"
      resources:
        - name: items
          path: "/"
          operations:
            - name: get-item
              method: POST

Orchestrates EBT SNAP benefit payment processing for eligible grocery orders, handling item eligibility classification, balance checks, and split-tender transactions.

naftiko: "0.5"
info:
  label: "EBT SNAP Payment Processing Orchestrator"
  description: "Orchestrates EBT SNAP benefit payment processing for eligible grocery orders, handling item eligibility classification, balance checks, and split-tender transactions."
  tags:
    - payments
    - ebt-snap
    - government-benefits
capability:
  exposes:
    - type: mcp
      namespace: ebt-payment
      port: 8080
      tools:
        - name: process-ebt-payment
          description: "Process an EBT SNAP payment for eligible grocery items."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The order identifier."
            - name: ebt_card_token
              in: body
              type: string
              description: "Tokenized EBT card reference."
          call: "payments-api.process-ebt"
          with:
            order: "{{order_id}}"
            card_token: "{{ebt_card_token}}"
          outputParameters:
            - name: snap_eligible_amount
              type: number
              mapping: "$.payment.snapEligibleAmount"
            - name: remaining_balance
              type: number
              mapping: "$.payment.remainingBalance"
            - name: non_snap_amount
              type: number
              mapping: "$.payment.nonSnapAmount"
  consumes:
    - type: http
      namespace: payments-api
      baseUri: "https://api.instacart.com/payments/v1"
      authentication:
        type: bearer
        token: "$secrets.instacart_payments_token"
      resources:
        - name: ebt-transactions
          path: "/orders/{{order}}/ebt-payment"
          inputParameters:
            - name: order
              in: path
          operations:
            - name: process-ebt
              method: POST

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a Google Drive folder, and sends a Slack welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a Google Drive folder, and sends a Slack welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - google-drive
    - slack
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Orchestrate onboarding for a new Instacart employee."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
            - name: department
              in: body
              type: string
              description: "Department."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{worker_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Onboarding: {{get-employee.full_name}} - {{department}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
            - name: create-folder
              type: call
              call: "gdrive.create-folder"
              with:
                name: "{{get-employee.full_name}}_{{start_date}}"
                parent_folder: "onboarding_docs"
            - name: send-welcome
              type: call
              call: "slack.post-message"
              with:
                channel: "new-hires"
                text: "Welcome to Instacart, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Docs folder: {{create-folder.url}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://instacart.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: gdrive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves custom audience details from Facebook Ads for Instacart marketing, returning audience name, size, match rate, and creation date.

naftiko: "0.5"
info:
  label: "Facebook Ads Audience Builder"
  description: "Retrieves custom audience details from Facebook Ads for Instacart marketing, returning audience name, size, match rate, and creation date."
  tags:
    - marketing
    - facebook-ads
    - advertising
capability:
  exposes:
    - type: mcp
      namespace: ad-audiences
      port: 8080
      tools:
        - name: get-audience
          description: "Retrieve a Facebook custom audience."
          inputParameters:
            - name: audience_id
              in: body
              type: string
              description: "The Facebook audience ID."
          call: "facebook.get-audience"
          with:
            audience_id: "{{audience_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: approximate_count
              type: number
              mapping: "$.approximate_count"
            - name: delivery_status
              type: string
              mapping: "$.delivery_status.status"
  consumes:
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v17.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_ads_token"
      resources:
        - name: audiences
          path: "/{{audience_id}}"
          inputParameters:
            - name: audience_id
              in: path
          operations:
            - name: get-audience
              method: GET

Pulls campaign performance data from Facebook Ads for Instacart user acquisition campaigns.

naftiko: "0.5"
info:
  label: "Facebook Advertising Campaign Reporter"
  description: "Pulls campaign performance data from Facebook Ads for Instacart user acquisition campaigns."
  tags:
    - advertising
    - marketing
    - facebook
capability:
  exposes:
    - type: mcp
      namespace: fb-campaigns
      port: 8080
      tools:
        - name: get-fb-campaign
          description: "Retrieve Facebook Ads campaign metrics."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "Facebook Ads campaign ID."
          call: "facebook.get-insights"
          with:
            campaign_id: "{{campaign_id}}"
          outputParameters:
            - name: impressions
              type: string
              mapping: "$.data[0].impressions"
            - name: clicks
              type: string
              mapping: "$.data[0].clicks"
            - name: spend
              type: string
              mapping: "$.data[0].spend"
            - name: installs
              type: string
              mapping: "$.data[0].actions[0].value"
  consumes:
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v17.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_ads_token"
      resources:
        - name: insights
          path: "/{{campaign_id}}/insights"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-insights
              method: GET

Retrieves a Figma design file's metadata and component information for the Instacart design system.

naftiko: "0.5"
info:
  label: "Figma Design Asset Retriever"
  description: "Retrieves a Figma design file's metadata and component information for the Instacart design system."
  tags:
    - design
    - figma
capability:
  exposes:
    - type: mcp
      namespace: design-assets
      port: 8080
      tools:
        - name: get-figma-file
          description: "Retrieve Figma design file metadata."
          inputParameters:
            - name: file_key
              in: body
              type: string
              description: "Figma file key."
          call: "figma.get-file"
          with:
            file_key: "{{file_key}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: last_modified
              type: string
              mapping: "$.lastModified"
            - name: version
              type: string
              mapping: "$.version"
  consumes:
    - type: http
      namespace: figma
      baseUri: "https://api.figma.com/v1"
      authentication:
        type: bearer
        token: "$secrets.figma_token"
      resources:
        - name: files
          path: "/files/{{file_key}}"
          inputParameters:
            - name: file_key
              in: path
          operations:
            - name: get-file
              method: GET

Retrieves design component details from Figma for Instacart UI design system, returning component name, variant count, and last updated timestamp.

naftiko: "0.5"
info:
  label: "Figma Design Component Status"
  description: "Retrieves design component details from Figma for Instacart UI design system, returning component name, variant count, and last updated timestamp."
  tags:
    - design
    - figma
capability:
  exposes:
    - type: mcp
      namespace: design-system
      port: 8080
      tools:
        - name: get-component
          description: "Retrieve a Figma design component status."
          inputParameters:
            - name: file_key
              in: body
              type: string
              description: "The Figma file key."
            - name: component_id
              in: body
              type: string
              description: "The component node ID."
          call: "figma.get-component"
          with:
            file_key: "{{file_key}}"
            component_id: "{{component_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.meta.name"
            - name: variant_count
              type: number
              mapping: "$.meta.containing_frame.containingStateGroup.states.length"
            - name: last_updated
              type: string
              mapping: "$.meta.updated_at"
  consumes:
    - type: http
      namespace: figma
      baseUri: "https://api.figma.com/v1"
      authentication:
        type: bearer
        token: "$secrets.figma_token"
      resources:
        - name: components
          path: "/files/{{file_key}}/nodes?ids={{component_id}}"
          inputParameters:
            - name: file_key
              in: path
            - name: component_id
              in: query
          operations:
            - name: get-component
              method: GET

Scores fresh produce quality based on shopper-submitted photos and AI analysis, ensuring customers receive items meeting freshness standards before delivery confirmation.

naftiko: "0.5"
info:
  label: "Fresh Produce Quality Scoring Pipeline"
  description: "Scores fresh produce quality based on shopper-submitted photos and AI analysis, ensuring customers receive items meeting freshness standards before delivery confirmation."
  tags:
    - quality-assurance
    - produce
    - ai-scoring
capability:
  exposes:
    - type: mcp
      namespace: produce-quality
      port: 8080
      tools:
        - name: score-produce-quality
          description: "Score the quality of fresh produce from a shopper photo submission."
          inputParameters:
            - name: order_item_id
              in: body
              type: string
              description: "The order line item identifier."
            - name: photo_url
              in: body
              type: string
              description: "URL of the shopper-submitted produce photo."
          call: "quality-api.score-produce"
          with:
            item: "{{order_item_id}}"
            photo: "{{photo_url}}"
          outputParameters:
            - name: quality_score
              type: number
              mapping: "$.scoring.qualityScore"
            - name: freshness_grade
              type: string
              mapping: "$.scoring.freshnessGrade"
            - name: replacement_recommended
              type: boolean
              mapping: "$.scoring.replacementRecommended"
  consumes:
    - type: http
      namespace: quality-api
      baseUri: "https://api.instacart.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.instacart_quality_token"
      resources:
        - name: produce-scores
          path: "/produce-scoring"
          operations:
            - name: score-produce
              method: POST

Retrieves customer health score from Gainsight for Instacart enterprise retailer accounts, returning health score, risk level, and engagement trend.

naftiko: "0.5"
info:
  label: "Gainsight Customer Health Monitor"
  description: "Retrieves customer health score from Gainsight for Instacart enterprise retailer accounts, returning health score, risk level, and engagement trend."
  tags:
    - customer-success
    - gainsight
capability:
  exposes:
    - type: mcp
      namespace: customer-health
      port: 8080
      tools:
        - name: get-health-score
          description: "Retrieve customer health score from Gainsight."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Gainsight account ID."
          call: "gainsight.get-scorecard"
          with:
            account_id: "{{account_id}}"
          outputParameters:
            - name: health_score
              type: number
              mapping: "$.data.overallScore"
            - name: risk_level
              type: string
              mapping: "$.data.riskLevel"
            - name: trend
              type: string
              mapping: "$.data.trend"
  consumes:
    - type: http
      namespace: gainsight
      baseUri: "https://instacart.gainsightcloud.com/v1"
      authentication:
        type: bearer
        token: "$secrets.gainsight_token"
      resources:
        - name: scorecards
          path: "/accounts/{{account_id}}/scorecard"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-scorecard
              method: GET

Retrieves customer health scores from Gainsight for enterprise retail partners.

naftiko: "0.5"
info:
  label: "Gainsight Customer Health Score"
  description: "Retrieves customer health scores from Gainsight for enterprise retail partners."
  tags:
    - customer-service
    - analytics
    - gainsight
capability:
  exposes:
    - type: mcp
      namespace: customer-health
      port: 8080
      tools:
        - name: get-health-score
          description: "Retrieve customer health score from Gainsight."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "Gainsight account ID."
          call: "gainsight.get-score"
          with:
            account_id: "{{account_id}}"
          outputParameters:
            - name: health_score
              type: string
              mapping: "$.healthScore"
            - name: trend
              type: string
              mapping: "$.trend"
  consumes:
    - type: http
      namespace: gainsight
      baseUri: "https://instacart.gainsightcloud.com/v1"
      authentication:
        type: bearer
        token: "$secrets.gainsight_token"
      resources:
        - name: scores
          path: "/accounts/{{account_id}}/health"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-score
              method: GET

Monitors GitHub Actions CI pipeline status for Instacart repositories, returning workflow name, conclusion, duration, and triggered by.

naftiko: "0.5"
info:
  label: "GitHub Actions CI Pipeline Monitor"
  description: "Monitors GitHub Actions CI pipeline status for Instacart repositories, returning workflow name, conclusion, duration, and triggered by."
  tags:
    - development
    - github-actions
    - ci-cd
capability:
  exposes:
    - type: mcp
      namespace: ci-pipeline
      port: 8080
      tools:
        - name: get-workflow-run
          description: "Monitor a GitHub Actions workflow run."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "The repository name."
            - name: run_id
              in: body
              type: string
              description: "The workflow run ID."
          call: "github.get-run"
          with:
            repo: "{{repo}}"
            run_id: "{{run_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: conclusion
              type: string
              mapping: "$.conclusion"
            - name: duration
              type: string
              mapping: "$.run_duration_ms"
            - name: triggered_by
              type: string
              mapping: "$.triggering_actor.login"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: runs
          path: "/repos/instacart/{{repo}}/actions/runs/{{run_id}}"
          inputParameters:
            - name: repo
              in: path
            - name: run_id
              in: path
          operations:
            - name: get-run
              method: GET

Triggers a GitHub Actions deployment workflow for an Instacart service.

naftiko: "0.5"
info:
  label: "GitHub Actions Deployment Trigger"
  description: "Triggers a GitHub Actions deployment workflow for an Instacart service."
  tags:
    - it-operations
    - cicd
    - github-actions
capability:
  exposes:
    - type: mcp
      namespace: deployments
      port: 8080
      tools:
        - name: trigger-deployment
          description: "Trigger a GitHub Actions deployment."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "GitHub repository."
            - name: workflow_id
              in: body
              type: string
              description: "Workflow ID."
            - name: ref
              in: body
              type: string
              description: "Git ref."
          call: "github.trigger-workflow"
          with:
            repo: "{{repo}}"
            workflow_id: "{{workflow_id}}"
            ref: "{{ref}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflows
          path: "/repos/{{repo}}/actions/workflows/{{workflow_id}}/dispatches"
          inputParameters:
            - name: repo
              in: path
            - name: workflow_id
              in: path
          operations:
            - name: trigger-workflow
              method: POST

Sends a transactional email to an Instacart customer via Gmail API.

naftiko: "0.5"
info:
  label: "Gmail Customer Notification Sender"
  description: "Sends a transactional email to an Instacart customer via Gmail API."
  tags:
    - communications
    - customer-service
    - gmail
capability:
  exposes:
    - type: mcp
      namespace: customer-email
      port: 8080
      tools:
        - name: send-customer-email
          description: "Send a transactional email to a customer."
          inputParameters:
            - name: to_email
              in: body
              type: string
              description: "Recipient email."
            - name: subject
              in: body
              type: string
              description: "Email subject."
            - name: body
              in: body
              type: string
              description: "Email body."
          call: "gmail.send-email"
          with:
            to: "{{to_email}}"
            subject: "{{subject}}"
            body: "{{body}}"
  consumes:
    - type: http
      namespace: gmail
      baseUri: "https://gmail.googleapis.com/gmail/v1"
      authentication:
        type: bearer
        token: "$secrets.gmail_token"
      resources:
        - name: messages
          path: "/users/me/messages/send"
          operations:
            - name: send-email
              method: POST

Retrieves Google Ads campaign performance for Instacart search and shopping ads.

naftiko: "0.5"
info:
  label: "Google Ads Campaign Performance Tracker"
  description: "Retrieves Google Ads campaign performance for Instacart search and shopping ads."
  tags:
    - advertising
    - marketing
    - google-ads
capability:
  exposes:
    - type: mcp
      namespace: google-ads
      port: 8080
      tools:
        - name: get-google-campaign
          description: "Retrieve Google Ads campaign metrics."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Google Ads customer ID."
            - name: campaign_id
              in: body
              type: string
              description: "Campaign ID."
          call: "googleads.get-campaign"
          with:
            customer_id: "{{customer_id}}"
            campaign_id: "{{campaign_id}}"
          outputParameters:
            - name: impressions
              type: string
              mapping: "$.results[0].metrics.impressions"
            - name: clicks
              type: string
              mapping: "$.results[0].metrics.clicks"
            - name: cost
              type: string
              mapping: "$.results[0].metrics.costMicros"
  consumes:
    - type: http
      namespace: googleads
      baseUri: "https://googleads.googleapis.com/v14"
      authentication:
        type: bearer
        token: "$secrets.google_ads_token"
      resources:
        - name: campaigns
          path: "/customers/{{customer_id}}/googleAds:searchStream"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-campaign
              method: POST

Retrieves keyword performance data from Google Ads for Instacart campaigns, returning impressions, clicks, cost per click, and conversion rate.

naftiko: "0.5"
info:
  label: "Google Ads Keyword Performance"
  description: "Retrieves keyword performance data from Google Ads for Instacart campaigns, returning impressions, clicks, cost per click, and conversion rate."
  tags:
    - marketing
    - google-ads
    - advertising
capability:
  exposes:
    - type: mcp
      namespace: ad-keywords
      port: 8080
      tools:
        - name: get-keyword-performance
          description: "Retrieve Google Ads keyword performance metrics."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The Google Ads campaign ID."
          call: "googleads.get-keywords"
          with:
            campaign_id: "{{campaign_id}}"
          outputParameters:
            - name: impressions
              type: number
              mapping: "$.results[0].metrics.impressions"
            - name: clicks
              type: number
              mapping: "$.results[0].metrics.clicks"
            - name: cpc
              type: string
              mapping: "$.results[0].metrics.averageCpc"
            - name: conversion_rate
              type: string
              mapping: "$.results[0].metrics.conversionsRate"
  consumes:
    - type: http
      namespace: googleads
      baseUri: "https://googleads.googleapis.com/v14"
      authentication:
        type: bearer
        token: "$secrets.google_ads_token"
      resources:
        - name: reports
          path: "/customers/{{customer_id}}/googleAds:searchStream"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-keywords
              method: POST

Retrieves app and web traffic metrics from Google Analytics for Instacart's consumer platform.

naftiko: "0.5"
info:
  label: "Google Analytics App Traffic Reporter"
  description: "Retrieves app and web traffic metrics from Google Analytics for Instacart's consumer platform."
  tags:
    - marketing
    - analytics
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: app-analytics
      port: 8080
      tools:
        - name: get-traffic-metrics
          description: "Get app/web traffic from Google Analytics."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "GA property ID."
            - name: date_range
              in: body
              type: string
              description: "Date range."
          call: "ga.get-report"
          with:
            property_id: "{{property_id}}"
            date_range: "{{date_range}}"
          outputParameters:
            - name: active_users
              type: string
              mapping: "$.rows[0].metricValues[0].value"
            - name: sessions
              type: string
              mapping: "$.rows[0].metricValues[1].value"
            - name: conversion_rate
              type: string
              mapping: "$.rows[0].metricValues[2].value"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: get-report
              method: POST

Retrieves checkout funnel conversion data from Google Analytics for Instacart web and mobile, returning step-by-step conversion rates and drop-off points.

naftiko: "0.5"
info:
  label: "Google Analytics Funnel Report"
  description: "Retrieves checkout funnel conversion data from Google Analytics for Instacart web and mobile, returning step-by-step conversion rates and drop-off points."
  tags:
    - analytics
    - google-analytics
    - conversion
capability:
  exposes:
    - type: mcp
      namespace: funnel-analytics
      port: 8080
      tools:
        - name: get-funnel-report
          description: "Retrieve checkout funnel data from Google Analytics."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "The GA4 property ID."
          call: "ga4.run-funnel-report"
          with:
            property_id: "{{property_id}}"
          outputParameters:
            - name: total_sessions
              type: number
              mapping: "$.funnelTable.funnelStepRows[0].totalSessions"
            - name: completion_rate
              type: string
              mapping: "$.funnelTable.completionRate"
            - name: top_dropoff_step
              type: string
              mapping: "$.funnelTable.topDropoffStep"
  consumes:
    - type: http
      namespace: ga4
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_api_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runFunnelReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-funnel-report
              method: POST

Searches for documents in Instacart's shared Google Drive.

naftiko: "0.5"
info:
  label: "Google Drive Document Finder"
  description: "Searches for documents in Instacart's shared Google Drive."
  tags:
    - documents
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: gdrive-search
      port: 8080
      tools:
        - name: search-docs
          description: "Search for documents in Google Drive."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "Search query."
          call: "gdrive.search-files"
          with:
            query: "{{search_query}}"
          outputParameters:
            - name: files
              type: string
              mapping: "$.files"
  consumes:
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files"
          inputParameters:
            - name: q
              in: query
              value: "name contains '{{query}}'"
          operations:
            - name: search-files
              method: GET

Logs daily operations metrics to a Google Sheet for operational dashboards.

naftiko: "0.5"
info:
  label: "Google Sheets Operations Report Logger"
  description: "Logs daily operations metrics to a Google Sheet for operational dashboards."
  tags:
    - operations
    - reporting
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: ops-reporting
      port: 8080
      tools:
        - name: log-daily-metrics
          description: "Log daily operations metrics to Google Sheets."
          inputParameters:
            - name: date
              in: body
              type: string
              description: "Date YYYY-MM-DD."
            - name: market
              in: body
              type: string
              description: "Market name."
            - name: orders
              in: body
              type: string
              description: "Total orders."
            - name: avg_delivery_time
              in: body
              type: string
              description: "Average delivery time in minutes."
          call: "gsheets.append-row"
          with:
            spreadsheet_id: "ops_daily_metrics"
            range: "Daily!A:D"
            values: "{{date}},{{market}},{{orders}},{{avg_delivery_time}}"
  consumes:
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: spreadsheets
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-row
              method: POST

Searches Google Workspace for documents across Instacart shared drives, returning file name, owner, last modified date, and sharing permissions.

naftiko: "0.5"
info:
  label: "Google Workspace Document Finder"
  description: "Searches Google Workspace for documents across Instacart shared drives, returning file name, owner, last modified date, and sharing permissions."
  tags:
    - collaboration
    - google-workspace
capability:
  exposes:
    - type: mcp
      namespace: document-search
      port: 8080
      tools:
        - name: find-document
          description: "Search for documents in Google Workspace."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query."
          call: "gdrive.search-files"
          with:
            query: "{{query}}"
          outputParameters:
            - name: file_name
              type: string
              mapping: "$.files[0].name"
            - name: owner
              type: string
              mapping: "$.files[0].owners[0].displayName"
            - name: last_modified
              type: string
              mapping: "$.files[0].modifiedTime"
  consumes:
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files?q={{query}}"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search-files
              method: GET

Compares grocery item prices across multiple retailer partners in a customer's delivery zone, highlighting best deals and price-per-unit calculations.

naftiko: "0.5"
info:
  label: "Grocery Price Comparison Engine"
  description: "Compares grocery item prices across multiple retailer partners in a customer's delivery zone, highlighting best deals and price-per-unit calculations."
  tags:
    - pricing
    - retailer-comparison
    - grocery
capability:
  exposes:
    - type: mcp
      namespace: price-comparison
      port: 8080
      tools:
        - name: compare-grocery-prices
          description: "Compare prices for a grocery item across available retailers."
          inputParameters:
            - name: product_upc
              in: body
              type: string
              description: "The product UPC barcode."
            - name: zip_code
              in: body
              type: string
              description: "Customer delivery zip code."
          call: "catalog-api.compare-prices"
          with:
            upc: "{{product_upc}}"
            zip: "{{zip_code}}"
          outputParameters:
            - name: retailer_prices
              type: array
              mapping: "$.comparison.retailerPrices"
            - name: lowest_price
              type: number
              mapping: "$.comparison.lowestPrice"
            - name: price_per_unit
              type: number
              mapping: "$.comparison.pricePerUnit"
  consumes:
    - type: http
      namespace: catalog-api
      baseUri: "https://api.instacart.com/catalog/v1"
      authentication:
        type: bearer
        token: "$secrets.instacart_catalog_token"
      resources:
        - name: price-comparisons
          path: "/products/{{upc}}/price-comparisons"
          inputParameters:
            - name: upc
              in: path
          operations:
            - name: compare-prices
              method: GET

Generates itemized expense reports for Instacart Business accounts, categorizing purchases by department, cost center, and tax-deductible status for corporate procurement.

naftiko: "0.5"
info:
  label: "Instacart Business Expense Report Generator"
  description: "Generates itemized expense reports for Instacart Business accounts, categorizing purchases by department, cost center, and tax-deductible status for corporate procurement."
  tags:
    - business-accounts
    - expense-reporting
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: business-expenses
      port: 8080
      tools:
        - name: generate-expense-report
          description: "Generate an expense report for an Instacart Business account."
          inputParameters:
            - name: business_account_id
              in: body
              type: string
              description: "The Instacart Business account identifier."
            - name: date_range_start
              in: body
              type: string
              description: "Report start date in YYYY-MM-DD format."
            - name: date_range_end
              in: body
              type: string
              description: "Report end date in YYYY-MM-DD format."
          call: "business-api.generate-report"
          with:
            account: "{{business_account_id}}"
            start: "{{date_range_start}}"
            end: "{{date_range_end}}"
          outputParameters:
            - name: total_spend
              type: number
              mapping: "$.report.totalSpend"
            - name: department_breakdown
              type: array
              mapping: "$.report.departmentBreakdown"
            - name: report_download_url
              type: string
              mapping: "$.report.downloadUrl"
  consumes:
    - type: http
      namespace: business-api
      baseUri: "https://api.instacart.com/business/v1"
      authentication:
        type: bearer
        token: "$secrets.instacart_business_token"
      resources:
        - name: expense-reports
          path: "/accounts/{{account}}/expense-reports"
          inputParameters:
            - name: account
              in: path
          operations:
            - name: generate-report
              method: POST

Retrieves bug issue details from Jira for Instacart engineering, returning issue summary, priority, status, and assigned developer.

naftiko: "0.5"
info:
  label: "Jira Bug Tracking Lookup"
  description: "Retrieves bug issue details from Jira for Instacart engineering, returning issue summary, priority, status, and assigned developer."
  tags:
    - development
    - jira
    - bug-tracking
capability:
  exposes:
    - type: mcp
      namespace: bug-tracking
      port: 8080
      tools:
        - name: get-bug
          description: "Look up a bug issue in Jira."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key (e.g. IC-1234)."
          call: "jira.get-issue"
          with:
            issue_key: "{{issue_key}}"
          outputParameters:
            - name: summary
              type: string
              mapping: "$.fields.summary"
            - name: priority
              type: string
              mapping: "$.fields.priority.name"
            - name: status
              type: string
              mapping: "$.fields.status.name"
            - name: assignee
              type: string
              mapping: "$.fields.assignee.displayName"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://instacart.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: get-issue
              method: GET

Retrieves current sprint issues from Jira for an Instacart engineering team.

naftiko: "0.5"
info:
  label: "Jira Sprint Issue Tracker"
  description: "Retrieves current sprint issues from Jira for an Instacart engineering team."
  tags:
    - engineering
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: sprint-tracker
      port: 8080
      tools:
        - name: get-sprint-issues
          description: "Retrieve current sprint issues from Jira."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "Jira board ID."
          call: "jira.get-sprint"
          with:
            board_id: "{{board_id}}"
          outputParameters:
            - name: issues
              type: string
              mapping: "$.issues"
            - name: total_issues
              type: string
              mapping: "$.total"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://instacart.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"
          inputParameters:
            - name: board_id
              in: path
            - name: state
              in: query
              value: "active"
          operations:
            - name: get-sprint
              method: GET

Creates a job posting on LinkedIn from Workday requisition data and notifies recruiters via Slack.

naftiko: "0.5"
info:
  label: "LinkedIn Job Posting Publisher"
  description: "Creates a job posting on LinkedIn from Workday requisition data and notifies recruiters via Slack."
  tags:
    - hr
    - recruiting
    - linkedin
    - workday
    - slack
capability:
  exposes:
    - type: mcp
      namespace: job-posting
      port: 8080
      tools:
        - name: publish-job
          description: "Publish a Workday requisition to LinkedIn."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "Workday requisition ID."
          steps:
            - name: get-req
              type: call
              call: "workday.get-requisition"
              with:
                requisition_id: "{{requisition_id}}"
            - name: post-job
              type: call
              call: "linkedin.create-job"
              with:
                title: "{{get-req.job_title}}"
                description: "{{get-req.job_description}}"
                location: "{{get-req.location}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "recruiting"
                text: "Job posted: {{get-req.job_title}} in {{get-req.location}}. LinkedIn: {{post-job.job_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/recruiting/v1/jobRequisitions/{{requisition_id}}"
          inputParameters:
            - name: requisition_id
              in: path
          operations:
            - name: get-requisition
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: jobs
          path: "/simpleJobPostings"
          operations:
            - name: create-job
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves data from a Looker dashboard for Instacart business intelligence.

naftiko: "0.5"
info:
  label: "Looker Dashboard Data Retriever"
  description: "Retrieves data from a Looker dashboard for Instacart business intelligence."
  tags:
    - analytics
    - reporting
    - looker
capability:
  exposes:
    - type: mcp
      namespace: bi-dashboards
      port: 8080
      tools:
        - name: get-dashboard-data
          description: "Retrieve data from a Looker dashboard."
          inputParameters:
            - name: dashboard_id
              in: body
              type: string
              description: "Looker dashboard ID."
          call: "looker.get-dashboard"
          with:
            dashboard_id: "{{dashboard_id}}"
          outputParameters:
            - name: elements
              type: string
              mapping: "$.dashboard_elements"
  consumes:
    - type: http
      namespace: looker
      baseUri: "https://instacart.cloud.looker.com/api/4.0"
      authentication:
        type: bearer
        token: "$secrets.looker_token"
      resources:
        - name: dashboards
          path: "/dashboards/{{dashboard_id}}"
          inputParameters:
            - name: dashboard_id
              in: path
          operations:
            - name: get-dashboard
              method: GET

Retrieves executive dashboard data from Looker, returning GMV, active customers, order count, and average basket size for Instacart business reporting.

naftiko: "0.5"
info:
  label: "Looker Executive Dashboard Retriever"
  description: "Retrieves executive dashboard data from Looker, returning GMV, active customers, order count, and average basket size for Instacart business reporting."
  tags:
    - analytics
    - looker
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: executive-dashboard
      port: 8080
      tools:
        - name: get-dashboard-data
          description: "Retrieve executive dashboard data from Looker."
          inputParameters:
            - name: dashboard_id
              in: body
              type: string
              description: "The Looker dashboard ID."
          call: "looker.get-dashboard"
          with:
            dashboard_id: "{{dashboard_id}}"
          outputParameters:
            - name: gmv
              type: string
              mapping: "$.elements[0].data.gmv"
            - name: active_customers
              type: number
              mapping: "$.elements[0].data.active_customers"
            - name: order_count
              type: number
              mapping: "$.elements[0].data.order_count"
            - name: avg_basket
              type: string
              mapping: "$.elements[0].data.avg_basket_size"
  consumes:
    - type: http
      namespace: looker
      baseUri: "https://instacart.cloud.looker.com/api/4.0"
      authentication:
        type: bearer
        token: "$secrets.looker_token"
      resources:
        - name: dashboards
          path: "/dashboards/{{dashboard_id}}"
          inputParameters:
            - name: dashboard_id
              in: path
          operations:
            - name: get-dashboard
              method: GET

Triggers an n8n automation workflow for Instacart data synchronization tasks, returning workflow execution ID, status, and output summary.

naftiko: "0.5"
info:
  label: "n8n Data Sync Workflow Trigger"
  description: "Triggers an n8n automation workflow for Instacart data synchronization tasks, returning workflow execution ID, status, and output summary."
  tags:
    - automation
    - n8n
    - integration
capability:
  exposes:
    - type: mcp
      namespace: data-sync
      port: 8080
      tools:
        - name: trigger-sync
          description: "Trigger an n8n data sync workflow."
          inputParameters:
            - name: workflow_id
              in: body
              type: string
              description: "The n8n workflow ID."
          call: "n8n.execute-workflow"
          with:
            workflow_id: "{{workflow_id}}"
          outputParameters:
            - name: execution_id
              type: string
              mapping: "$.data.executionId"
            - name: status
              type: string
              mapping: "$.data.status"
  consumes:
    - type: http
      namespace: n8n
      baseUri: "https://n8n.instacart.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.n8n_api_key"
      resources:
        - name: workflows
          path: "/workflows/{{workflow_id}}/execute"
          inputParameters:
            - name: workflow_id
              in: path
          operations:
            - name: execute-workflow
              method: POST

Triggers an n8n workflow for custom Instacart automations.

naftiko: "0.5"
info:
  label: "n8n Workflow Automation Trigger"
  description: "Triggers an n8n workflow for custom Instacart automations."
  tags:
    - automation
    - n8n
capability:
  exposes:
    - type: mcp
      namespace: workflow-automation
      port: 8080
      tools:
        - name: trigger-workflow
          description: "Trigger an n8n workflow."
          inputParameters:
            - name: webhook_path
              in: body
              type: string
              description: "n8n webhook path."
            - name: payload
              in: body
              type: string
              description: "JSON payload."
          call: "n8n.trigger-webhook"
          with:
            path: "{{webhook_path}}"
            payload: "{{payload}}"
  consumes:
    - type: http
      namespace: n8n
      baseUri: "https://n8n.instacart.com/webhook"
      authentication:
        type: bearer
        token: "$secrets.n8n_token"
      resources:
        - name: webhooks
          path: "/{{path}}"
          inputParameters:
            - name: path
              in: path
          operations:
            - name: trigger-webhook
              method: POST

Orchestrates onboarding of a new retail partner by creating the account in Salesforce, setting up inventory sync via Shopify, configuring the store catalog, and notifying the partnerships team via Slack.

naftiko: "0.5"
info:
  label: "New Retailer Onboarding Orchestrator"
  description: "Orchestrates onboarding of a new retail partner by creating the account in Salesforce, setting up inventory sync via Shopify, configuring the store catalog, and notifying the partnerships team via Slack."
  tags:
    - partnerships
    - onboarding
    - salesforce
    - shopify
    - slack
capability:
  exposes:
    - type: mcp
      namespace: retailer-onboarding
      port: 8080
      tools:
        - name: onboard-retailer
          description: "Orchestrate new retailer partner onboarding."
          inputParameters:
            - name: retailer_name
              in: body
              type: string
              description: "The retailer name."
            - name: store_count
              in: body
              type: number
              description: "Number of stores."
            - name: contact_email
              in: body
              type: string
              description: "Primary contact email."
          steps:
            - name: create-account
              type: call
              call: "salesforce.create-account"
              with:
                name: "{{retailer_name}}"
                store_count: "{{store_count}}"
                contact_email: "{{contact_email}}"
            - name: setup-inventory-sync
              type: call
              call: "shopify.create-connection"
              with:
                retailer_id: "{{create-account.account_id}}"
                retailer_name: "{{retailer_name}}"
            - name: configure-catalog
              type: call
              call: "catalog-service.initialize"
              with:
                retailer_id: "{{create-account.account_id}}"
                store_count: "{{store_count}}"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "partnerships"
                message: "New retailer onboarded: {{retailer_name}} ({{store_count}} stores). Account: {{create-account.account_id}}. Inventory sync: {{setup-inventory-sync.status}}. Catalog: {{configure-catalog.status}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://instacart.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: create-account
              method: POST
    - type: http
      namespace: shopify
      baseUri: "https://instacart-partner.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: connections
          path: "/webhooks.json"
          operations:
            - name: create-connection
              method: POST
    - type: http
      namespace: catalog-service
      baseUri: "https://catalog.instacart.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.catalog_token"
      resources:
        - name: catalogs
          path: "/initialize"
          operations:
            - name: initialize
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Creates a journal entry in Oracle Financials for Instacart financial accounting.

naftiko: "0.5"
info:
  label: "Oracle Financials Journal Entry Creator"
  description: "Creates a journal entry in Oracle Financials for Instacart financial accounting."
  tags:
    - finance
    - accounting
    - oracle-financials
capability:
  exposes:
    - type: mcp
      namespace: finance-gl
      port: 8080
      tools:
        - name: create-journal
          description: "Create a GL journal entry in Oracle Financials."
          inputParameters:
            - name: ledger_name
              in: body
              type: string
              description: "Ledger name."
            - name: journal_lines
              in: body
              type: string
              description: "JSON line items."
          call: "oracle-financials.create-journal"
          with:
            ledger_name: "{{ledger_name}}"
            journal_lines: "{{journal_lines}}"
  consumes:
    - type: http
      namespace: oracle-financials
      baseUri: "https://instacart.oraclecloud.com/fscmRestApi/resources/v2"
      authentication:
        type: bearer
        token: "$secrets.oracle_cloud_token"
      resources:
        - name: journals
          path: "/generalAccountingJournals"
          operations:
            - name: create-journal
              method: POST

Retrieves revenue recognition data from Oracle Financials, returning recognized revenue, deferred revenue, and recognition schedule for Instacart accounting.

naftiko: "0.5"
info:
  label: "Oracle Financials Revenue Recognition"
  description: "Retrieves revenue recognition data from Oracle Financials, returning recognized revenue, deferred revenue, and recognition schedule for Instacart accounting."
  tags:
    - finance
    - oracle-financials
    - accounting
capability:
  exposes:
    - type: mcp
      namespace: revenue-recognition
      port: 8080
      tools:
        - name: get-revenue-data
          description: "Retrieve revenue recognition data from Oracle Financials."
          inputParameters:
            - name: period
              in: body
              type: string
              description: "The accounting period."
          call: "oracle.get-revenue"
          with:
            period: "{{period}}"
          outputParameters:
            - name: recognized_revenue
              type: string
              mapping: "$.items[0].recognizedAmount"
            - name: deferred_revenue
              type: string
              mapping: "$.items[0].deferredAmount"
            - name: schedule
              type: string
              mapping: "$.items[0].recognitionSchedule"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://instacart.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_financials_token"
      resources:
        - name: revenue
          path: "/revenueRecognition?q=Period={{period}}"
          inputParameters:
            - name: period
              in: query
          operations:
            - name: get-revenue
              method: GET

Resolves order issues by retrieving order details from Salesforce, processing the refund or replacement via Stripe, updating the customer record, and notifying support via Slack.

naftiko: "0.5"
info:
  label: "Order Issue Resolution Pipeline"
  description: "Resolves order issues by retrieving order details from Salesforce, processing the refund or replacement via Stripe, updating the customer record, and notifying support via Slack."
  tags:
    - customer-service
    - ordering
    - salesforce
    - stripe
    - slack
capability:
  exposes:
    - type: mcp
      namespace: order-issues
      port: 8080
      tools:
        - name: resolve-issue
          description: "Resolve a customer order issue with refund or replacement."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The order ID."
            - name: issue_type
              in: body
              type: string
              description: "The issue type (missing_item, damaged, wrong_item)."
            - name: resolution
              in: body
              type: string
              description: "Resolution type (refund, replacement, credit)."
          steps:
            - name: get-order
              type: call
              call: "salesforce.get-order"
              with:
                order_id: "{{order_id}}"
            - name: process-resolution
              type: call
              call: "stripe.create-refund"
              with:
                charge_id: "{{get-order.charge_id}}"
                amount: "{{get-order.affected_amount}}"
                reason: "{{issue_type}}"
            - name: update-case
              type: call
              call: "salesforce.update-case"
              with:
                order_id: "{{order_id}}"
                resolution: "{{resolution}}"
                refund_ref: "{{process-resolution.refund_id}}"
            - name: notify-support
              type: call
              call: "slack.post-message"
              with:
                channel: "customer-support"
                message: "Order {{order_id}} issue resolved. Type: {{issue_type}}. Resolution: {{resolution}}. Refund: {{process-resolution.refund_id}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://instacart.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: orders
          path: "/sobjects/Order__c/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
            - name: update-case
              method: PATCH
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: refunds
          path: "/refunds"
          operations:
            - name: create-refund
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Recommends product substitutions when items are out of stock during shopping, using customer preference history, brand affinity, and nutritional equivalency matching.

naftiko: "0.5"
info:
  label: "Out of Stock Substitution Recommender"
  description: "Recommends product substitutions when items are out of stock during shopping, using customer preference history, brand affinity, and nutritional equivalency matching."
  tags:
    - product-matching
    - substitutions
    - shopping
capability:
  exposes:
    - type: mcp
      namespace: substitution-recommender
      port: 8080
      tools:
        - name: recommend-substitution
          description: "Recommend substitution products for an out-of-stock item."
          inputParameters:
            - name: original_product_id
              in: body
              type: string
              description: "The out-of-stock product identifier."
            - name: customer_id
              in: body
              type: string
              description: "The customer identifier for preference matching."
            - name: retailer_id
              in: body
              type: string
              description: "The retailer identifier for available inventory."
          call: "substitution-api.get-recommendations"
          with:
            product: "{{original_product_id}}"
            customer: "{{customer_id}}"
            retailer: "{{retailer_id}}"
          outputParameters:
            - name: recommended_substitutions
              type: array
              mapping: "$.recommendations.substitutions"
            - name: match_score
              type: number
              mapping: "$.recommendations.topMatchScore"
            - name: customer_approval_rate
              type: number
              mapping: "$.recommendations.historicalApprovalRate"
  consumes:
    - type: http
      namespace: substitution-api
      baseUri: "https://api.instacart.com/shopping/v1"
      authentication:
        type: bearer
        token: "$secrets.instacart_shopping_token"
      resources:
        - name: substitutions
          path: "/products/{{product}}/substitutions"
          inputParameters:
            - name: product
              in: path
          operations:
            - name: get-recommendations
              method: GET

Triggers a Postman API collection test run for Instacart API monitoring, returning pass count, fail count, and average response time.

naftiko: "0.5"
info:
  label: "Postman API Collection Runner"
  description: "Triggers a Postman API collection test run for Instacart API monitoring, returning pass count, fail count, and average response time."
  tags:
    - testing
    - postman
    - api
capability:
  exposes:
    - type: mcp
      namespace: api-testing
      port: 8080
      tools:
        - name: run-collection
          description: "Trigger a Postman API collection test run."
          inputParameters:
            - name: collection_uid
              in: body
              type: string
              description: "The Postman collection UID."
          call: "postman.run-collection"
          with:
            collection_uid: "{{collection_uid}}"
          outputParameters:
            - name: passed
              type: number
              mapping: "$.run.stats.assertions.passed"
            - name: failed
              type: number
              mapping: "$.run.stats.assertions.failed"
            - name: avg_response_time
              type: string
              mapping: "$.run.stats.responseAverage"
  consumes:
    - type: http
      namespace: postman
      baseUri: "https://api.getpostman.com"
      authentication:
        type: bearer
        token: "$secrets.postman_api_key"
      resources:
        - name: collections
          path: "/collections/{{collection_uid}}/run"
          inputParameters:
            - name: collection_uid
              in: path
          operations:
            - name: run-collection
              method: POST

Triggers a Postman collection run for API health checks across Instacart's microservices.

naftiko: "0.5"
info:
  label: "Postman API Health Check Runner"
  description: "Triggers a Postman collection run for API health checks across Instacart's microservices."
  tags:
    - it-operations
    - monitoring
    - postman
capability:
  exposes:
    - type: mcp
      namespace: api-health
      port: 8080
      tools:
        - name: run-health-checks
          description: "Trigger a Postman collection run for API health checks."
          inputParameters:
            - name: collection_id
              in: body
              type: string
              description: "Postman collection ID."
            - name: environment_id
              in: body
              type: string
              description: "Postman environment ID."
          call: "postman.run-collection"
          with:
            collection_id: "{{collection_id}}"
            environment_id: "{{environment_id}}"
  consumes:
    - type: http
      namespace: postman
      baseUri: "https://api.getpostman.com"
      authentication:
        type: apiKey
        name: "X-Api-Key"
        in: header
        value: "$secrets.postman_api_key"
      resources:
        - name: collections
          path: "/collections/{{collection_id}}/run"
          inputParameters:
            - name: collection_id
              in: path
          operations:
            - name: run-collection
              method: POST

Syncs and enriches product catalog by pulling inventory data from Shopify, enriching with nutritional data from the product database, updating the search index, and notifying the catalog team via Slack.

naftiko: "0.5"
info:
  label: "Product Catalog Sync and Enrichment Pipeline"
  description: "Syncs and enriches product catalog by pulling inventory data from Shopify, enriching with nutritional data from the product database, updating the search index, and notifying the catalog team via Slack."
  tags:
    - catalog
    - shopify
    - search
    - slack
capability:
  exposes:
    - type: mcp
      namespace: catalog-enrichment
      port: 8080
      tools:
        - name: sync-and-enrich
          description: "Sync and enrich a retailer product catalog."
          inputParameters:
            - name: retailer_id
              in: body
              type: string
              description: "The retailer partner ID."
            - name: category
              in: body
              type: string
              description: "The product category to sync."
          steps:
            - name: pull-inventory
              type: call
              call: "shopify.get-products"
              with:
                retailer_id: "{{retailer_id}}"
                category: "{{category}}"
            - name: enrich-products
              type: call
              call: "product-db.enrich-batch"
              with:
                product_count: "{{pull-inventory.product_count}}"
                category: "{{category}}"
            - name: update-search
              type: call
              call: "search-service.reindex"
              with:
                retailer_id: "{{retailer_id}}"
                category: "{{category}}"
                product_count: "{{enrich-products.enriched_count}}"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "catalog-ops"
                message: "Catalog sync complete for retailer {{retailer_id}}, category: {{category}}. Products: {{pull-inventory.product_count}}. Enriched: {{enrich-products.enriched_count}}. Search indexed: {{update-search.indexed_count}}."
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://instacart-partner.myshopify.com/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: products
          path: "/products.json"
          operations:
            - name: get-products
              method: GET
    - type: http
      namespace: product-db
      baseUri: "https://product-database.instacart.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.product_db_token"
      resources:
        - name: enrichment
          path: "/enrich/batch"
          operations:
            - name: enrich-batch
              method: POST
    - type: http
      namespace: search-service
      baseUri: "https://search.instacart.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.search_token"
      resources:
        - name: indexing
          path: "/reindex"
          operations:
            - name: reindex
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Converts recipe ingredients into shoppable cart items, matching ingredient descriptions to available products at the customer's selected retailer with quantity adjustments.

naftiko: "0.5"
info:
  label: "Recipe to Cart Conversion Pipeline"
  description: "Converts recipe ingredients into shoppable cart items, matching ingredient descriptions to available products at the customer's selected retailer with quantity adjustments."
  tags:
    - recipe-integration
    - cart-management
    - product-matching
capability:
  exposes:
    - type: mcp
      namespace: recipe-to-cart
      port: 8080
      tools:
        - name: convert-recipe-to-cart
          description: "Convert a recipe ingredient list into a shopping cart."
          inputParameters:
            - name: recipe_url
              in: body
              type: string
              description: "URL of the recipe to parse."
            - name: retailer_id
              in: body
              type: string
              description: "The selected retailer identifier."
            - name: servings
              in: body
              type: integer
              description: "Number of servings to scale the recipe."
          call: "recipe-api.convert-to-cart"
          with:
            url: "{{recipe_url}}"
            retailer: "{{retailer_id}}"
            servings: "{{servings}}"
          outputParameters:
            - name: cart_items
              type: array
              mapping: "$.cart.items"
            - name: estimated_total
              type: number
              mapping: "$.cart.estimatedTotal"
            - name: unmatched_ingredients
              type: array
              mapping: "$.cart.unmatchedIngredients"
  consumes:
    - type: http
      namespace: recipe-api
      baseUri: "https://api.instacart.com/recipes/v1"
      authentication:
        type: bearer
        token: "$secrets.instacart_recipes_token"
      resources:
        - name: conversions
          path: "/recipe-to-cart"
          operations:
            - name: convert-to-cart
              method: POST

Integrates retailer digital coupon programs into the Instacart shopping experience, enabling customers to clip and apply store-specific coupons during checkout.

naftiko: "0.5"
info:
  label: "Retailer Coupon Clipping Integration"
  description: "Integrates retailer digital coupon programs into the Instacart shopping experience, enabling customers to clip and apply store-specific coupons during checkout."
  tags:
    - promotions
    - retailer-integration
    - coupons
capability:
  exposes:
    - type: mcp
      namespace: coupon-clipping
      port: 8080
      tools:
        - name: get-available-coupons
          description: "Retrieve available digital coupons for items in a customer cart."
          inputParameters:
            - name: retailer_id
              in: body
              type: string
              description: "The retailer partner identifier."
            - name: cart_item_upcs
              in: body
              type: array
              description: "List of UPC codes for items in the cart."
          call: "promotions-api.get-coupons"
          with:
            retailer: "{{retailer_id}}"
            upcs: "{{cart_item_upcs}}"
          outputParameters:
            - name: available_coupons
              type: array
              mapping: "$.coupons.available"
            - name: total_savings
              type: number
              mapping: "$.coupons.totalPotentialSavings"
            - name: auto_applied
              type: array
              mapping: "$.coupons.autoApplied"
  consumes:
    - type: http
      namespace: promotions-api
      baseUri: "https://api.instacart.com/promotions/v1"
      authentication:
        type: bearer
        token: "$secrets.instacart_promotions_token"
      resources:
        - name: coupons
          path: "/retailers/{{retailer}}/coupons"
          inputParameters:
            - name: retailer
              in: path
          operations:
            - name: get-coupons
              method: POST

Pulls real-time inventory data from a retail partner's system and syncs it to the Instacart catalog, updating product availability and pricing.

naftiko: "0.5"
info:
  label: "Retailer Inventory Sync Pipeline"
  description: "Pulls real-time inventory data from a retail partner's system and syncs it to the Instacart catalog, updating product availability and pricing."
  tags:
    - supply-chain
    - ordering
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: inventory-sync
      port: 8080
      tools:
        - name: sync-retailer-inventory
          description: "Sync retailer inventory data to the Instacart catalog."
          inputParameters:
            - name: retailer_id
              in: body
              type: string
              description: "Retailer partner ID."
            - name: store_id
              in: body
              type: string
              description: "Store location ID."
          steps:
            - name: get-inventory
              type: call
              call: "retailer-api.get-inventory"
              with:
                retailer_id: "{{retailer_id}}"
                store_id: "{{store_id}}"
            - name: update-catalog
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "MERGE INTO PRODUCT_CATALOG USING (SELECT * FROM TABLE(RESULT_SCAN('{{get-inventory.query_id}}'))) ON product_id = source.product_id WHEN MATCHED THEN UPDATE SET availability = source.stock_status, price = source.current_price"
  consumes:
    - type: http
      namespace: retailer-api
      baseUri: "https://partner-api.instacart.com/v1"
      authentication:
        type: bearer
        token: "$secrets.retailer_api_token"
      resources:
        - name: inventory
          path: "/retailers/{{retailer_id}}/stores/{{store_id}}/inventory"
          inputParameters:
            - name: retailer_id
              in: path
            - name: store_id
              in: path
          operations:
            - name: get-inventory
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://instacart.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Retrieves a customer's segment and lifetime value data from Salesforce.

naftiko: "0.5"
info:
  label: "Salesforce Customer Segment Lookup"
  description: "Retrieves a customer's segment and lifetime value data from Salesforce."
  tags:
    - marketing
    - customer-service
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: customer-segmentation
      port: 8080
      tools:
        - name: get-customer-segment
          description: "Look up customer segment and LTV from Salesforce."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Salesforce customer ID."
          call: "salesforce.get-contact"
          with:
            customer_id: "{{customer_id}}"
          outputParameters:
            - name: segment
              type: string
              mapping: "$.Customer_Segment__c"
            - name: ltv
              type: string
              mapping: "$.Lifetime_Value__c"
            - name: order_frequency
              type: string
              mapping: "$.Order_Frequency__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://instacart.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-contact
              method: GET

Retrieves AI-powered product recommendations from Salesforce Einstein for personalized customer suggestions.

naftiko: "0.5"
info:
  label: "Salesforce Einstein AI Recommendation"
  description: "Retrieves AI-powered product recommendations from Salesforce Einstein for personalized customer suggestions."
  tags:
    - advertising
    - salesforce-einstein
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: ai-recommendations
      port: 8080
      tools:
        - name: get-recommendations
          description: "Get AI product recommendations from Salesforce Einstein."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Customer ID."
          call: "salesforce-einstein.get-recs"
          with:
            customer_id: "{{customer_id}}"
          outputParameters:
            - name: recommendations
              type: string
              mapping: "$.predictions"
  consumes:
    - type: http
      namespace: salesforce-einstein
      baseUri: "https://instacart.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: predictions
          path: "/einstein/recommendations/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-recs
              method: GET

Retrieves AI-powered product recommendations from Salesforce Einstein for Instacart personalization, returning recommended products, confidence scores, and model version.

naftiko: "0.5"
info:
  label: "Salesforce Einstein Recommendation Lookup"
  description: "Retrieves AI-powered product recommendations from Salesforce Einstein for Instacart personalization, returning recommended products, confidence scores, and model version."
  tags:
    - personalization
    - salesforce-einstein
    - machine-learning
capability:
  exposes:
    - type: mcp
      namespace: ai-recommendations
      port: 8080
      tools:
        - name: get-recommendations
          description: "Get AI product recommendations from Salesforce Einstein."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The customer ID."
          call: "einstein.get-recommendations"
          with:
            customer_id: "{{customer_id}}"
          outputParameters:
            - name: products
              type: string
              mapping: "$.recommendations"
            - name: confidence
              type: string
              mapping: "$.confidence_score"
            - name: model_version
              type: string
              mapping: "$.model_version"
  consumes:
    - type: http
      namespace: einstein
      baseUri: "https://instacart.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: recommendations
          path: "/commerce/recommendations/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-recommendations
              method: GET

Orchestrates a marketing campaign by creating the campaign in Salesforce Marketing Cloud, configuring audience segments, scheduling email sends, and tracking performance via Google Analytics.

naftiko: "0.5"
info:
  label: "Salesforce Marketing Campaign Orchestrator"
  description: "Orchestrates a marketing campaign by creating the campaign in Salesforce Marketing Cloud, configuring audience segments, scheduling email sends, and tracking performance via Google Analytics."
  tags:
    - marketing
    - salesforce-marketing-cloud
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: marketing-campaigns
      port: 8080
      tools:
        - name: launch-campaign
          description: "Orchestrate a marketing campaign launch."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "The campaign name."
            - name: audience_segment
              in: body
              type: string
              description: "The target audience segment."
            - name: send_date
              in: body
              type: string
              description: "Scheduled send date."
          steps:
            - name: create-campaign
              type: call
              call: "sfmc.create-campaign"
              with:
                name: "{{campaign_name}}"
                segment: "{{audience_segment}}"
            - name: schedule-send
              type: call
              call: "sfmc.schedule-email"
              with:
                campaign_id: "{{create-campaign.campaign_id}}"
                send_date: "{{send_date}}"
            - name: setup-tracking
              type: call
              call: "ga.create-utm-campaign"
              with:
                campaign_name: "{{campaign_name}}"
                source: "email"
                medium: "sfmc"
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://instacart.rest.marketingcloudapis.com"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: campaigns
          path: "/messaging/v1/email/campaigns"
          operations:
            - name: create-campaign
              method: POST
        - name: sends
          path: "/messaging/v1/email/sends"
          operations:
            - name: schedule-email
              method: POST
    - type: http
      namespace: ga
      baseUri: "https://analyticsadmin.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_api_token"
      resources:
        - name: properties
          path: "/properties/{{property_id}}/conversionEvents"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: create-utm-campaign
              method: POST

Triggers a promotional email campaign via Salesforce Marketing Cloud for user re-engagement.

naftiko: "0.5"
info:
  label: "Salesforce Marketing Cloud Campaign Trigger"
  description: "Triggers a promotional email campaign via Salesforce Marketing Cloud for user re-engagement."
  tags:
    - marketing
    - advertising
    - salesforce-marketing-cloud
capability:
  exposes:
    - type: mcp
      namespace: email-campaigns
      port: 8080
      tools:
        - name: trigger-campaign
          description: "Trigger a Marketing Cloud email campaign."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "Campaign ID."
            - name: segment
              in: body
              type: string
              description: "Target audience segment."
          call: "sfmc.trigger-send"
          with:
            campaign_id: "{{campaign_id}}"
            segment: "{{segment}}"
  consumes:
    - type: http
      namespace: sfmc
      baseUri: "https://instacart.rest.marketingcloudapis.com"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: sends
          path: "/messaging/v1/email/messages"
          operations:
            - name: trigger-send
              method: POST

Retrieves retailer partner details from Salesforce, returning partner name, store count, integration status, and contract renewal date.

naftiko: "0.5"
info:
  label: "Salesforce Retailer Partner Lookup"
  description: "Retrieves retailer partner details from Salesforce, returning partner name, store count, integration status, and contract renewal date."
  tags:
    - partnerships
    - salesforce
    - retail
capability:
  exposes:
    - type: mcp
      namespace: retailer-partners
      port: 8080
      tools:
        - name: get-partner
          description: "Look up a retailer partner in Salesforce."
          inputParameters:
            - name: partner_id
              in: body
              type: string
              description: "The Salesforce partner account ID."
          call: "salesforce.get-account"
          with:
            partner_id: "{{partner_id}}"
          outputParameters:
            - name: partner_name
              type: string
              mapping: "$.Name"
            - name: store_count
              type: number
              mapping: "$.Store_Count__c"
            - name: integration_status
              type: string
              mapping: "$.Integration_Status__c"
            - name: contract_renewal
              type: string
              mapping: "$.Contract_Renewal_Date__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://instacart.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{partner_id}}"
          inputParameters:
            - name: partner_id
              in: path
          operations:
            - name: get-account
              method: GET

Retrieves crash report details from Sentry for Instacart mobile and web applications, returning error type, stack trace summary, affected user count, and first occurrence.

naftiko: "0.5"
info:
  label: "Sentry Crash Report Lookup"
  description: "Retrieves crash report details from Sentry for Instacart mobile and web applications, returning error type, stack trace summary, affected user count, and first occurrence."
  tags:
    - monitoring
    - sentry
    - mobile
capability:
  exposes:
    - type: mcp
      namespace: crash-reports
      port: 8080
      tools:
        - name: get-crash-report
          description: "Look up a crash report in Sentry."
          inputParameters:
            - name: issue_id
              in: body
              type: string
              description: "The Sentry issue ID."
          call: "sentry.get-issue"
          with:
            issue_id: "{{issue_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: type
              type: string
              mapping: "$.type"
            - name: user_count
              type: number
              mapping: "$.userCount"
            - name: first_seen
              type: string
              mapping: "$.firstSeen"
  consumes:
    - type: http
      namespace: sentry
      baseUri: "https://sentry.io/api/0"
      authentication:
        type: bearer
        token: "$secrets.sentry_token"
      resources:
        - name: issues
          path: "/issues/{{issue_id}}/"
          inputParameters:
            - name: issue_id
              in: path
          operations:
            - name: get-issue
              method: GET

Retrieves error details from Sentry for an Instacart application, returning error type, stack trace, and affected users.

naftiko: "0.5"
info:
  label: "Sentry Error Monitoring Lookup"
  description: "Retrieves error details from Sentry for an Instacart application, returning error type, stack trace, and affected users."
  tags:
    - it-operations
    - monitoring
    - sentry-system
capability:
  exposes:
    - type: mcp
      namespace: error-monitoring
      port: 8080
      tools:
        - name: get-error-details
          description: "Retrieve error details from Sentry."
          inputParameters:
            - name: issue_id
              in: body
              type: string
              description: "Sentry issue ID."
          call: "sentry.get-issue"
          with:
            issue_id: "{{issue_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: count
              type: string
              mapping: "$.count"
            - name: users_affected
              type: string
              mapping: "$.userCount"
            - name: first_seen
              type: string
              mapping: "$.firstSeen"
  consumes:
    - type: http
      namespace: sentry
      baseUri: "https://sentry.io/api/0"
      authentication:
        type: bearer
        token: "$secrets.sentry_token"
      resources:
        - name: issues
          path: "/issues/{{issue_id}}/"
          inputParameters:
            - name: issue_id
              in: path
          operations:
            - name: get-issue
              method: GET

Retrieves a ServiceNow incident by number, returning state, assigned group, and priority.

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

Syncs product catalog data between Instacart and a retail partner's Shopify storefront.

naftiko: "0.5"
info:
  label: "Shopify Retailer Storefront Sync"
  description: "Syncs product catalog data between Instacart and a retail partner's Shopify storefront."
  tags:
    - e-commerce
    - ordering
    - shopify
capability:
  exposes:
    - type: mcp
      namespace: shopify-sync
      port: 8080
      tools:
        - name: sync-products
          description: "Sync product data from a Shopify storefront."
          inputParameters:
            - name: shop_domain
              in: body
              type: string
              description: "Shopify store domain."
          call: "shopify.get-products"
          with:
            shop_domain: "{{shop_domain}}"
          outputParameters:
            - name: products
              type: string
              mapping: "$.products"
  consumes:
    - type: http
      namespace: shopify
      baseUri: "https://{{shop_domain}}/admin/api/2024-01"
      authentication:
        type: bearer
        token: "$secrets.shopify_token"
      resources:
        - name: products
          path: "/products.json"
          operations:
            - name: get-products
              method: GET

When a new order is placed, validates inventory availability, assigns the optimal shopper based on proximity and rating, and sends the assignment notification via the shopper app API.

naftiko: "0.5"
info:
  label: "Shopper Assignment Orchestrator"
  description: "When a new order is placed, validates inventory availability, assigns the optimal shopper based on proximity and rating, and sends the assignment notification via the shopper app API."
  tags:
    - ordering
    - shopper-ops
    - logistics
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: shopper-assignment
      port: 8080
      tools:
        - name: assign-shopper
          description: "Assign the optimal shopper to a new order."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The order ID."
            - name: store_id
              in: body
              type: string
              description: "The store location ID."
          steps:
            - name: get-order
              type: call
              call: "salesforce.get-order"
              with:
                order_id: "{{order_id}}"
            - name: find-shopper
              type: call
              call: "shopper-platform.find-optimal"
              with:
                store_id: "{{store_id}}"
                item_count: "{{get-order.item_count}}"
                delivery_address: "{{get-order.delivery_address}}"
            - name: assign
              type: call
              call: "shopper-platform.assign-order"
              with:
                order_id: "{{order_id}}"
                shopper_id: "{{find-shopper.shopper_id}}"
            - name: update-order
              type: call
              call: "salesforce.update-order"
              with:
                order_id: "{{order_id}}"
                shopper_id: "{{find-shopper.shopper_id}}"
                status: "Assigned"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://instacart.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: orders
          path: "/sobjects/Order__c/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
            - name: update-order
              method: PATCH
    - type: http
      namespace: shopper-platform
      baseUri: "https://shopper-api.instacart.com/v1"
      authentication:
        type: bearer
        token: "$secrets.shopper_platform_token"
      resources:
        - name: shoppers
          path: "/shoppers/optimal"
          operations:
            - name: find-optimal
              method: POST
        - name: assignments
          path: "/orders/{{order_id}}/assign"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: assign-order
              method: POST

Optimizes and assigns batch orders to shoppers by analyzing order proximity in the delivery optimizer, grouping orders, assigning the optimal shopper, and sending batch details via Gmail.

naftiko: "0.5"
info:
  label: "Shopper Batch Assignment Orchestrator"
  description: "Optimizes and assigns batch orders to shoppers by analyzing order proximity in the delivery optimizer, grouping orders, assigning the optimal shopper, and sending batch details via Gmail."
  tags:
    - shopper-ops
    - logistics
    - optimization
    - gmail
capability:
  exposes:
    - type: mcp
      namespace: batch-assignment
      port: 8080
      tools:
        - name: assign-batch
          description: "Optimize and assign a batch of orders to a shopper."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The delivery zone ID."
            - name: order_ids
              in: body
              type: string
              description: "Comma-separated order IDs."
          steps:
            - name: optimize-batch
              type: call
              call: "delivery-optimizer.create-batch"
              with:
                zone_id: "{{zone_id}}"
                order_ids: "{{order_ids}}"
            - name: find-shopper
              type: call
              call: "shopper-platform.find-optimal"
              with:
                zone_id: "{{zone_id}}"
                batch_size: "{{optimize-batch.batch_size}}"
                store_id: "{{optimize-batch.store_id}}"
            - name: assign
              type: call
              call: "shopper-platform.assign-batch"
              with:
                batch_id: "{{optimize-batch.batch_id}}"
                shopper_id: "{{find-shopper.shopper_id}}"
            - name: notify-shopper
              type: call
              call: "gmail.send-email"
              with:
                to: "{{find-shopper.shopper_email}}"
                subject: "New batch assigned: {{optimize-batch.batch_id}}"
                body: "You have a new batch of {{optimize-batch.batch_size}} orders at {{optimize-batch.store_name}}. Estimated earnings: {{optimize-batch.estimated_earnings}}."
  consumes:
    - type: http
      namespace: delivery-optimizer
      baseUri: "https://optimizer.instacart.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.optimizer_token"
      resources:
        - name: batches
          path: "/batches/create"
          operations:
            - name: create-batch
              method: POST
    - type: http
      namespace: shopper-platform
      baseUri: "https://shopper-api.instacart.com/v1"
      authentication:
        type: bearer
        token: "$secrets.shopper_platform_token"
      resources:
        - name: shoppers
          path: "/shoppers/optimal"
          operations:
            - name: find-optimal
              method: POST
        - name: batch-assignments
          path: "/batches/assign"
          operations:
            - name: assign-batch
              method: POST
    - type: http
      namespace: gmail
      baseUri: "https://gmail.googleapis.com/gmail/v1"
      authentication:
        type: bearer
        token: "$secrets.gmail_token"
      resources:
        - name: messages
          path: "/users/me/messages/send"
          operations:
            - name: send-email
              method: POST

Retrieves a shopper's earnings summary for a pay period, returning total earnings, tips, batch bonuses, and delivery count.

naftiko: "0.5"
info:
  label: "Shopper Earnings Summary Retriever"
  description: "Retrieves a shopper's earnings summary for a pay period, returning total earnings, tips, batch bonuses, and delivery count."
  tags:
    - shopper-ops
    - finance
capability:
  exposes:
    - type: mcp
      namespace: shopper-earnings
      port: 8080
      tools:
        - name: get-earnings
          description: "Retrieve shopper earnings for a pay period."
          inputParameters:
            - name: shopper_id
              in: body
              type: string
              description: "Shopper ID."
            - name: pay_period
              in: body
              type: string
              description: "Pay period (YYYY-MM-DD)."
          call: "shopper-platform.get-earnings"
          with:
            shopper_id: "{{shopper_id}}"
            pay_period: "{{pay_period}}"
          outputParameters:
            - name: total_earnings
              type: string
              mapping: "$.totalEarnings"
            - name: tips
              type: string
              mapping: "$.totalTips"
            - name: batch_bonuses
              type: string
              mapping: "$.batchBonuses"
            - name: delivery_count
              type: string
              mapping: "$.deliveryCount"
  consumes:
    - type: http
      namespace: shopper-platform
      baseUri: "https://shopper-api.instacart.com/v1"
      authentication:
        type: bearer
        token: "$secrets.shopper_platform_token"
      resources:
        - name: earnings
          path: "/shoppers/{{shopper_id}}/earnings"
          inputParameters:
            - name: shopper_id
              in: path
            - name: pay_period
              in: query
          operations:
            - name: get-earnings
              method: GET

Orchestrates shopper performance reviews by aggregating metrics from Snowflake, updating shopper scores in DynamoDB, flagging low performers in Salesforce, and sending summary reports via Gmail.

naftiko: "0.5"
info:
  label: "Shopper Performance Review Orchestrator"
  description: "Orchestrates shopper performance reviews by aggregating metrics from Snowflake, updating shopper scores in DynamoDB, flagging low performers in Salesforce, and sending summary reports via Gmail."
  tags:
    - shopper-ops
    - analytics
    - snowflake
    - dynamodb
    - salesforce
    - gmail
capability:
  exposes:
    - type: mcp
      namespace: shopper-reviews
      port: 8080
      tools:
        - name: review-performance
          description: "Orchestrate a shopper performance review."
          inputParameters:
            - name: shopper_id
              in: body
              type: string
              description: "The shopper ID."
            - name: review_period
              in: body
              type: string
              description: "The review period (e.g. 2026-Q1)."
          steps:
            - name: aggregate-metrics
              type: call
              call: "snowflake.query-shopper-metrics"
              with:
                shopper_id: "{{shopper_id}}"
                period: "{{review_period}}"
            - name: update-score
              type: call
              call: "dynamodb.update-item"
              with:
                shopper_id: "{{shopper_id}}"
                performance_score: "{{aggregate-metrics.overall_score}}"
                order_accuracy: "{{aggregate-metrics.accuracy_rate}}"
            - name: flag-if-needed
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Shopper review: {{shopper_id}} - Score {{aggregate-metrics.overall_score}}"
                type: "Shopper_Review"
                priority: "Medium"
            - name: send-report
              type: call
              call: "gmail.send-email"
              with:
                to: "{{aggregate-metrics.shopper_email}}"
                subject: "Your Performance Review - {{review_period}}"
                body: "Overall score: {{aggregate-metrics.overall_score}}. Orders completed: {{aggregate-metrics.order_count}}. Accuracy: {{aggregate-metrics.accuracy_rate}}%. On-time: {{aggregate-metrics.on_time_rate}}%."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://instacart.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-shopper-metrics
              method: POST
    - type: http
      namespace: dynamodb
      baseUri: "https://dynamodb.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_dynamodb_token"
      resources:
        - name: items
          path: "/"
          operations:
            - name: update-item
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://instacart.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: gmail
      baseUri: "https://gmail.googleapis.com/gmail/v1"
      authentication:
        type: bearer
        token: "$secrets.gmail_token"
      resources:
        - name: messages
          path: "/users/me/messages/send"
          operations:
            - name: send-email
              method: POST

Retrieves shopper performance ratings and customer feedback from the platform, returning average rating, total deliveries, and recent comments.

naftiko: "0.5"
info:
  label: "Shopper Rating and Feedback Aggregator"
  description: "Retrieves shopper performance ratings and customer feedback from the platform, returning average rating, total deliveries, and recent comments."
  tags:
    - shopper-ops
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: shopper-ratings
      port: 8080
      tools:
        - name: get-shopper-ratings
          description: "Retrieve shopper ratings and feedback."
          inputParameters:
            - name: shopper_id
              in: body
              type: string
              description: "Shopper ID."
          call: "shopper-platform.get-ratings"
          with:
            shopper_id: "{{shopper_id}}"
          outputParameters:
            - name: avg_rating
              type: string
              mapping: "$.averageRating"
            - name: total_deliveries
              type: string
              mapping: "$.totalDeliveries"
            - name: recent_comments
              type: string
              mapping: "$.recentFeedback"
  consumes:
    - type: http
      namespace: shopper-platform
      baseUri: "https://shopper-api.instacart.com/v1"
      authentication:
        type: bearer
        token: "$secrets.shopper_platform_token"
      resources:
        - name: ratings
          path: "/shoppers/{{shopper_id}}/ratings"
          inputParameters:
            - name: shopper_id
              in: path
          operations:
            - name: get-ratings
              method: GET

Sends a notification to an Instacart engineering Slack channel.

naftiko: "0.5"
info:
  label: "Slack Engineering Notification Sender"
  description: "Sends a notification to an Instacart engineering Slack channel."
  tags:
    - communications
    - slack
capability:
  exposes:
    - type: mcp
      namespace: eng-notifications
      port: 8080
      tools:
        - name: send-notification
          description: "Post a notification to an engineering Slack channel."
          inputParameters:
            - name: channel
              in: body
              type: string
              description: "Slack channel name."
            - name: message
              in: body
              type: string
              description: "Message text."
          call: "slack.post-message"
          with:
            channel: "{{channel}}"
            text: "{{message}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Sends operational alert messages to Slack channels for Instacart teams, returning message timestamp, channel ID, and delivery confirmation.

naftiko: "0.5"
info:
  label: "Slack Operations Alert Sender"
  description: "Sends operational alert messages to Slack channels for Instacart teams, returning message timestamp, channel ID, and delivery confirmation."
  tags:
    - communications
    - slack
    - operations
capability:
  exposes:
    - type: mcp
      namespace: ops-alerts
      port: 8080
      tools:
        - name: send-alert
          description: "Send an operational alert to a Slack channel."
          inputParameters:
            - name: channel
              in: body
              type: string
              description: "The Slack channel name."
            - name: message
              in: body
              type: string
              description: "The alert message text."
          call: "slack.post-message"
          with:
            channel: "{{channel}}"
            message: "{{message}}"
          outputParameters:
            - name: ts
              type: string
              mapping: "$.ts"
            - name: channel_id
              type: string
              mapping: "$.channel"
            - name: ok
              type: string
              mapping: "$.ok"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for delivery performance metrics, returning average delivery time, on-time percentage, and order accuracy rate across Instacart service zones.

naftiko: "0.5"
info:
  label: "Snowflake Delivery Metrics Query"
  description: "Queries Snowflake for delivery performance metrics, returning average delivery time, on-time percentage, and order accuracy rate across Instacart service zones."
  tags:
    - analytics
    - snowflake
    - delivery
capability:
  exposes:
    - type: mcp
      namespace: delivery-metrics
      port: 8080
      tools:
        - name: get-delivery-metrics
          description: "Query delivery performance metrics from Snowflake."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The delivery zone ID."
            - name: date_range
              in: body
              type: string
              description: "The date range."
          call: "snowflake.query-metrics"
          with:
            zone_id: "{{zone_id}}"
            date_range: "{{date_range}}"
          outputParameters:
            - name: avg_delivery_time
              type: string
              mapping: "$.data[0].avg_delivery_minutes"
            - name: on_time_pct
              type: string
              mapping: "$.data[0].on_time_percentage"
            - name: accuracy_rate
              type: string
              mapping: "$.data[0].order_accuracy_rate"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://instacart.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query-metrics
              method: POST

Runs an analytics query in Snowflake to retrieve order volume, average basket size, fulfillment rate, and delivery time metrics.

naftiko: "0.5"
info:
  label: "Snowflake Order Analytics Query"
  description: "Runs an analytics query in Snowflake to retrieve order volume, average basket size, fulfillment rate, and delivery time metrics."
  tags:
    - analytics
    - data
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: order-analytics
      port: 8080
      tools:
        - name: query-order-metrics
          description: "Run an order analytics query in Snowflake."
          inputParameters:
            - name: market
              in: body
              type: string
              description: "Market/metro area."
            - name: date
              in: body
              type: string
              description: "Date YYYY-MM-DD."
          call: "snowflake.execute-query"
          with:
            statement: "SELECT order_count, avg_basket_size, fulfillment_rate, avg_delivery_minutes FROM ORDER_METRICS WHERE market = '{{market}}' AND order_date = '{{date}}'"
          outputParameters:
            - name: order_count
              type: string
              mapping: "$.data[0][0]"
            - name: avg_basket_size
              type: string
              mapping: "$.data[0][1]"
            - name: fulfillment_rate
              type: string
              mapping: "$.data[0][2]"
            - name: avg_delivery_minutes
              type: string
              mapping: "$.data[0][3]"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://instacart.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Handles store inventory system outages by detecting the issue via Datadog, pausing orders for the store in the scheduling service, creating an incident in ServiceNow, and alerting the partnerships team via Slack.

naftiko: "0.5"
info:
  label: "Store Outage Incident Pipeline"
  description: "Handles store inventory system outages by detecting the issue via Datadog, pausing orders for the store in the scheduling service, creating an incident in ServiceNow, and alerting the partnerships team via Slack."
  tags:
    - incident-management
    - datadog
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: store-outage
      port: 8080
      tools:
        - name: handle-outage
          description: "Handle a retailer store inventory system outage."
          inputParameters:
            - name: store_id
              in: body
              type: string
              description: "The affected store ID."
            - name: alert_id
              in: body
              type: string
              description: "The Datadog alert ID."
          steps:
            - name: get-alert-details
              type: call
              call: "datadog.get-event"
              with:
                alert_id: "{{alert_id}}"
            - name: pause-store-orders
              type: call
              call: "scheduling-service.pause-store"
              with:
                store_id: "{{store_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Store outage: {{store_id}} - {{get-alert-details.title}}"
                description: "Alert: {{get-alert-details.message}}. Store orders paused at {{pause-store-orders.paused_at}}."
                urgency: "1"
                assignment_group: "Partnerships_Engineering"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "store-outages"
                message: "Store {{store_id}} offline. Orders paused. Incident: {{create-incident.number}}. Alert: {{get-alert-details.title}}."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events/{{alert_id}}"
          inputParameters:
            - name: alert_id
              in: path
          operations:
            - name: get-event
              method: GET
    - type: http
      namespace: scheduling-service
      baseUri: "https://scheduling.instacart.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.scheduling_token"
      resources:
        - name: stores
          path: "/stores/{{store_id}}/pause"
          inputParameters:
            - name: store_id
              in: path
          operations:
            - name: pause-store
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://instacart.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves a Stripe payment intent status for an Instacart order payment.

naftiko: "0.5"
info:
  label: "Stripe Payment Processing Status"
  description: "Retrieves a Stripe payment intent status for an Instacart order payment."
  tags:
    - payments
    - ordering
    - stripe
capability:
  exposes:
    - type: mcp
      namespace: payment-status
      port: 8080
      tools:
        - name: get-payment-status
          description: "Look up a Stripe payment intent status."
          inputParameters:
            - name: payment_intent_id
              in: body
              type: string
              description: "Stripe payment intent ID."
          call: "stripe.get-payment-intent"
          with:
            payment_intent_id: "{{payment_intent_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: amount
              type: string
              mapping: "$.amount"
            - name: currency
              type: string
              mapping: "$.currency"
  consumes:
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: payment-intents
          path: "/payment_intents/{{payment_intent_id}}"
          inputParameters:
            - name: payment_intent_id
              in: path
          operations:
            - name: get-payment-intent
              method: GET

Retrieves refund details from Stripe by refund ID, returning refund amount, status, creation date, and linked charge ID for Instacart customer refunds.

naftiko: "0.5"
info:
  label: "Stripe Refund Status Lookup"
  description: "Retrieves refund details from Stripe by refund ID, returning refund amount, status, creation date, and linked charge ID for Instacart customer refunds."
  tags:
    - payments
    - stripe
capability:
  exposes:
    - type: mcp
      namespace: payment-refunds
      port: 8080
      tools:
        - name: get-refund
          description: "Look up a Stripe refund by ID."
          inputParameters:
            - name: refund_id
              in: body
              type: string
              description: "The Stripe refund ID."
          call: "stripe.get-refund"
          with:
            refund_id: "{{refund_id}}"
          outputParameters:
            - name: amount
              type: number
              mapping: "$.amount"
            - name: status
              type: string
              mapping: "$.status"
            - name: created
              type: string
              mapping: "$.created"
            - name: charge_id
              type: string
              mapping: "$.charge"
  consumes:
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: refunds
          path: "/refunds/{{refund_id}}"
          inputParameters:
            - name: refund_id
              in: path
          operations:
            - name: get-refund
              method: GET

Triggers a refresh of a Tableau dashboard for Instacart business analytics.

naftiko: "0.5"
info:
  label: "Tableau Dashboard Refresh Trigger"
  description: "Triggers a refresh of a Tableau dashboard for Instacart business analytics."
  tags:
    - analytics
    - reporting
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: dashboard-refresh
      port: 8080
      tools:
        - name: refresh-dashboard
          description: "Trigger a Tableau dashboard refresh."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "Tableau site ID."
            - name: workbook_id
              in: body
              type: string
              description: "Workbook ID."
          call: "tableau.refresh-workbook"
          with:
            site_id: "{{site_id}}"
            workbook_id: "{{workbook_id}}"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://us-west-2a.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: workbooks
          path: "/sites/{{site_id}}/workbooks/{{workbook_id}}/refresh"
          inputParameters:
            - name: site_id
              in: path
            - name: workbook_id
              in: path
          operations:
            - name: refresh-workbook
              method: POST

Retrieves weekly business review data from Tableau for Instacart leadership, returning GMV trend, order growth rate, and customer acquisition cost.

naftiko: "0.5"
info:
  label: "Tableau Weekly Business Review"
  description: "Retrieves weekly business review data from Tableau for Instacart leadership, returning GMV trend, order growth rate, and customer acquisition cost."
  tags:
    - analytics
    - tableau
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: business-review
      port: 8080
      tools:
        - name: get-wbr-data
          description: "Retrieve weekly business review data from Tableau."
          inputParameters:
            - name: view_id
              in: body
              type: string
              description: "The Tableau view ID."
          call: "tableau.get-view-data"
          with:
            view_id: "{{view_id}}"
          outputParameters:
            - name: gmv_trend
              type: string
              mapping: "$.data.gmv_trend"
            - name: order_growth
              type: string
              mapping: "$.data.order_growth_rate"
            - name: cac
              type: string
              mapping: "$.data.customer_acquisition_cost"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://instacart.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: views
          path: "/sites/{{site_id}}/views/{{view_id}}/data"
          inputParameters:
            - name: site_id
              in: path
            - name: view_id
              in: path
          operations:
            - name: get-view-data
              method: GET

Monitors Temporal workflow execution status for Instacart order processing pipelines, returning workflow state, current activity, pending signals, and execution duration.

naftiko: "0.5"
info:
  label: "Temporal Workflow Execution Monitor"
  description: "Monitors Temporal workflow execution status for Instacart order processing pipelines, returning workflow state, current activity, pending signals, and execution duration."
  tags:
    - orchestration
    - temporal
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: workflow-monitoring
      port: 8080
      tools:
        - name: get-workflow-status
          description: "Monitor a Temporal workflow execution."
          inputParameters:
            - name: workflow_id
              in: body
              type: string
              description: "The Temporal workflow ID."
          call: "temporal.describe-workflow"
          with:
            workflow_id: "{{workflow_id}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.workflowExecutionInfo.status"
            - name: current_activity
              type: string
              mapping: "$.pendingActivities[0].activityType.name"
            - name: duration
              type: string
              mapping: "$.workflowExecutionInfo.executionDuration"
  consumes:
    - type: http
      namespace: temporal
      baseUri: "https://temporal.instacart.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.temporal_token"
      resources:
        - name: workflows
          path: "/namespaces/default/workflows/{{workflow_id}}"
          inputParameters:
            - name: workflow_id
              in: path
          operations:
            - name: describe-workflow
              method: GET

Checks the status of a Temporal workflow for order processing pipelines.

naftiko: "0.5"
info:
  label: "Temporal Workflow Status Checker"
  description: "Checks the status of a Temporal workflow for order processing pipelines."
  tags:
    - it-operations
    - ordering
    - temporal
capability:
  exposes:
    - type: mcp
      namespace: workflow-status
      port: 8080
      tools:
        - name: get-workflow-status
          description: "Check Temporal workflow execution status."
          inputParameters:
            - name: workflow_id
              in: body
              type: string
              description: "Temporal workflow ID."
            - name: run_id
              in: body
              type: string
              description: "Temporal run ID."
          call: "temporal.get-execution"
          with:
            workflow_id: "{{workflow_id}}"
            run_id: "{{run_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.workflowExecutionInfo.status"
  consumes:
    - type: http
      namespace: temporal
      baseUri: "https://temporal.instacart.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.temporal_token"
      resources:
        - name: executions
          path: "/namespaces/default/workflows/{{workflow_id}}/{{run_id}}"
          inputParameters:
            - name: workflow_id
              in: path
            - name: run_id
              in: path
          operations:
            - name: get-execution
              method: GET

Generates personalized weekly meal plans based on customer dietary preferences, household size, and budget, with one-click cart population from planned meals.

naftiko: "0.5"
info:
  label: "Weekly Meal Plan Generator"
  description: "Generates personalized weekly meal plans based on customer dietary preferences, household size, and budget, with one-click cart population from planned meals."
  tags:
    - meal-planning
    - personalization
    - grocery
capability:
  exposes:
    - type: mcp
      namespace: meal-planning
      port: 8080
      tools:
        - name: generate-meal-plan
          description: "Generate a personalized weekly meal plan with shopping list."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The customer identifier."
            - name: dietary_preferences
              in: body
              type: array
              description: "Dietary preferences such as vegetarian, gluten-free, or keto."
            - name: household_size
              in: body
              type: integer
              description: "Number of people in the household."
            - name: weekly_budget
              in: body
              type: number
              description: "Weekly grocery budget in USD."
          call: "meal-plan-api.generate-plan"
          with:
            customer: "{{customer_id}}"
            preferences: "{{dietary_preferences}}"
            size: "{{household_size}}"
            budget: "{{weekly_budget}}"
          outputParameters:
            - name: meal_plan
              type: array
              mapping: "$.plan.meals"
            - name: shopping_list
              type: array
              mapping: "$.plan.shoppingList"
            - name: estimated_cost
              type: number
              mapping: "$.plan.estimatedCost"
  consumes:
    - type: http
      namespace: meal-plan-api
      baseUri: "https://api.instacart.com/meal-planning/v1"
      authentication:
        type: bearer
        token: "$secrets.instacart_meal_planning_token"
      resources:
        - name: plans
          path: "/meal-plans"
          operations:
            - name: generate-plan
              method: POST

Retrieves an Instacart employee's profile from Workday, returning name, department, manager, and hire date.

naftiko: "0.5"
info:
  label: "Workday Employee Profile Lookup"
  description: "Retrieves an Instacart employee's profile from Workday, returning name, department, manager, and hire date."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: employee-profiles
      port: 8080
      tools:
        - name: get-employee-profile
          description: "Retrieve employee profile from Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.fullName"
            - name: department
              type: string
              mapping: "$.department"
            - name: manager
              type: string
              mapping: "$.manager"
            - name: hire_date
              type: string
              mapping: "$.hireDate"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves an Instacart employee's upcoming schedule from Workday.

naftiko: "0.5"
info:
  label: "Workday Employee Schedule Retriever"
  description: "Retrieves an Instacart employee's upcoming schedule from Workday."
  tags:
    - hr
    - scheduling
    - workday
capability:
  exposes:
    - type: mcp
      namespace: employee-scheduling
      port: 8080
      tools:
        - name: get-schedule
          description: "Retrieve employee schedule from Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
          call: "workday.get-schedule"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: shifts
              type: string
              mapping: "$.scheduleEntries"
            - name: department
              type: string
              mapping: "$.department"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: schedules
          path: "/workers/{{worker_id}}/schedule"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-schedule
              method: GET

Retrieves headcount data from Workday for Instacart workforce planning, returning total headcount, open positions, and turnover rate by department.

naftiko: "0.5"
info:
  label: "Workday Headcount Report"
  description: "Retrieves headcount data from Workday for Instacart workforce planning, returning total headcount, open positions, and turnover rate by department."
  tags:
    - hr
    - workday
    - workforce-planning
capability:
  exposes:
    - type: mcp
      namespace: workforce-data
      port: 8080
      tools:
        - name: get-headcount
          description: "Retrieve headcount data from Workday."
          inputParameters:
            - name: department
              in: body
              type: string
              description: "The department name."
          call: "workday.get-headcount"
          with:
            department: "{{department}}"
          outputParameters:
            - name: total_headcount
              type: number
              mapping: "$.Report_Entry[0].Total_Headcount"
            - name: open_positions
              type: number
              mapping: "$.Report_Entry[0].Open_Positions"
            - name: turnover_rate
              type: string
              mapping: "$.Report_Entry[0].Turnover_Rate"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd3-impl-services1.workday.com/ccx/api/v1/instacart"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: reports
          path: "/reports/headcount?department={{department}}"
          inputParameters:
            - name: department
              in: query
          operations:
            - name: get-headcount
              method: GET

Retrieves a payroll summary for an Instacart employee from Workday.

naftiko: "0.5"
info:
  label: "Workday Payroll Summary Retriever"
  description: "Retrieves a payroll summary for an Instacart employee from Workday."
  tags:
    - hr
    - payroll
    - workday
capability:
  exposes:
    - type: mcp
      namespace: payroll
      port: 8080
      tools:
        - name: get-payroll
          description: "Retrieve latest payroll summary."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
          call: "workday.get-payslip"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: gross_pay
              type: string
              mapping: "$.payslip.grossPay"
            - name: net_pay
              type: string
              mapping: "$.payslip.netPay"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: payslips
          path: "/workers/{{worker_id}}/paySlips"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-payslip
              method: GET

Triggers a Zapier webhook for custom Instacart workflow automations.

naftiko: "0.5"
info:
  label: "Zapier Integration Trigger"
  description: "Triggers a Zapier webhook for custom Instacart workflow automations."
  tags:
    - automation
    - zapier
capability:
  exposes:
    - type: mcp
      namespace: zap-trigger
      port: 8080
      tools:
        - name: trigger-zap
          description: "Trigger a Zapier webhook."
          inputParameters:
            - name: webhook_url
              in: body
              type: string
              description: "Zapier webhook URL."
            - name: payload
              in: body
              type: string
              description: "JSON payload."
          call: "zapier.trigger-webhook"
          with:
            url: "{{webhook_url}}"
            payload: "{{payload}}"
  consumes:
    - type: http
      namespace: zapier
      baseUri: "https://hooks.zapier.com"
      authentication:
        type: none
      resources:
        - name: webhooks
          path: "/hooks/catch/{{url}}"
          inputParameters:
            - name: url
              in: path
          operations:
            - name: trigger-webhook
              method: POST

Triggers a Zapier webhook for retailer integration events, returning execution ID, status, and triggered actions for Instacart partner workflows.

naftiko: "0.5"
info:
  label: "Zapier Retailer Webhook Trigger"
  description: "Triggers a Zapier webhook for retailer integration events, returning execution ID, status, and triggered actions for Instacart partner workflows."
  tags:
    - integration
    - zapier
    - automation
capability:
  exposes:
    - type: mcp
      namespace: retailer-webhooks
      port: 8080
      tools:
        - name: trigger-webhook
          description: "Trigger a Zapier webhook for retailer events."
          inputParameters:
            - name: webhook_url
              in: body
              type: string
              description: "The Zapier webhook URL."
            - name: event_data
              in: body
              type: string
              description: "The event payload data."
          call: "zapier.trigger"
          with:
            webhook_url: "{{webhook_url}}"
            event_data: "{{event_data}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: request_id
              type: string
              mapping: "$.id"
  consumes:
    - type: http
      namespace: zapier
      baseUri: "https://hooks.zapier.com"
      authentication:
        type: bearer
        token: "$secrets.zapier_token"
      resources:
        - name: hooks
          path: "/hooks/catch/{{hook_id}}"
          inputParameters:
            - name: hook_id
              in: path
          operations:
            - name: trigger
              method: POST