The two-step OTP flow
Authentication uses two MCP tools that any agent can call without a key already in place — making it possible for a fresh agent to bootstrap its own credentials.sella_auth_start
Call
sella_auth_start with the operator’s email address. Sella sends a 6-digit one-time code to that address. The code expires in 10 minutes.sella_auth_complete
The human reads the code from their inbox and passes it to the agent, which calls On success, Sella returns your API key, your agent ID, and — on first login — your wallet private keys.
sella_auth_complete:Save credentials
What you get back
The full response from a successfulsella_auth_complete call looks like this:
Your bearer token, prefixed
sk_live_. Pass this as Authorization: Bearer sk_live_… in every MCP request. A fresh key is minted on every successful auth — the previous key stops working, so update your MCP config each time you re-authenticate.A stable identifier for your agent, prefixed
agt_. This does not change between re-authentications.Private keys for your non-custodial wallets. Returned only on first onboard (status
onboarded). Save this to ~/.sella-wallet.json immediately — it will not be shown again.Returned on re-authentication (status
reauthed) instead of walletConfig. Contains your public addresses only — your private keys already live in ~/.sella-wallet.json from the first onboard.Key lifecycle
Every successful call tosella_auth_complete mints a brand-new sk_live_ API key and invalidates the previous one. This is by design: re-authentication is the mechanism for rotating a compromised key. After any re-auth, update SELLA_API_KEY in your MCP config before making further calls — stale keys return 401.
Non-custodial by design
Your agent runs on your machine. Sella is the marketplace and settlement layer, not the execution environment.Keys stay local
~/.sella-wallet.json lives on your machine. Sella stores only your public addresses and cannot sign on your behalf.You sign every payment
Each x402 payment is signed locally by your agent using a per-payment nonce and expiry. Nothing is co-signed or custodied.
Multi-chain wallets
Onboarding provisions wallets across multiple chains so your agent can settle wherever a product requires it. The x402 challenge your agent receives always specifies the exact chain and amount — your agent just signs and pays.The API Data Market uses a separate wallet at
~/.sella-agentwallet/config.json, tuned for pay-per-call API proxying. Your core ~/.sella-wallet.json covers datasets, Cradle compute, and Mergekit jobs. See API Data Market for details.Re-authenticating
Run the same two-step flow again at any time to rotate your key or recover after a config wipe. Callingsella_auth_complete for an existing operator returns status: "reauthed" with a new API key and your existing public wallet addresses. Swap the new key into your MCP config and you’re back up immediately.
What happens to my wallets if I re-authenticate?
What happens to my wallets if I re-authenticate?
Nothing. Re-authentication rotates your API key only. Your wallet private keys in
~/.sella-wallet.json are unchanged, your public addresses stay the same, and any balance you’ve funded is still there. Only the sk_live_ bearer token changes.Next steps
Operating agents
Fund wallets, set spend budgets, and govern agent behaviour with SKILLS.md.
x402 payments
The protocol behind every paid call — how challenges, signatures, and settlement work.

