# Sequentry Agents > 5,000 agent portraits on Solana mainnet. Agents mint by passing a challenge. 0.01 SOL, one per wallet. The server never holds your key and never sends a transaction for you. - Discovery: https://app.sequentryagent.com/api/agent/capabilities - OpenAPI: https://app.sequentryagent.com/openapi.json - MCP (Streamable HTTP, JSON-RPC over POST): https://app.sequentryagent.com/mcp ## Short version Sign in (signature, or a memo transaction if the wallet cannot sign text), pass the challenge within 30 seconds, ask prepare_mint for a transaction (add owner to mint into another address), sign it with the signing wallet and the asset keypair, send it. Details below. ## Lifecycle Everything below is also available as MCP tools at https://app.sequentryagent.com/mcp (wallet_nonce, wallet_verify, collection_info, prepare_attempt, submit_solution, prepare_mint). Pass the token from wallet_verify as the token argument. 1. GET collection_info. Stop if live is false: nothing is open. 2. POST /api/auth/wallet/nonce {address}. Sign the returned message with your wallet (ed25519) and POST /api/auth/wallet/verify {address, signature}; use the token as Authorization: Bearer. A wallet that can send a transaction but cannot sign text (a Binance Agentic Wallet): POST nonce with {address, tx:true}, send the returned unsignedTx from that wallet (zero-value memo, fee about 0.000005 SOL), then POST verify with {address, txSignature}. 3. POST /api/agent/attempt. You get twenty-four lines. Some have value null. Never fill one in. You have 30 seconds. 4. POST /api/agent/attempt/submit {attemptId, missing, total, digest}. One try only. 5. Generate a fresh keypair. POST /api/agent/mint {attemptId, asset: , owner: }. Show the user what it will do before anything is signed. 6. Sign with the signing wallet and with the asset keypair (the gate has already signed), send it, then read the asset from the chain. The wallet that signs also pays and is the one the one-per-wallet limit counts. owner only decides who holds the piece. A Binance Agentic Wallet cannot be the signer of the mint (it cannot send a transaction with more than one signer), but it can be the owner. ## Binance Agentic Wallet If the user's wallet is a Binance Agentic Wallet (baw CLI), you are the agent and the user's wallet is not a key you hold. Do this: 1. Get the wallet's Solana address with: baw wallet address --json (the entry with binanceChainId CT_501). That address is the owner. 2. Sign in with the memo path, from that wallet: POST /api/auth/wallet/nonce {address, tx:true}; baw contract-call preview --binanceChainId CT_501 --from
--unsignedTx ; show the user the preview; after they agree, baw contract-call execute --requestId ; then POST /api/auth/wallet/verify {address, txSignature}. It moves no funds, the fee is about 0.000005 SOL. 3. A baw wallet cannot send a Solana transaction that has more than one signer, and a mint has three (buyer, new asset, gate). So the mint is signed by a throwaway keypair you create in this session, funded from the baw wallet with baw wallet send (SOL, chain CT_501) for 0.016 SOL. Binance only lets baw send to addresses in the user's Address Book, so the first send is refused (error 351703). That is Binance's own anti-scam rule, not a fault of the user or of this site. Tell the user, in two short lines and without blaming anyone: - the keypair address, alone on its own line, exactly as generated (44 characters, no spaces, no line breaks), for example in a code block; - the one step: Binance app, Wallet, Settings, Address Book, add that address, then say "done". When they say done, retry the same send. Do not look for another way around the Address Book. 4. Sign in again as that throwaway keypair (signMessage), pass the challenge, and POST /api/agent/mint {attemptId, asset, owner: }. Sign with the keypair and the asset keypair and send. 5. The piece belongs to the baw address. The keypair is left with about 0.004 SOL: send it back or tell the user. If any step is refused, stop and tell the user the exact reason. ## Sell and buy (market) Pieces trade peer to peer at https://app.sequentryagent.com/market. Nothing is held by the site: the piece stays in the owner's wallet until the sale. MCP tools: market_board (public), market_list, market_unlist, market_buy, market_bought. Sign in first (wallet_nonce, wallet_verify) and pass the token. SELL, including from a Binance Agentic Wallet (one signer, so baw can do it): 1. Sign in as the wallet that holds the piece (memo path with tx:true for baw). 2. market_list {piece, sol}. It returns tx, an unsigned transaction with ONE signer (the owner). Show the user what it does, then send it from the owner's wallet: baw contract-call preview --binanceChainId CT_501 --from
--unsignedTx , then execute. If tx is null the piece is already approved and only the price changed. 3. The piece is now for sale at that price on https://app.sequentryagent.com/market. The owner can remove it any time with market_unlist, which returns another one-signer transaction. BUY (the buyer signs together with the market, so this needs a keypair or a normal wallet, not a baw wallet): 1. Sign in as the buyer. market_board shows what is buyable and its price. 2. market_buy {piece, maxSol}. It returns a transaction that pays the owner and moves the piece to the buyer in one step, already signed by the market. Show the user the price and the piece, then sign and send it within about a minute. 3. market_bought {piece, signature} records the sale. A sale is atomic: the SOL and the piece move together or not at all. If a step is refused, tell the user the exact reason. ## Limits Never ask the user for a seed phrase or private key. A permit lasts ten minutes and covers one mint. Minting is not audited by anyone independent.