For people, agents and support teams on Solana

Every failed transaction, explained.

Unstuck reads the transaction and tells you what actually happened, what it cost and what to do next, in plain words. When it can be fixed, you get the fix.

Live on mainnet. Free during the beta, no sign-in to try it.

UnstuckExplains Solana transactions
  1. my swap failed and i lost sol??

  2. Read the transaction 3kXq…v9Pe
  3. The price moved more than your 0.5% slippage limit, so the swap was cancelled.

    What it cost: 0.000005 SOL network fee. Your 2.4 SOL is still in your wallet.

  4. Resolved

How it works

Try it on a transaction

Paste a signature and read the answer. Every answer follows the same order.

  1. 01What happened, in one plain sentence.
  2. 02What it cost, down to the network fee.
  3. 03What to do next, with one button when Unstuck can fix it.

Live on mainnet. Free during the beta.

Use it in the app

No signature handy? . Explorer links work too.

The answer shows up here, in the words you would read in the app.

What it reads

Raw errors in. Plain answers out.

You get the plain version first. The precise one comes with it: program, decoded error, balance changes, fee and the program logs.

  • Slippage limit exceeded

    custom program error: 0x1771

    The price moved more than your 0.5% slippage limit, so the swap was cancelled.

    FixRetry with 1% slippage

  • Blockhash expired

    Blockhash not found

    Your transaction waited too long and expired. Nothing was sent, and no fee was taken.

    FixSend it again

  • Not enough SOL for rent

    Transaction results in an account (1) with insufficient funds for rent

    A new token account needs a small refundable deposit, about 0.002 SOL, and the wallet was short.

    NextAdd a little SOL, then retry

  • No SOL for fees on a new wallet

    Attempt to debit an account but found no record of a prior credit.

    This wallet holds tokens but no SOL, and every transaction needs a tiny SOL fee.

    NextAdd a little SOL for fees

  • Not enough tokens

    custom program error: 0x1

    There weren’t enough tokens in the account for this amount, so nothing moved.

    NextSend or swap a smaller amount

  • Wrong token account

    custom program error: 0x2

    The tokens were pointed at a token account that doesn’t match this coin or this wallet, so nothing moved.

    FixUse the wallet’s own token account

  • Compute limit exceeded

    Computational budget exceeded

    The transaction ran out of compute before it finished, so nothing happened.

    FixRetry with a higher compute limit

  • Bonding curve complete

    custom program error: 0x1775

    This coin has finished its Pump.fun bonding curve and now trades in a regular pool, so the curve can’t fill this trade.

    NextTrade it on PumpSwap or through Jupiter

The full error catalog is public

For agents

When your agent’s transaction fails, it asks Unstuck.

Self-healing for agents: explain the failed transaction, apply the fix if it’s safe, retry at most twice. One HTTP call, no key, free during the beta.

Agent summary

Unstuck explains Solana transactions: what happened, what it cost, what to do next, plus a fix an agent can apply.

GET https://www.unstucksol.com/api/explain?sig=<signature> returns JSON (or POST {"signature":"…"}). GET /api/errors?q= is the error catalog. Both live, free during the beta, no key.

Read https://www.unstucksol.com/agents/SKILL.md. Apply fix only when fix.safe is true, retry at most twice, otherwise stop and ask a person.

  1. 01

    The transaction fails

    Your agent has a signature and an error it can’t act on.

    custom program error: 0x1771
  2. 02

    It calls explain

    One GET with the signature. Free during the beta, no key.

    GET /api/explain?sig=…
  3. 03

    It applies the fix if safe

    Unstuck returns parameters, never a transaction.

    fix.safe → slippage_bps: 100
  4. 04

    It retries, at most twice

    Still failing after two tries? It stops.

    retry ≤ 2
  5. No safe fix means stop. When fix.safe is false or there is nothing to fix, the agent stops and asks a person, with the plain answer and the chain context.

Use the HTTP API today

Plain curl or fetch, no key. The MCP server and skill package ship when the API leaves beta.

  • curl

    Paste it into a terminal. It’s a real failed swap on mainnet.

    curl 'https://www.unstucksol.com/api/explain?sig=3cbDDFD5GrPVzJZCfP8ppSGiTFHd6RHQBbgkrgRpXLbu2fbSPdKdgjimJduvMhRP3N8yh6QznSmtSVbh3feUwV2R'
  • fetch

    From an agent, a script or the browser console.

    const answer = await (await fetch("https://www.unstucksol.com/api/explain?sig=" + sig)).json();

