Built on
Docs
Everything
in one place.
SIMD-0437 lowers Solana’s rent from 6,960 to 696 lamports per byte in five steps. Accounts opened before keep their old, higher deposit until it is withdrawn. UNRENT finds that deposit and returns it: on this site, or for AI agents through MCP and a REST API.
01 Reclaim on the site
Scan. Review.
Sign.
No account, no sign-up. A scan needs only an address; signing needs the wallet that owns it. How it works in detail →
01Scan
Paste any wallet address or connect your wallet. The scan only reads the chain: excess rent on open token accounts, empty accounts, mint excess, and dust you could burn.
02Review
See what comes back, the service fee and the net amount, account by account. Nothing is selected for burning unless you tick it.
03Sign
UNRENT builds the transactions and simulates each one. Your wallet shows them and signs; it pays the network fee and is the only signer.
04Done
The SOL lands in your wallet in the same transactions. Accounts with a balance stay open; empty ones are closed.
WithdrawExcessLamports
Open token accounts and mints
- Returns the part of the deposit above today’s minimum. The account stays open with all its tokens.
CloseAccount
Empty token accounts
- Closes the account and returns the whole deposit.
BurnChecked + CloseAccount
Dust you tick
- Only on request: burns the exact balance, then closes the account for its full deposit.
Every rent step makes more SOL reclaimable, so a wallet can reclaim again after each one. The rent reduction tracker shows which steps are live, and Portfolio scans many wallets at once.
02 Fees
Paid from what
comes back.
- Service fee
- 10% of the reclaimed SOL by default, lower for $UNRNT holders (tiers). It is the last instruction of each transaction, so your wallet shows it before you sign. Nothing is charged if nothing comes back.
- Network fee
- Solana’s transaction fee, a few thousandths of a cent per transaction, paid by your wallet. Keep a little SOL in it.
- Referral share
- With a referral code, part of the service fee goes to
the referrer. You pay the same either way. Agents pass the code as
ref. - API scans
- Only the REST API charges per call: $0.002 per wallet scan, $0.02 per portfolio scan, paid in USDC. Scans on this site and through MCP are free. Details →
03 For AI agents
Three doors.
One flow.
Agents scan, build and submit exactly like the site does, with the same server-side checks. UNRENT never sees a private key.
Free
MCP server
For Claude, Cursor, Codex and other MCP clients. Four tools, no API key.
Pay per scan
REST API
Plain HTTP and OpenAPI. Scans paid per request in USDC, reclaims free.
Free
Agent skill
Teaches coding agents the workflow, signing and the rules in one file.
The flow
- 1 scan the wallet → reclaimable SOL, fee, net
- 2 show the user the net amount and the fee, ask
- 3 build → unsigned transactions + claimId (valid ~60 s)
- 4 sign every transaction unchanged with the wallet
- 5 submit → signatures and explorer links
No key for the wallet? When the user’s keys live in Phantom, Solflare or Backpack, the agent stops after the scan and hands over signUrl: the user opens it, the scan starts, and they sign here as usual.
04 MCP server
Connect
in one line.
Remote server at https://unrent.xyz/mcp. Stateless, no API key, no account.
Everything through MCP is free.
claude mcp add --transport http unrent https://unrent.xyz/mcp{
"mcpServers": {
"unrent": { "type": "http", "url": "https://unrent.xyz/mcp" }
}
}Tools
get_rent_status
Read-only
- Where Solana's rent reduction (SIMD-0437) stands: the live lamports_per_byte, which of the five steps are live, and when the next is expected. Older accounts keep their higher deposit until it is withdrawn; each step makes more SOL reclaimable.
scan_wallet
Read-only
- Reads the token accounts and mints of a Solana wallet and returns the SOL that can be reclaimed now: excess rent (WithdrawExcessLamports, accounts stay open), empty token accounts (CloseAccount) and mint excess, the UNRENT service fee, the net amount, a forecast for the remaining rent steps, and tokens that may optionally be burned and closed (dust). Read-only, needs no signature. Amounts are in SOL. Also returns signUrl: a link to finish the reclaim on unrent.xyz with a browser wallet (Phantom, Solflare, Backpack…), for when you cannot sign for the wallet yourself.
build_reclaim
Prepares, sends nothing
- Re-scans the wallet on the chain and builds the reclaim as unsigned, simulated Solana transactions (base64, versioned). They withdraw excess rent, close empty accounts and pay the service fee as the last instruction; nothing else leaves the wallet. Tokens are only burned for accounts listed in `burn`. The wallet's owner signs every transaction unchanged (the fee payer is the wallet, compute budget instructions may be added) and passes them to submit_reclaim within about 60 seconds, before the blockhash expires. Do not send them yourself.
submit_reclaim
Sends transactions
- Checks the signed transactions against the ones build_reclaim made (same instructions, same fee, signed by the wallet) and sends them to Solana. Returns the signature and status of every transaction. A claim can be submitted once; after an expired blockhash, build again.
curl -s https://unrent.xyz/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"scan_wallet","arguments":{"wallet":"<address>"}}}'05 REST API
Plain HTTP.
JSON in, JSON out.
Base URL https://unrent.xyz/api/v1. Amounts are in SOL, errors come back as { "error": "…" } with a fitting status. Open to any origin.
- GET/rent-status
- Live lamports_per_byte and the five SIMD-0437 steps.
- free
- POST/scan
- Reclaimable SOL of one wallet: excess, empty accounts, mint excess, fee, net, forecast, burn candidates, signUrl.
- $0.002
- POST/portfolio
- Up to 25 wallets in one request: reclaimable, fee and net SOL per wallet and in total.
- $0.02
- POST/reclaim/build
- Unsigned, simulated reclaim transactions (base64) and a claimId.
- free
- POST/reclaim/submit
- Checks the signed transactions against the build and sends them.
- free
curl -s https://unrent.xyz/api/v1/rent-status# Without payment: 402 with the price (MPP and x402 offers)
curl -i -X POST https://unrent.xyz/api/v1/scan \
-H 'content-type: application/json' -d '{"wallet":"<address>"}'
# With the pay CLI (https://pay.sh): pays the 402 in USDC and repeats the request
pay curl -X POST https://unrent.xyz/api/v1/scan \
-H 'content-type: application/json' -d '{"wallet":"<address>"}'curl -s -X POST https://unrent.xyz/api/v1/reclaim/build \
-H 'content-type: application/json' -d '{"wallet":"<address>"}'
# → { "claimId": "…", "transactions": ["<base64>", …], "summary": { … } }
curl -s -X POST https://unrent.xyz/api/v1/reclaim/submit \
-H 'content-type: application/json' \
-d '{"claimId":"…","signed":["<signed base64>", …]}'
# → { "status": "confirmed", "transactions": [{ "signature": "…", "explorer": "…" }] }Rate limits are per IP and minute, shared with the site and MCP; a 429 says when to retry. Inputs are checked before payment, and a full scan queue answers 503, so nobody pays for an error.
06 Paying for API calls
402 first.
Then the answer.
- How
- A paid endpoint answers 402 Payment Required with its price. The client pays and repeats the request with the proof; the answer carries a receipt. Clients like pay do this automatically.
- Protocols
- MPP (Machine Payments Protocol) and x402, both offered in every 402. With x402 UNRENT pays the network fee; with MPP the payer does.
- Currency
- USDC on Solana mainnet, settled straight to the UNRENT treasury. No account, no subscription, no minimum.
- What costs
- /scan $0.002, /portfolio $0.02. Rent status, build and submit are free: the reclaim already carries the service fee. A proof of payment counts once.
07 Signing
Your key.
Your signature.
Sign every transaction from the build in order and without changing it; compute budget instructions may be added. Do not send them yourself: submit checks them and sends. After about 60 seconds the blockhash expires: build again.
import {
getBase64EncodedWireTransaction, getBase64Encoder,
getTransactionDecoder, signTransaction
} from '@solana/kit';
const signed = await Promise.all(
built.transactions.map(async (b64) => {
const tx = getTransactionDecoder().decode(getBase64Encoder().encode(b64));
return getBase64EncodedWireTransaction(await signTransaction([signer.keyPair], tx));
})
);import { VersionedTransaction } from '@solana/web3.js';
const signed = built.transactions.map((b64) => {
const tx = VersionedTransaction.deserialize(Buffer.from(b64, 'base64'));
tx.sign([keypair]);
return Buffer.from(tx.serialize()).toString('base64');
});A browser wallet signs the same bytes through Wallet Standard solana:signTransaction (sign only, not sign-and-send).
08 Skill and registries
Easy to find.
For agents too.
npx skills add unrentsol/unrent-skill- Official MCP Registry
- xyz.unrent/unrent ↗
- Smithery
- unrent/unrent ↗
- Solana Agent Registry (8004)
- Agent 9n7re16A…Lweo ↗
- Agent skill
- unrentsol/unrent-skill ↗
Machine-readable
- /llms.txt
- What UNRENT is and where agents connect
- /skill.md
- The agent skill: workflow, signing, rules
- /api/v1/openapi.json
- OpenAPI 3.1 of the REST API, with prices
- /.well-known/mcp/server-card.json
- MCP server card: endpoint, transport, tools
- /.well-known/agent-registration.json
- ERC-8004 registration file of the Agent Registry entry
09 Security
Same checks.
Every door.
- ✓UNRENT never holds keys or SOL: the reclaimed SOL moves from your accounts straight to your wallet in the same transaction.
- ✓Every transaction is simulated before it is handed out, and a submit is refused unless it is exactly what was built: same instructions, same fee, signed by the wallet.
- ✓Tokens are never touched unless burning was asked for, account by account.
- ✓One claim per wallet at a time, so a retry cannot charge the fee twice.
Programs, audits and every address that receives money: Security →