Domino's — Printing Press CLI
Prerequisites: Install the CLI
This skill drives the
binary.
You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
- Install via the Printing Press installer:
bash
npx -y @mvanhorn/printing-press install dominos --cli-only
- Verify:
- Ensure (or ) is on .
If the
install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.23+):
bash
go install github.com/mvanhorn/printing-press-library/library/food-and-dining/dominos/cmd/dominos-pp-cli@latest
If
reports "command not found" after install, the install step did not put the binary on
. Do not proceed with skill commands until verification succeeds.
When to Use This CLI
Use this CLI when an agent or power user needs to interact with Domino's outside a browser — building, pricing, and placing orders, tracking deliveries, comparing prices across stores, optimizing deal selection, or replaying saved order templates. Excellent for automation: every command supports --json, --dry-run, --agent, --select, and structured exit codes. Local SQLite store enables features the public API cannot serve directly (deal optimization, multi-store wait-time comparison, named order templates). DO NOT use this CLI for: other pizza chains (Pizza Hut, Papa John's, etc.), generic food delivery (DoorDash, Uber Eats), restaurant search/aggregation, or non-US Domino's storefronts (only US endpoints are supported).
Unique Capabilities
These capabilities aren't available in any other tool for this API.
Local state that compounds
-
— Save your usual order — store, address, items, toppings, payment ref — and replay it with one command.
Reach for this when an agent or user wants a one-command repeat of a known-good order without rebuilding the cart from scratch.
bash
dominos-pp-cli template save friday-night --from-cart && dominos-pp-cli template order friday-night --eta-watch --json
-
— Replay your last order against today's menu; FTS-substitute items the menu rotated out so the order still goes through.
Reach for this when a saved-order-style replay must survive Domino's menu rotation; substitution avoids the 'this item is no longer available' failure.
bash
dominos-pp-cli reorder --last --substitute-unavailable --dry-run --json
-
— Cross-reference your cart against every available deal (incl. loyalty-exclusive) and report the lowest-priced combination.
Reach for this before placing an order whenever the user cares about price; the flag enumerates 2-3-deal combinations the website never surfaces.
bash
dominos-pp-cli deals best --agent
-
— Aggregate your synced order history into spending totals, item frequency, favorite stores, and average order value.
Reach for this when 'how much have I spent on pizza this quarter' or 'what are my top 3 items' is the question. Powered entirely by the local SQLite order history.
bash
dominos-pp-cli analytics --period 90d --group-by item --agent
Cross-source insights
-
— Same cart priced at every nearby store; rank by total including delivery fee.
Reach for this when latency-or-price tradeoffs across nearby stores matter (delivery fee + wait time can offset a cheaper menu).
bash
dominos-pp-cli compare-prices --address "421 N 63rd St" --city "Seattle WA" --items S_PIZPH,S_LAVA --agent
-
— Pull CartEtaMinutes for every store in radius and rank by ETA — the unique GraphQL BFF op every other wrapper ignores.
Reach for this when busy-hour delivery decisions need accurate wait estimates rather than a phone call to the store.
bash
dominos-pp-cli stores wait --address "421 N 63rd St" --city "Seattle WA" --agent
-
— List which advertised deals actually apply to your current cart and explain why each non-matching one fails.
Reach for this when the user is hunting for a coupon and needs to understand the predicate gap, not just whether 'a deal' applies.
bash
dominos-pp-cli deals eligible --agent
Agent-native plumbing
-
— Stream Domino's tracker stages — placed → prep → bake → quality check → out → delivered — until the order arrives.
Reach for this when an agent or user wants to know precisely when a placed order changes stage without holding open a browser tab.
bash
dominos-pp-cli track --phone 2065551234 --watch --interval 30s --agent
-
— Replay a template, validate, price, place (with --confirm), and tail the tracker — all in one command emitting a final JSON envelope.
Reach for this when an agent or automation wants to trigger an order and exit cleanly with structured {order_id, eta_min, total, tracker_phone}
output.
bash
dominos-pp-cli order-quick --template friday-night --confirm --eta-watch --json
HTTP Transport
This CLI uses Chrome-compatible HTTP transport for browser-facing endpoints. It does not require a resident browser process for normal API calls.
Discovery Signals
This CLI was generated with browser-observed traffic context.
- Capture coverage: 0 API entries from 0 total network entries
- Auth signals: bearer_token
Command Reference
customer — Customer profile, order history, and loyalty (requires
)
dominos-pp-cli customer loyalty
— Loyalty points balance, tier status, and pending points for the customer.
dominos-pp-cli customer orders
— List the customer's recent orders. Returns full Order objects (Address, Products, Amounts, Coupons, Status, etc.)...
graphql — GraphQL BFF operations (discovered via sniff)
dominos-pp-cli graphql categories
— Get menu categories for a store
dominos-pp-cli graphql create_cart
— Create a new shopping cart
dominos-pp-cli graphql customer
— Get authenticated customer profile with saved addresses and preferences
dominos-pp-cli graphql deals_list
— Get available deals and coupons for a store
dominos-pp-cli graphql get_cart
— Get cart by ID with items and pricing
dominos-pp-cli graphql loyalty_deals
— Get member-exclusive deals
dominos-pp-cli graphql loyalty_points
— Get loyalty points balance and status
dominos-pp-cli graphql loyalty_rewards
— Get available loyalty rewards by tier
dominos-pp-cli graphql products
— Get products in a category with customization options
dominos-pp-cli graphql quick_add_product
— Quick-add a product to cart by code
dominos-pp-cli graphql summary_charges
— Get cart totals including tax and delivery fee
menu — Browse store menus and search for items
dominos-pp-cli menu <storeID>
— Get the full menu for a store with categories, products, variants, and toppings
orders — Create, validate, price, and place orders
dominos-pp-cli orders place
— Place an order for delivery or carryout
dominos-pp-cli orders price
— Get the price for an order including taxes and fees
dominos-pp-cli orders validate
— Validate an order before placing it
stores — Find and get information about Domino's stores
dominos-pp-cli stores find
— Find nearby Domino's stores by address
dominos-pp-cli stores get
— Get detailed store information including hours, capabilities, and wait times
tracking — Track active orders
- — Track an order by phone number
Finding the right command
When you know what you want to do but not which command does it, ask the CLI directly:
bash
dominos-pp-cli which "<capability in your own words>"
resolves a natural-language capability query to the best matching command from this CLI's curated feature index. Exit code
means at least one match; exit code
means no confident match — fall back to
or use a narrower query.
Recipes
Full real-world flow: closest store → menu → cart → deals
bash
# 1. Find closest store (no auth needed)
dominos-pp-cli stores find --address "709 19th Ave" --city "Seattle WA 98122" --json
# 2. List all coupons available at that store (no auth needed; 58 coupons)
dominos-pp-cli deals list --store-id 7144 --json
# 3. Build a cart (local, no API call)
dominos-pp-cli cart new --store 7144 --service Delivery --address "709 19th Ave, Seattle WA 98122"
dominos-pp-cli cart add 12THIN --qty 1 # Medium 12" Thin Pizza
dominos-pp-cli cart add F_PBITES --qty 1 # Parmesan Bread Bites
# 4. See which coupons auto-apply (real auto-couponing-service call)
dominos-pp-cli deals best --json
dominos-pp-cli deals eligible --json
Every step talks to a real Domino's endpoint and returns real data. The deals call correctly identifies which store coupons fulfill your specific cart.
Friday night reorder, hands-off
bash
dominos-pp-cli order-quick --template friday-night --confirm --eta-watch --json
Replay a saved template, validate, price, place (with --confirm), and tail the tracker. Emits a final JSON envelope with order_id, eta_min, and total. Requires a template named friday-night — see
.
Without , returns a dry-run preview (no order placed).
Authenticated commands (after )
bash
# Order history
dominos-pp-cli customer orders --limit 5 --json
# Loyalty points balance
dominos-pp-cli customer loyalty --json
Customer ID is the long base64-style identifier from your sign-in. Once
completes, the bearer token persists in
~/.config/dominos-pp-cli/config.toml
until Dominos expires it (~1 hour).
Find the cheapest store for tonight's order (agent + select for narrow output)
bash
dominos-pp-cli compare-prices --address "421 N 63rd St" --city "Seattle WA" --items S_PIZPH,S_LAVA --agent --select results[].store_id,results[].total_cents
Surveys nearby stores and returns only the comparison fields the agent needs.
Hunt for the best stacked deal
bash
dominos-pp-cli deals best --agent
Tries every available deal — including 2-3 deal stacked combinations — against the active cart and reports the lowest-priced combination plus the deal codes.
Watch a delivery in real-time
bash
dominos-pp-cli track --phone 2065551234 --watch --interval 30s --agent
Streams status transitions every 30 seconds (placed → prep → bake → qc → out → delivered) until the order arrives. Exits 0 on delivered.
Why is this deal not applying to my cart?
bash
dominos-pp-cli deals eligible --agent
Lists deals against the active cart and explains eligibility against each deal's predicates.
Auth Setup
Most commands work without authentication: store locator, menu browse, cart building, anonymous order placement, and tracking-by-phone all succeed unauthenticated. For loyalty rewards, member-exclusive deals, and order history, run
dominos-pp-cli auth login
— it spawns a Chrome window pointed at dominos.com sign-in, waits for you to complete a normal login (handles captcha and 2FA), then reads the bearer token from sessionStorage and saves it to
~/.config/dominos-pp-cli/config.toml
. The token persists until Domino's expires it (~1 hour). Run
to confirm;
to clear.
Agent Mode
Add
to any command. Expands to:
--json --compact --no-input --no-color --yes
.
-
Pipeable — JSON on stdout, errors on stderr
-
Filterable —
keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
bash
dominos-pp-cli stores get mock-value --agent --select id,name,status
-
Previewable —
shows the request without sending
-
Non-interactive — never prompts, every input is a flag
-
Explicit retries — use
only when an already-existing create should count as success
Agent Feedback
When you (or the agent) notice something off about this CLI, record it:
dominos-pp-cli feedback "menu sync skipped nutrition fields for half the items"
dominos-pp-cli feedback --stdin < notes.txt
dominos-pp-cli feedback list --json --limit 10
Entries are stored locally at
~/.dominos-pp-cli/feedback.jsonl
. They are never POSTed unless
DOMINOS_FEEDBACK_ENDPOINT
is set AND either
is passed or
DOMINOS_FEEDBACK_AUTO_SEND=true
. Default behavior is local-only.
Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Output Delivery
Every command accepts
. The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
| Sink | Effect |
|---|
| Default; write to stdout only |
| Atomically write output to (tmp + rename) |
| POST the output body to the URL ( or when ) |
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
Named Profiles
A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
dominos-pp-cli profile save briefing --json
dominos-pp-cli --profile briefing stores get mock-value
dominos-pp-cli profile list --json
dominos-pp-cli profile show briefing
dominos-pp-cli profile delete briefing --yes
Explicit flags always win over profile values; profile values win over defaults.
lists all available profiles under
so introspecting agents discover them at runtime.
Exit Codes
| Code | Meaning |
|---|
| 0 | Success |
| 2 | Usage error (wrong arguments) |
| 3 | Resource not found |
| 4 | Authentication required |
| 5 | API error (upstream issue) |
| 7 | Rate limited (wait and retry) |
| 10 | Config error |
Argument Parsing
- Empty, , or → show output
- Starts with → ends with → MCP installation; otherwise → see Prerequisites above
- Anything else → Direct Use (execute as CLI command with )
MCP Server Installation
- Install the MCP server:
bash
go install github.com/mvanhorn/printing-press-library/library/food-and-dining/dominos/cmd/dominos-pp-mcp@latest
- Register with Claude Code:
bash
claude mcp add dominos-pp-mcp -- dominos-pp-mcp
- Verify:
Direct Use
- Check if installed:
If not found, offer to install (see Prerequisites at the top of this skill).
- Match the user query to the best command from the Unique Capabilities and Command Reference above.
- Execute with the flag:
bash
dominos-pp-cli <command> [subcommand] [args] --agent
- If ambiguous, drill into subcommand help:
dominos-pp-cli <command> --help
.