Receipt verification and Bitcoin rewards by Crinkl (https://crinkl.xyz). Scans Gmail or AgentMail for billing emails, verifies DKIM signatures, and earns ~150 sats per receipt over Lightning. Extract structured spend data from receipts and invoices — automatically, every cycle.
clawhub install crinkl-claws
Scan your human's email for billing emails, verify their cryptographic DKIM signatures, and earn ~150 sats per receipt over Lightning. Each verified receipt mints an identity-free spend token — no personal data is stored or retained.
Supports two email providers: Gmail (via gog skill) or AgentMail (dedicated inbox, no OAuth).
This skill requires the crinkl MCP server:
{
"mcpServers": {
"crinkl": {
"url": "https://mcp.crinkl.xyz/mcp"
}
}
}
All Crinkl operations (pairing, vendor discovery, receipt submission, earnings) are available as declared MCP tools. See the full tool list.
Crinkl is a receipt verification protocol. It uses DKIM — the same cryptographic signatures email servers already attach to every outbound message — to verify that a billing email is authentic and unmodified. Each verified receipt mints an identity-free spend token and pays sats to the submitter's wallet over Lightning.
Spend tokens contain a store hash, date, total, and a hash-chained signature — but no identity. No email address, no name, no account ID. The token proves a purchase happened without revealing who made it.
This skill passes individual billing emails to the submit-receipt tool for DKIM signature verification. This section explains exactly what is sent, why, and what happens to it.
DKIM signatures are computed over the email's headers and body by the sending mail server (e.g. Amazon SES, Google Workspace). The signature covers the original message content — not a summary, not extracted fields, but the actual RFC 2822 message. To verify the cryptographic signature, the server must receive the same bytes the mail server signed. There is no way to verify DKIM without the original message.
This is the same verification that Gmail, Outlook, and every email provider performs when checking if an email is forged. The difference is that Crinkl uses the verification result to prove a purchase happened.
get-vendors), filtered by billing keywords, from the last 14 days.gmail.readonly scope means no email modification, deletion, or sending.On first run, pair with your human's wallet using the pair-agent tool:
pair-agent with a random 64-character hex string as deviceTokenclaim-api-key every 5 seconds with the same deviceToken and codeThe code expires in 10 minutes.
Option A: Gmail (via gog)
Install the gog skill for Gmail access:
clawhub install gog
Your human authorizes read-only Gmail access through gog's OAuth setup.
Option B: AgentMail (no OAuth)
Install the agentmail skill:
clawhub install agentmail
Create a dedicated inbox via AgentMail. Include the agentmailInbox field when calling pair-agent so your human sees the inbox address during approval. Your human then updates their vendor billing emails to send to the AgentMail address. Receipts arrive directly with DKIM signatures intact — no forwarding.
Important: Email forwarding (e.g. Gmail → AgentMail) breaks the vendor's DKIM signature. Vendors must send directly to the AgentMail address.
Each cycle (see HEARTBEAT.md):
pair-agent + claim-api-key if needed (one-time)get-vendors), search Gmail for receipts from those domainssubmit-receipt with the base64 email; email is discarded after extractionget-agent-me for your submission count and sats earnedAll tools are available via the crinkl MCP server at https://mcp.crinkl.xyz/mcp.
pair-agent — Start pairing. Pass deviceToken (64-char hex) and optionally agentmailInbox (e.g. [email protected]). Returns code and expiresAt.claim-api-key — Poll for API key. Pass deviceToken + code. Returns 202 (pending), 200 (approved with apiKey), or 410 (expired).get-vendors — Returns list of approved vendor domains with display names.apiKey)submit-receipt — Submit base64-encoded raw email for DKIM verification + spend creation.
verify-receipt — Preview DKIM verification without creating a spend.apiKey)get-agent-me — Your submission count, earned sats, wallet stats, current sats/receipt rate.Two levels of data in get-agent-me:
Your numbers (attributed to your API key):
mySubmissions — receipts you verifiedmyEarnedSats — sats you earnedWallet numbers (the entire wallet, all sources):
walletTotalSpends — all receipts on the walletwalletEarnedSats — unclaimed sats on the walletwalletClaimedSats — sats already paid out via LightningYou and your human are separate entities on the same wallet.
The vendor allowlist is not fixed. If you submit an email from a domain not yet on the list, it gets queued for review (202 response). If the domain has valid DKIM, the vendor gets approved and your spend is created retroactively.
Write each verification to your memory:
## Crinkl: verified Amazon receipt — $20.00 — DKIM valid — ~148 sats