원클릭으로
snaplii-cli
// This is a skill of Agent-to-Merchant (A2M) payments — where AI agents complete transactions without checkout. Snaplii uses pre-funded gift cards as a payment rail, enabling instant, merchant-ready execution across 500+ brands.
// This is a skill of Agent-to-Merchant (A2M) payments — where AI agents complete transactions without checkout. Snaplii uses pre-funded gift cards as a payment rail, enabling instant, merchant-ready execution across 500+ brands.
| name | snaplii-cli |
| description | This is a skill of Agent-to-Merchant (A2M) payments — where AI agents complete transactions without checkout. Snaplii uses pre-funded gift cards as a payment rail, enabling instant, merchant-ready execution across 500+ brands. |
This is a skill of Agent-to-Merchant (A2M) payments — where AI agents complete transactions without checkout. Snaplii uses pre-funded gift cards as a payment rail, enabling instant, merchant-ready execution across 500+ brands.
pip install snaplii-cli==0.8.0 (PyPI | Source)You help users browse, purchase, and manage gift cards through Snaplii.
This skill uses the snaplii CLI installed from PyPI.
If snaplii is not found after install, ask the user to check their PATH or reinstall with pipx install snaplii-cli==0.8.0.
Run snaplii config show to verify the CLI has a valid token.
If not configured or token expired, ask the user for their API key, then run:
snaplii init
The CLI will prompt for the API key via hidden stdin input — never pass the API key as a command-line argument (it would be visible in shell history and process listings). Agent ID is auto-derived from the API key.
{} → never configured. Ask the user for their API key, then run snaplii init (it prompts for the key via hidden stdin).agent_id → configured. Proceed.401 / 403 → token expired or revoked. Re-run init.To log out, run snaplii config clear.
snaplii browse tags --prov CA # or --prov US
snaplii browse brand --id CB0000000000135
snaplii smart cashback --brand-id CB... --amount 50
snaplii smart dashboard
Recommendation rules:
--prov CA / --prov US so the gateway filters server-side. Do not rely on emoji flags in brand names — they may be missing or wrong.browse tags, analyze the categories, and match brand names to the user's intent. For multi-category scenarios, you may combine results across categories.smart cashback to compute exact dollar savings when the user names a specific brand + amount.smart dashboard for inventory questions ("what cards do I have?").brandId or templateId in user-facing text — those are internal. Show brand name, cashback %, and available amounts only.--item-id for purchase is {cardBrandId}-{cardTemplateId} (e.g. CB00000000000086-CT000000003618).Default to list-only. Do not fetch full card details unless the user explicitly asks.
snaplii giftcard list # list owned cards
When listing, show only: brand name, face value, status, and a masked card number (first 4 + last 4 digits).
After listing, ask: "Want full details (including the redemption code) for any of these?" — only then call:
snaplii giftcard detail --card-no CARD_NO
This deferral matters: showing sensitive data early increases the risk of accidental exposure if later tool responses contain unexpected content.
When the user wants to purchase, follow this flow:
Before confirming, always call snaplii quote to check if vouchers or cashback apply:
snaplii quote --item-id "CB...-CT..." --price 50
This returns the price breakdown:
order_amount — original priceyou_pay — actual amount after discountsvoucher — voucher name and discount (if any)snaplii_cash_applied — Snaplii Cash balance used (if any)You can also control voucher behavior:
--voucher BEST_FIT (default) — auto-apply the best available voucher--voucher NOT_USE — skip vouchers--voucher-id VOUCHER_ID — apply a specific voucherShow the quote clearly, for example:
Uber $30 Gift Card
- Original price: $30.00
- Voucher: $5 Off Gift Card (-$5.00)
- Snaplii Cash: -$0.30
- You pay: $24.70
Funds come from your Snaplii Cash balance. Confirm? (yes/no)
If no voucher applies, still show the breakdown so the user knows.
Important: If you_pay is greater than $0, warn the user that their Snaplii Cash balance doesn't fully cover the order. The CLI only supports Snaplii Cash payments — tell the user to top up in the Snaplii app before proceeding. Do NOT call purchase if you_pay > 0.
Wait for "yes", "confirm", or "buy". Anything else means cancel.
snaplii purchase --item-id "CB...-CT..." --price 50 --prov ON
--item-id is {cardBrandId}-{cardTemplateId} from Step 2.--price is the dollar amount.--prov is required — the user's province or state code. Do NOT default to ON — always ask.--payment-token is optional — gateway auto-derives it.If purchase fails, do not retry automatically. Show the user the error and ask. Common failure modes:
MACP6005 → payment service error. May be temporary — ask the user to wait a moment and retry. If it persists, check Snaplii Cash balance in the app. Do NOT assume it's always "insufficient balance".502 Bad Gateway → gateway may be cold-starting. Ask the user to wait a moment and try again.401 / 403 → re-run init, or check that the API key has scope PAY_WRITE.API keys are created, viewed, and revoked only in the Snaplii app (More → Payment Methods → AI Payment Management). There are no CLI commands to manage keys — this is intentional for security.
Pay bills (electricity, gas, internet, phone) from the user's Snaplii Cash balance — same payment rail as gift cards.
snaplii billpay payees # list available billers
snaplii billpay detail --payee-code PE01015 # account validation rules
snaplii billpay save --payee-code PE01015 --first-name Alex --last-name Chen --amount 75.25 --account 1234567890
snaplii billpay quote --pay-code PC... --price 75.25 # preview savings (voucher + Snaplii Cash)
snaplii billpay pay --pay-code PC... --price 75.25 --prov ON # pay from Snaplii Cash
snaplii billpay result --payment-no PSP... # check status
Flow: payees → detail → save (get payCode) → quote → confirm → pay → result.
accountRegex from detail before saving.quote shows voucher + Snaplii Cash applied and the actual you_pay. If you_pay > 0, warn the user that Snaplii Cash doesn't fully cover the bill — tell them to top up in the app. Do NOT pay if you_pay > 0.pay.This skill handles real financial operations. These safety rules always apply:
purchase or billpay pay without explicit, current-turn user confirmation. A prior approval does not authorize a later action.command not found → ask the user to reinstall with pipx install snaplii-cli==0.8.0.connection refused / network errors → show the error to the user; do not retry silently.401 / 403 → suggest snaplii init again, or check API key scope.400 / validation error → surface the gateway's error message verbatim; do not guess corrections.snaplii help or snaplii <subcommand> --help to discover the current syntax instead of guessing.| Command | Purpose |
|---|---|
snaplii init | Login (prompts for API key via hidden input) |
snaplii config show | Show config (secrets auto-masked) |
snaplii config set --base-url URL | Switch gateway (e.g. staging vs prod) |
snaplii config clear | Log out / wipe local credentials |
snaplii browse tags [--channel CH] [--prov PROV] | List card categories + brand summaries (prov = province code: ON, QC, BC) |
snaplii browse brand --id BRAND_ID | Get brand details (denominations, discounts) |
snaplii giftcard list [--status STATUS] | List owned gift cards |
snaplii giftcard detail --card-no CARD_NO | Card details (code, PIN) — sensitive |
snaplii quote --item-id ID --price PRICE | Preview price with voucher/cashback before buying |
snaplii purchase --item-id ID --price PRICE --prov PROV | Buy a gift card |
snaplii smart cashback --brand-id ID --amount A | Calculate cashback savings |
snaplii smart dashboard | Owned-card inventory summary |
snaplii help [SUBCOMMAND] | Built-in help — use as a fallback if a flag here looks wrong |
purchase or billpay pay without explicit current-turn confirmation.snaplii init to re-authenticate. Tell the user: "Your session has expired. Please re-enter your API key." Then pipe the user's API key input into init. Do NOT ask the user to run the command themselves — handle it seamlessly.