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 →

  1. 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.

  2. 02Review

    See what comes back, the service fee and the net amount, account by account. Nothing is selected for burning unless you tick it.

  3. 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.

  4. 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.

The flow

  1. 1 scan the wallet → reclaimable SOL, fee, net
  2. 2 show the user the net amount and the fee, ask
  3. 3 build → unsigned transactions + claimId (valid ~60 s)
  4. 4 sign every transaction unchanged with the wallet
  5. 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

Streamable HTTP · 2025-11-25

Connect
in one line.

Remote server at https://unrent.xyz/mcp. Stateless, no API key, no account. Everything through MCP is free.

Claude Code
claude mcp add --transport http unrent https://unrent.xyz/mcp
Other clients (mcp.json)
{
  "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.
Raw JSON-RPC
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
Free: rent status
curl -s https://unrent.xyz/api/v1/rent-status
Paid: scan a wallet
# 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>"}'
Free: build and submit a reclaim
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.

@solana/kit
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));
  })
);
@solana/web3.js 1.x
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.

Install the skill
npx skills add unrentsol/unrent-skill
Official MCP Registry
xyz.unrent/unrent ↗
Solana Agent Registry (8004)
Agent 9n7re16A…Lweo ↗

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 →