{"product":"Overwing Preflight","question":"Should the agent sign this Solana transaction?","available":true,"what":"One check of one unsigned Solana transaction against your policy, before the agent signs it. Preflight reads the transaction, simulates it against the chain as it is now, works out what it would take from the wallet you name (SOL, tokens, and control of its token accounts), and answers allow or refuse with every reason. It never sees a private key and never sends anything to the chain.","request":{"method":"POST","url":"https://overwing.ai/api/v1/preflight/checks","body":{"transaction":"the serialized transaction in base64, signed or not (signatures are ignored)","policy":{"wallet":"required. The address to protect. It must sign the transaction.","max_sol_out":"required. The most SOL the transaction may take from the wallet, fees included. 0 allows none. Or max_sol_out_lamports, as a whole number.","max_token_out":"optional. { mint: atomic units } that may leave. A mint not listed may not leave at all.","min_token_in":"optional. { mint: atomic units } that must arrive, for a swap.","allowed_programs":"optional. When given, every program the transaction runs, top-level or inner, must be listed.","allow_delegation":"optional, default false. Whether a spending approval on the wallet's token accounts is acceptable."}}},"response":"id, decision (allow or refuse), reasons [{ code, detail }], effects (what the simulation says would leave and arrive), programs, digest, covered, a signed receipt, and record_url.","reason_codes":{"sol_out_exceeds_limit":"More SOL would leave the wallet than policy.max_sol_out allows, fees included.","token_out_exceeds_limit":"More of a token would leave than policy.max_token_out allows. A mint the policy does not list may not leave at all.","token_in_below_minimum":"Less of a token would arrive than policy.min_token_in requires.","program_not_allowed":"The transaction runs a program, top-level or inner, that policy.allowed_programs does not list.","delegate_approved":"Someone would be approved to spend from one of the wallet's token accounts. Allowed only with policy.allow_delegation.","token_account_owner_changed":"One of the wallet's token accounts would be handed to another owner.","wallet_reassigned":"The wallet itself would be assigned to a program.","wallet_not_a_signer":"policy.wallet does not sign the transaction, so the check would say nothing about it.","simulation_failed":"The transaction would fail if sent now.","simulation_incomplete":"The node did not return the accounts after the transaction.","lookup_table_unreadable":"The transaction loads accounts from a lookup table that is missing or too short.","too_many_accounts":"The transaction can write to more accounts than one check reads.","program_unresolved":"An instruction names a program outside the transaction's own accounts."},"limits":["A verdict describes the chain at one moment. It covers a transaction that lands within 120 seconds; sign and send at once, or check again.","A program can behave differently on chain than in a simulation. That is the case the guarantee below exists for, and why it is limited to programs we name.","Tracked: the wallet's SOL and every token account it owns that the transaction can write to. Not tracked: stake accounts and positions a program holds for the wallet.","The check is advice to whoever holds the key. An agent that signs without asking is not protected; put the call in the signing path."],"prices":{"with_an_account":{"how":"Authorization: Bearer <key>. One check counts as one evaluation against the plan's daily allowance, then against prepaid credits. A key is free: POST https://overwing.ai/api/v1/signup."},"with_a_wallet":{"usd":0.01,"how":"POST https://overwing.ai/api/x402/preflight with the same body and pay in USDC over x402. No account. A request that fails is not settled."}},"record":{"what":"Every verdict is published: its id, decision, reason codes, programs, the transaction's digest and our signature. Never the wallet, the amounts or the transaction. Every transaction reported against a verdict is published with what the chain showed.","page":"https://overwing.ai/preflight/record","json":"https://overwing.ai/api/v1/preflight/record","report":"POST https://overwing.ai/api/v1/preflight/checks/{id}/reports {\"signature\":\"<the landed transaction>\"}. No key: the answer is read from the chain.","public_key":"https://overwing.ai/api/v1/tower/receipts/public-key"},"guarantee":{"active":false,"what":"If Preflight answered allow, the same transaction landed while the verdict was fresh, and it took more from the wallet than your policy permits, that is a miss. A covered miss is paid in USDC to the wallet in the verdict.","covered_when":"The verdict was an allow and every program the transaction ran is one of: System, Compute Budget, SPL Token, Token-2022, Associated Token Account, Jupiter v6, PumpSwap, PumpSwap fees.","pays":"The amount taken beyond the policy, valued when the miss is confirmed, up to $100 a verdict and $200 a wallet a month, and never more than the reserve holds. Claims are paid in the order they are confirmed.","not_covered":"A shortfall in what arrives (that is slippage; set it in the swap itself), a transaction that ran any other program, a transaction changed after the check, one that landed outside the window, and anything we find was arranged to produce a claim.","funded_by":"Overwing alone. Nobody else's money is in the reserve, and nobody earns a return from it.","reserve":"Not funded yet. Until it is, misses are recorded and published and nothing is paid.","covered_programs":{"11111111111111111111111111111111":"System","ComputeBudget111111111111111111111111111111":"Compute Budget","TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA":"SPL Token","TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb":"Token-2022","ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL":"Associated Token Account","JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4":"Jupiter v6","pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA":"PumpSwap","pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ":"PumpSwap fees"},"terms":"https://overwing.ai/preflight#guarantee"},"endpoints":{"overview":"GET https://overwing.ai/api/v1/preflight","check":"POST https://overwing.ai/api/v1/preflight/checks","verdict":"GET https://overwing.ai/api/v1/preflight/checks/{id}","report":"POST https://overwing.ai/api/v1/preflight/checks/{id}/reports","record":"GET https://overwing.ai/api/v1/preflight/record","x402":"POST https://overwing.ai/api/x402/preflight"}}