Earn cashback
Search the catalogue by country, read a store's cashback terms, and turn a store into a tracked link. A purchase through that link earns the cashback the store pays, credited to the agent's account once the store confirms it.
For AI agents
An agent registers with one Lightning payment, browses the store catalogue, generates a tracked link for the person it shops for, and receives the cashback as a Lightning payout. No signup form, no API key, no human in the loop.
Search the catalogue by country, read a store's cashback terms, and turn a store into a tracked link. A purchase through that link earns the cashback the store pays, credited to the agent's account once the store confirms it.
Confirmed cashback is paid out to the Lightning address given at registration. Payouts are automatic; there is nothing to claim and no balance to withdraw by hand.
Every agent has a referrer id. An agent registered with it earns its referrer 21% of the cashback it generates in its first year. Same programme as for people, same rate.
Register with a Nostr pubkey and a fresh bearer token is one signed event away if the old one is lost. Notifications arrive as NIP-17 direct messages, if the agent asks for them.
A request without credentials gets a 402 with a Lightning invoice for 21 sats and a macaroon. Pay the invoice, send the preimage with the registration body, and the response carries a bearer token. That is the whole account; there is no email address or password behind it.
The MCP server speaks JSON-RPC 2.0 over streamable HTTP and exposes 11 tools, from get_documentation to update_notifications. The catalogue, clicks, earnings, payouts and account settings are REST endpoints too, described in the OpenAPI specification. Tokens stay valid for 90 days after the last authenticated call and slide forward on every request, so an active agent never re-registers.
Ask for a store's visit link and the response carries a signed redirect URL with a click id. The person the agent shops for opens it, buys as usual, and the affiliate network reports the order back to us. When the store confirms, the cashback lands on the agent's account and goes out over Lightning.
Everything an agent needs is machine-readable. Start with the discovery document.
https://satsback.com/.well-known/agents.jsonendpoints, the registration flow step by step, transport details, tool nameshttps://satsback.com/llms.txtthe same surface in the shape convention-following crawlers look forhttps://satsback.com/api/openapi.jsonevery REST endpoint with request and response shapeshttps://satsback.com/.well-known/l402-servicesthe paid route and its price, in the ngx-l402 manifest shapehttps://satsback.com/api/v2/l402/registerGET or POST without credentials answers 402 with a 21-sat invoicehttps://satsback.com/api/v2/mcpJSON-RPC 2.0 over streamable HTTP with the bearer token; POST only# 1. Ask for the challenge (no credentials)
curl -sS -D - -o /dev/null https://satsback.com/api/v2/l402/register
# -> HTTP/2 402
# -> WWW-Authenticate: L402 macaroon="<macaroon>", invoice="lnbc..."
# 2. Pay the invoice (21 sats) with any Lightning wallet and keep the preimage
# 3. Complete the registration
curl -sS -X POST https://satsback.com/api/v2/l402/register \
-H 'Authorization: L402 <macaroon>:<preimage>' \
-H 'Content-Type: application/json' \
-d '{"country":"NL","lightning_address":"<your-lightning-address>"}'
# -> {"success":true,"token":"<bearer>","expires_at":"..."}
# 4. Browse the catalogue and get a tracked link
curl -sS https://satsback.com/api/v2/agent/stores/nl -H 'Authorization: Bearer <bearer>'
curl -sS https://satsback.com/api/v2/agent/store/<slug>/visit -H 'Authorization: Bearer <bearer>'
# -> {"redirect_url":"...","click_id":"...","cashback_type":"..."}The 21 sats are a one-time registration fee, paid over Lightning. The Lightning address is probed before the account is created: an unreachable one gets a 400, and the paid challenge stays valid for the retry. The token in step 3 is the agent's credential; store it the way you would store an API key.
WWW-Authenticate header (Lightning Labs L402) and an offer as a JSON body in the l402.org v0.2.2 shape; a POST with the preimage completes it. The challenge answers GET, HEAD and POST, so a directory probe sees it without a body. get_documentation returns the full reference. Independent listings, so you do not have to take our word for it.