Use AskGrokWallet from a Grok Bot

Five steps. Small things run, big things ask, everything receipts — and anyone can check a receipt without asking us. Or use the guided setup →

1

Install the skill

On your Grok host, install the plugin from GitHub:

grok plugin install richard7463/askgrokwallet --trust

The skill appears in /skills — enable it in Settings → Plugins.

2

Write the rule in plain English

payments under $50 run automatically; over $50 ask me;
daily budget $200; never pay blacklisted merchants

Trading bots get extra risk stops:

trades under $10 run automatically; over $10 ask me;
max drawdown $50; daily loss limit $20;
never trade pump-dump tokens

Account changes and deletes are gated by action type:

Ask me before cancel, downgrade, delete, or send.
Never cancel without asking.

Send the action's intentKind (cancel, downgrade, delete, send, trade, purchase, …) with the request — consequential actions default to ask unless your policy allows them.

3

Let every money move pass the gate

Before your bot pays, swaps, or transfers, it sends the request. The engine answers in one of three ways:

ALLOW · runs
Inside the rules. Auto-allowed + receipt.
ASK · waits
Over a limit, or risk stop hit. You decide.
DENY · blocked
Breaks a rule (blacklist, rug, budget).
curl -s https://askgrokwallet.io/api/approvals \
  -H 'Content-Type: application/json' \
  -d '{"source":"demo","requester":"my-bot","summary":"swap 5 USDC for ETH",
        "amountUsd":5,"target":"uniswap",
        "policyText":"trades under $10 run automatically; over $10 ask me; max drawdown $50",
        "drawdownUsd":3,"lossTodayUsd":1}'

source:"demo" is keyless. Other sources need a bearer token.

4

Approve from the inbox

An ask lands in your approval inbox. Approve or deny there (or via POST /api/approvals/{id}).

Approving or denying writes an Ed25519-signed receipt and appends it to a public log. One request produces one entry per signing moment — created, decided, settled — so "it was pending, this person approved it, this tx executed it" is all locked, not just the final state.

5

Don't take our word for it — verify it yourself

One file, no dependencies, short enough to read before you run it:

BASE=https://github.com/askgrokwallet/askgrokwallet/releases/download/verify-receipt-v1.0.1
curl -sLO $BASE/verify-receipt.mjs && curl -sLO $BASE/SHA256SUMS
shasum -a 256 -c SHA256SUMS           # check the bytes BEFORE running them
node verify-receipt.mjs receipt.json
signature  ✓  22 fields signed (v3) · key 39626850145403d3 (pinned in this file)
chain      ✓  entry 11 of 50 (imported) · links unbroken back to 1
onchain    ✓  head 11 written in 0x…  block …  · chain 11155111
verdict    ✓  genuine, and fixed onchain

What each line means, and who you have to trust for it:

  • signature — the 22 signed fields include the destination address, the amount, and the settlement tx. Pass --key= and this check runs fully offline: it never touches this server.
  • chain — your receipt is in the public log, and the log links back to entry 1 without a gap. Trusts hashes, not us. It cannot re-check other entries: the log publishes fingerprints, not contents, so their labels are still our word.
  • onchain — the head of that log is written to Sepolia daily, so everything it covers is fixed even for us. Trusts the chain, not us.

The tool prints ~ rather than a tick when a check was skipped or is not yet possible — a receipt issued minutes ago is not anchored yet, and it says so. A verifier that cries wolf is one you would learn to ignore.

And a ✓ is a statement about the record, not about a payment. An approval, a denial, and a receipt with no transaction all authenticate exactly as well as a payment does. ~ means unverified — never read it as a pass. If you need "did the money move", read the transaction the receipt names.

Before real money — two layers: the onchain guarded-execution rail is live: approve an execute-intent request here and the Jakarta worker settles it on Ethereum Sepolia automatically (verified tx, signed receipt). The hosted store is persistent (Postgres). Real-money caveats remain: the live execution rail is on the Sepolia testnet, BaseScan source verification is pending, and advisory-mode requests never block an agent-owned EOA.