Voila Groceries MCP
The Voila Groceries MCP server provides tools for grocery automation on the Voila platform — enabling product discovery, cart management, delivery slot handling, and order history access — without exposing checkout or order placement.
Session Management: Check session health to determine if the session is active, guest-only, expired, or retryable (
voila_check_session_health).Shopping Context: Retrieve the active shopping context including current region, delivery destination, delivery method, and cart context (
voila_get_active_shopping_context).Delivery Slots: List available delivery slots for a given destination and region (
voila_get_slot_listings), and reserve a specific slot after explicit user confirmation (voila_reserve_slot).Product Discovery:
Search for products by text query (
voila_search_products)Browse products by category ID (
voila_get_category_products)Fetch discounted/promotional products with configurable savings thresholds, sorting, pagination, and optional text filtering (
voila_get_discounted_products)
Cart Management: View the current cart with totals, limited/unavailable items, and pricing notices (
voila_get_cart); add (voila_add_cart_items) or remove (voila_remove_cart_items) product quantities using product UUIDs.Order History: List completed orders with pagination (
voila_get_completed_orders), retrieve item-level details for a specific order (voila_get_order_details), and aggregate previously ordered items across orders with optional date-range filtering (voila_get_completed_order_items).
Voila MCP
Voila MCP is a Model Context Protocol server for safe personal Voila grocery automation. It exposes small, auditable tools for product search, category browsing, discounts, delivery slots, cart deltas, and completed order history without exposing checkout or order placement.
Published on npm as @firfi/voila-mcp. The repository also includes @firfi/voila-sdk and @firfi/voila-cli.
Packages
packages/voila-sdk:@firfi/voila-sdk, the TypeScript SDK for Voila sessions, search, categories, cart, order history, slots, and checkout-readiness helpers.packages/voila-mcp:@firfi/voila-mcp, a stdio MCP server exposing small auditable tools.packages/voila-cli:@firfi/voila-cli, a user CLI that reuses the MCP operation registry.
The root package is private. Publishable packages live under packages/.
Related MCP server: grocery-mcp
MCP Setup
Voila does not publish a documented third-party customer API. This server uses the same same-origin JSON endpoints as the web app, so authenticated use is session-based. Capture a session interactively with the CLI; do not store a Voila password in MCP config.
{
"mcpServers": {
"voila": {
"command": "npx",
"args": ["-y", "@firfi/voila-mcp"],
"env": {
"VOILA_AUTH_SESSION_PATH": "/absolute/path/to/session.json"
}
}
}
}If the session is missing, expired, or guest-only, tool results include authGuidance with the exact CLI login command to run. The MCP server itself does not launch a browser. A login performed while the server is running takes effect on its next tool call, without a restart.
With an explicit VOILA_AUTH_SESSION_PATH and guest mode off, the MCP server
also runs a read-only authenticated-session keepalive. Set VOILA_KEEPALIVE=0
to disable it; VOILA_KEEPALIVE_INTERVAL_SECONDS defaults to 86400 seconds
and must be at least 3600. The keepalive never bootstraps a guest and stops
as misconfigured if its configured session snapshot disappears.
Tools
voila_check_session_health: report active, guest, expired, or retryable session state.voila_get_active_shopping_context: read current region, destination, delivery method, and cart context.voila_get_slot_listings: list delivery slots for an explicit destination and region.voila_reserve_slot: reserve a caller-selected slot only with explicit confirmation flags.voila_search_products: search products for the current session context.voila_get_category_products: fetch products for a Voila category id.voila_get_discounted_products: scan promotions and return meaningful discounted products.voila_get_completed_orders: read completed orders with cursor pagination.voila_get_order_details: read item-level details for one completed order.voila_get_completed_order_items: aggregate previously ordered items across completed orders.voila_get_cart: read active cart totals, limited items, unavailable data, and pricing notices.voila_add_cart_items: add quantity deltas using Voila product UUIDs.voila_remove_cart_items: remove quantity deltas using Voila product UUIDs.
The server does not expose checkout or order-placement tools. Cart mutations use quantity deltas and return server notices for limited, unavailable, and pricing-change cases.
Transports
Stdio is the default for local MCP clients:
npx -y @firfi/voila-mcpHTTP is available for registry inspection and deployments behind a trusted gateway:
MCP_TRANSPORT=http MCP_HTTP_HOST=0.0.0.0 PORT=8080 VOILA_GUEST=1 npx -y @firfi/voila-mcpThe HTTP endpoint is /mcp unless MCP_HTTP_PATH is set. VOILA_GUEST=1 forces guest-session behavior for safe introspection environments such as Glama. Do not expose HTTP with a real session file directly to the public internet; put authentication and access control in front of /mcp.
CLI
voila auth login --session ~/.config/voila/session.json
voila auth status --json
voila auth keepalive --interval 86400
voila search "milk"
voila orders list
voila orders details <order-id>
voila orders items --from-date 2026-06-01 --to-date 2026-06-30
voila cart getThe CLI default session path is ~/.config/voila/session.json. Browser login uses a persistent Playwright profile at ~/.cache/voila/browser-profile unless --profile is provided; log in manually and close the browser window to save.
Verification
pnpm check-all
pnpm package:auditLive endpoint smoke tests remain opt-in. Do not run live cart mutation tests against a real account unless the test cleans up and the caller explicitly asks for it.
Available Tools
13 toolsvoila_add_cart_itemsAdd Cart ItemsADestructive
Add product quantity deltas to the active cart using Voila product UUIDs.
Inputs: items (required).
voila_check_session_healthCheck Session HealthARead-onlyIdempotent
Check whether the configured Voila session is active, retryable, expired, or guest-only.
Inputs: no named parameters.
voila_get_active_shopping_contextGet Active Shopping ContextCRead-onlyIdempotent
Read the active Voila delivery and cart context. Preferred first step for order planning before product discovery because availability and pricing are session and slot-context sensitive.
Inputs: regionId.
voila_get_cartGet CartARead-onlyIdempotent
Fetch the current active cart with totals, limited items, unavailable data, and pricing notices.
Inputs: no named parameters.
voila_get_category_productsGet Category ProductsARead-onlyIdempotent
Fetch products for a Voila category id for the current session context. Product availability and pricing are session and slot-context sensitive, so prefer checking slots first when planning an order.
Inputs: categoryId (required), pageSize, pageToken.
voila_get_completed_order_itemsGet Completed Order ItemsARead-onlyIdempotent
Aggregate previously ordered items across completed orders, optionally within a date range.
Inputs: toDate, fromDate, pageSize, maxOrders, +1 more.
voila_get_completed_ordersGet Completed OrdersARead-onlyIdempotent
Fetch completed Voila orders with cursor pagination for the authenticated account.
Inputs: pageSize, pageToken.
voila_get_discounted_productsGet Discounted ProductsARead-onlyIdempotent
Fetch discounted Voila products from promotions. Product availability and pricing are session and slot-context sensitive, so prefer checking slots first when planning an order. By default returns only meaningful discounts ($0.50 or 10% savings); lower thresholds only when the user asks. Query matches are filtered locally and include scan metadata.
Inputs: sort, query, pageSize, pageToken, +4 more.
voila_get_order_detailsGet Order DetailsARead-onlyIdempotent
Fetch item-level details for one completed Voila order by order id.
Inputs: orderId (required).
voila_get_slot_listingsGet Slot ListingsARead-onlyIdempotent
List available Voila delivery slots for an explicit delivery destination and region. Preferred first step for order planning; this is read-only and does not reserve a slot.
Inputs: regionId (required), deliveryDestinationId (required), numberOfDays, viewingLocation, +2 more.
voila_remove_cart_itemsRemove Cart ItemsADestructive
Remove product quantity deltas from the active cart using Voila product UUIDs.
Inputs: items (required).
voila_reserve_slotReserve SlotADestructive
Reserve a caller-selected Voila delivery slot. This is a mutation and should only be called after a latest slot listing and explicit user confirmation.
Inputs: slotId (required), regionId (required), deliveryDestinationId (required), confirmSlotReservation (required), +2 more.
voila_search_productsSearch ProductsARead-onlyIdempotent
Search Voila products by text query for the current session context. Product availability and pricing are session and slot-context sensitive, so prefer checking slots first when planning an order.
Inputs: query (required), pageSize, pageToken.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Each tool targets a distinct operation: cart management, session health, shopping context, product discovery (by category, search, discounts), slot operations, and order history. No two tools overlap in purpose.
All tool names follow the consistent pattern 'voila_verb_noun' in snake_case (e.g., voila_add_cart_items, voila_reserve_slot). No mixing of conventions or vague verbs.
With 13 tools, the set is well-scoped for a grocery ordering assistant. It covers core operations without being overwhelming or sparse.
The tool surface covers product discovery, cart operations, slot reservation, and order history. A minor gap is the lack of a category listing tool, but the domain is otherwise well-covered.
Maintenance
Related MCP Connectors
Grocery meal planning, budgets, and flyer deals for Canadian households. Auth required.
Real-time data APIs for 50+ commerce, grocery, social and maps platforms over one OAuth MCP server
USDA FoodData Central nutrient lookup, FDA recall watch, EU FMCG labelling via remote MCP
Search multi-merchant supply, checkout, and track orders via MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceControl your grocery cart with AI! This MCP server enables LLMs (like Claude) to search past orders, find products, and manage your shopping cart across all Loblaws-owned grocery banners.11AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceMCP server for grocery-related web automation using Playwright, enabling AI assistants to interact with grocery websites.ISC
- AlicenseAqualityDmaintenanceEnables product search, product detail, online availability, and store finder for RONA's catalogue via MCP tools.4PolyForm Noncommercial 1.0.0
- AlicenseNot gradedqualityBmaintenanceMCP server for La Belle Vie grocery that lets an AI agent search the catalog, manage the basket, reorder past orders, check delivery coverage and slots, and prepare a ready-to-pay checkout summary without automating payment.2MIT