Instacart Capabilities
Naftiko 0.5 capability definitions for Instacart - 100 capabilities showing integration workflows and service orchestrations.
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