TikTato Play now
PayPal AI Hackathon · live in the PayPal sandbox

The agent can pay.
Only inside the mandate you approve.

TikTato is a live 1v1 tic-tac-toe arena where Tato, a Claude-powered wallet agent, buys coins with your saved PayPal account, with no redirect and never beyond the limits you set.

Demo login alice545 · Rimpel12 PayPal is already saved and Autopilot is on.
$0received through PayPal (sandbox)
0completed PayPal orders
0🤖 Autopilot charges, no redirect
0agent actions logged
0live matches played
✓ Balancedledger right now

Live numbers from the production database, refreshed on every visit.

The problem

Small top-ups break the game.
Agents could help, if they couldn't overspend.

✍️

Mandate = consent

The player approves exact terms once, in plain words: pack size, refill level, weekly cap and expiry.

🧱

Caps = safety

Every charge is checked on the server. The agent physically can't spend outside the mandate.

🔎

Audit = trust

Every agent action, every coin and every PayPal order is visible in a live dashboard.

Headline feature

Tato Autopilot

Agentic payments under a mandate the player approved.

  1. 1
    Save PayPal onceVault v3 setup token → the buyer approves on PayPal → payment token. No card or account data is stored.
  2. 2
    Approve a mandate“Buy a $5 pack when my balance falls below 200 coins, up to $20 per week, for 60 days.” The exact consent text is stored.
  3. 3
    The agent pays inside itOrders v2 with the saved vault_id: no redirect, and never beyond the mandate.
  • Pack size and weekly cap from the mandate
  • At most 3 packs per day
  • 2-minute cool-down, claimed atomically
  • The player's own weekly PayPal limit
  • Expiry date and auto-pause after declines
  • Pause or revoke in one tap
Autopilot mandate card in the wallet: $5 per top-up when below 200 coins, $20 weekly cap
The approved mandate
Tato charging the saved PayPal account for 475 coins with no redirect
A real charge, no redirect
Built deep on PayPal

Every PayPal call runs on the server

The browser never sees a secret, and the server sets every amount and credits it exactly once.

OAuth 2.0

POST /v1/oauth2/token

Client-credentials token. The secret stays in a server-only config.

Orders v2 · create

POST /v2/checkout/orders

Amount set by the server, PayPal-Request-Id idempotency, English experience context.

Orders v2 · capture

POST /v2/checkout/orders/{id}/capture

Checks COMPLETED, amount, currency and reference, then credits once. Handles ORDER_ALREADY_CAPTURED.

Vault v3 · setup token

POST /v3/vault/setup-tokens

The buyer approves saving PayPal for Autopilot. A lost redirect is recovered with GET.

Vault v3 · payment token

POST · DELETE /v3/vault/payment-tokens

Only the token and a masked email are kept. “Remove saved PayPal” deletes it at PayPal.

Off-session order

payment_source.paypal.vault_id

Autopilot charges with no redirect, inside the mandate's caps and cool-down.

Webhooks

POST /v1/notifications/verify-webhook-signature

Signature verified. Handles CHECKOUT.ORDER.APPROVED and PAYMENT.CAPTURE.COMPLETED as a backup credit path.

Exactly-once money

idem_key UNIQUE · WHERE coins >= ?

A double-entry ledger (player, escrow, platform), atomic debits and row-locked settlement.

📱 Player→🤖 Tato proposes→🛡️ Server checks mandate & limits→💳 PayPal Orders / Vault→🧾 Ledger, once
Tato preparing a $10 PayPal checkout card in chat
Tato prepares a checkout and stops: you approve on PayPal.
The AI

Tato, the AI wallet agent

Claude Opus 5.5 through the Anthropic SDK, in a server-side agent loop.

  • 11 strict tools, run for the logged-in player only
  • Confirm cards for contests and mandates; PayPal approval for checkouts
  • Server-side fallback on refusals, low effort for fast chat, rate limits
  • Audit log of every message, tool call and approval
  • Ask for “free coins” and it can't help: no tool can create coins
get_walletlist_coin_packsstart_paypal_checkoutset_weekly_limitlist_open_contestspropose_contest_actionget_recent_matchesget_autopilotpropose_autopilotautopilot_topup_nowchange_autopilot
And it's a real game

Live 1v1 skill contests

Post an entry, an opponent accepts, both play live. Every move is validated on the server.

TikTato arena with the Play button and live contests
Arena · live contests
Live tic-tac-toe match with prize pool and move clock
Real-time board · 30 s clock
We have a winner screen showing +80 coins
Winner takes the pool − 20%
Entry100
×2 →
Pool in escrow200
−20% →
Winner receives160
DrawFull refund

Also: free practice against a minimax AI, weekly spending limits with a 24 h cool-down to raise them, 18+ only.

Trust

Every action is auditable

A live AG Grid dashboard: agent actions, the double-entry ledger, PayPal orders (🤖 Autopilot vs checkout) and matches, with filters, search, totals and CSV export.

Activity and audit dashboard built with AG Grid, showing KPI tiles and the ledger
2:33 demo

Watch it work, live footage only

For judges

Test it in 5 minutes

  1. Log in as alice545 and tap Ask Tato: “What's my balance?”
  2. Say “Top me up now”. Autopilot charges the saved PayPal with no redirect. Say it again, and the cool-down refuses.
  3. Say “Buy $10 of coins” to get a real PayPal sandbox checkout. Pay with any sandbox personal account.
  4. Post a contest. In a private window, log in as judge_blue and accept it. Play it out.
  5. Open Activity → Platform: every agent action, PayPal order and ledger row, with “ledger balanced ✓”.
AccountPasswordUse
alice545Rimpel12Main demo · Autopilot on · admin view
judge_blueTikTato-Judge-2026Second player
judge_redTikTato-Judge-2026Set up Autopilot from scratch