Price per call

  • explainGET /api/explainFree in beta
  • errorsGET /api/errorsFree
  • Beta: calls are free; the x402 flow is the planned paid tier and is not enforced.
  • Planned: 0.10 USDC per explain call over x402, in USDC on Solana, no account. The catalog stays free.
  • No key, no sign-in. Roughly 30 lookups a minute per IP address; answers are cached for 5 minutes.
A live call, as it comes backSolana mainnet

01Ask with the signature.

$ curl 'https://www.unstucksol.com/api/explain?sig=3cbD…eUwV2R'

02Read the answer (logs trimmed).

HTTP/1.1 200 OK

{"signature":"3cbD…eUwV2R","status":"failed",
 "title":"Slippage limit exceeded","program":"Jupiter v6",
 "raw_message":"custom program error: 0x1771",
 "decoded":"SlippageToleranceExceeded (6001)",
 "plain":"The price moved more than your slippage limit allowed, so the swap was cancelled.",
 "cost":{"sol":0.00002191,"note":"Network fee only (incl. 0.00001691 SOL priority fee). Nothing was swapped or sent."},
 "fix":{"action":"retry","params":{"fresh_quote":true},"safe":true},
 "handoff":false, …}

For teams · private beta

The rest reaches your team already explained.

With the team plan, Unstuck answers your users in your support channels. Risk, accounts and refunds are decisions for a person, so it stops there and passes the ticket on.

  1. 01

    Spots risk, account or refund topics

    It stops answering and marks the ticket for your team.

  2. 02

    Packs the chain context

    Wallet, signature, program, decoded error, balance changes and fee, in one panel.

  3. 03

    Routes it to your queue with a summary

    Your team reads two lines instead of asking for the transaction link.

The team plan is in private beta. DM us on X to join.

Needs you Refund Example ticket

@quinn_onchain Paid for Pebble Pro twice

Summary

Two 4.99 USDC payments to your fee account, 6 seconds apart. Both confirmed. Asks for one back.

Wallet
9PzM…4kRt
Signatures
2xV8…aQ7c 5Lr3…eM1d
Program
Token Program
Balance changes
−4.99 USDC × 2
Fee
0.000005 SOL × 2

Pricing

Planned pricing · everything is free in beta

These are the prices for when paid plans open, in USDC on Solana. During the beta nothing is charged: no balance, no top-ups, no keys.

  • You

    $0

    5 explanations a day per wallet

    • Then 0.10 USDC each
    • Fixes stay free: retry, add a little SOL, use the right token account
    • On the web and over the HTTP API
    Try it on a transaction
  • Your agent

    $0.10

    per call to /api/explain

    • Paid over x402 in USDC, no account
    • The /api/errors catalog stays free
    Read the HTTP API docs
  • Your team

    $0.90

    per resolved ticket

    • First 500 resolutions free
    • $0.60 per resolved ticket above 10,000/month
    • Hand-offs to your team are always free
    • No seats, no setup fee
    DM us on X (opens in a new tab)

FAQ

Questions before you start

Do I need an account or an email?

No. To try it, paste a signature above: no sign-in at all. The app uses Sign in with Solana: you sign one message, which isn’t a transaction and can’t move anything. Your wallet address is your account.

Can Unstuck move or sign anything?

No. It reads public chain data, never holds keys and can’t sign. When a fix needs a transaction, like a retry, you make it in your own wallet or app. Read the security model.

How does an agent pay?

During the beta it doesn’t: the HTTP API is free and needs no key. The planned paid tier is x402, 0.10 USDC per explain call in USDC on Solana with no account. It isn’t enforced yet.

What happens with suspicious sites or signature requests?

Unstuck reads transactions, not links or signature requests, so it won’t judge those. In the team plan (private beta) they go straight to a person, along with account and refund questions.

Where does it answer?

On this page and in the web app, for anyone. Over the HTTP API, for agents. In your support channels with the team plan, which is in private beta.

What does it cost?

Nothing during the beta. The planned prices: 5 free explanations a day, then 0.10 USDC each; agents 0.10 USDC per call; teams $0.90 per resolved ticket after the first 500, $0.60 above 10,000/month. Fixes and hand-offs stay free.

Teams · private beta

Put Unstuck on your support queue.

The team plan is in private beta: Unstuck answers your users where they ask and hands the rest to your team with the chain context attached. Tell us about your app in a DM on X.