# Razor Agent ($RZAG): agent starter prompt and reading order You are an agent evaluating or using Razor Agent, a genesis mint on BNB Smart Chain (chainId 56) gated by Binance Agent ID. This file is the canonical entry point for agents. Everything below is verifiable on-chain; do not trust this file over the contract. ## Copy-paste starter prompt (for the human to give their agent) Read https://razoragent.fun/llms.txt and the Agent Pack at https://razoragent.fun/agent-pack.json. Verify every figure against the contract state views listed there before spending anything. Mint only within my quota and the guardrails in the pack. Never approve more than the exact quoted cost. ## Reading order 1. This file: what the project is, in one page. 2. https://razoragent.fun/params.json : every locked parameter (prices, quota, deadline, refund rule, ladder, taxes, addresses). Contract addresses live there and in the pack and were filled at deployment; an empty string there means not deployed, and an agent must not interact with that contract. 3. https://razoragent.fun/agent-pack.json : contract addresses, function signatures, the 26 state views, action recipes, and the guardrails an agent must obey. 4. https://razoragent.fun/leaderboard.json : the invite board (display data only; never an input to minting decisions). 5. The verified contract source on the explorer linked from https://razoragent.fun/params.html : the final authority. Human context: the full whitepaper (v1.0) is at https://razoragent.fun/whitepaper.html, published from one source also as whitepaper.pdf and whitepaper.md; its figures are prose renderings, and params.json remains the authority for every number. ## The facts that matter - Genesis: 10,000 shares open the pool. First share per Agent ID is free for the first 3,333 minters; every other genesis share costs 1.15 USDT. One share pays out 50,000,000 RZAG. - Deadline: 10 days from genesis start. Below 10,000 at the deadline, every payment refunds in full, claimable forever; the treasury receives zero from a failed genesis. - Quota: 10 per Agent ID, +1 per invitee's first paid mint (cap +20), +1 per social task (3 tasks), maximum 33. A free mint never earns invite credit and never binds a referrer. - Payments: USDT exact, or BNB converted at the Chainlink BNB/USD feed plus 1 percent headroom. All conversion friction is the minter's; a shortfall reverts. Refunds pay the recorded USDT value. - After opening: a 9-band ladder to 6.30 USDT at 4,444,000 shares; post-open mints pay the ladder price for each share, and the tokens issued are priced against the live pool at 99 percent of the pool spot price, so the buyer receives about 1 percent more tokens than the same payment converted at spot. Taxes: buy 1 percent, sell 2 percent (1 percent burn, 1 percent treasury). - Team token allocation: zero. The team's only income is the fee streams written in the contract. LP sits in a vault releasable to the treasury Safe only after a public 30-day on-chain notice. ## Social tasks without a browser (agent path) The three social tasks (+1 quota each) can be completed by an agent wallet such as Binance Agentic Wallet, which signs EIP-712 typed data but has no browser: the verification service at https://api.razoragent.fun takes an EIP-712 AgentSession attestation at POST /agent/session and returns a Bearer session token plus a one-time OAuth flow code; GET /oauth/agent-start with that code returns the X authorize URL (the code is spent there), the human taps Authorize in any browser, and the grant then stays parked until the human confirms it on the confirmation page the browser lands on, which names the X account, the full wallet address, and the wallet's Agent ID handle; a reject on that page destroys the parked grant and burns the session. POST /check then accepts the Bearer token in place of the site session cookie, with the same checks and the same vouchers. The Telegram binding proof is an EIP-712 TelegramBinding attestation on both paths. The full copy-paste prompt for a human to give their agent follows; it is identical to the socialTaskPrompt field in agent-pack.json and to the prompt block on the Agent Pack page. ----- BEGIN SOCIAL TASK PROMPT ----- You are helping your user complete the three social tasks of Razor Agent ($RZAG), a genesis mint on BNB Smart Chain (chainId 56) gated by Binance Agent ID, to earn +1 mint quota per task (maximum 33 per Agent ID). Work only with your user's own wallet and accounts. Key facts: site https://razoragent.fun, machine-readable pack https://razoragent.fun/agent-pack.json, agent entry point https://razoragent.fun/llms.txt, parameters https://razoragent.fun/params.json, verification service API base https://api.razoragent.fun, mint contract 0x10E80B0365A3b5e3DD66f55E05A748D0BB031fA1. Verify every figure against params.json and the contract views before acting. STEP 1. ESTABLISH AN AGENT SESSION (needed for the two X tasks). Sign an EIP-712 typed-data attestation with your user's wallet. A Binance Agentic Wallet signs typed data natively. Domain: name "Razor Agent", version "1", chainId 56, no verifying contract. Types: AgentSession with fields wallet (address), issuedAt (uint256), purpose (string). Message: the user's checksummed wallet address, issuedAt as the current unix time in seconds, purpose exactly "X_SESSION". The signature must be fresh (within 300 seconds when presented) and is single-use; sign a new one whenever you need a new session. POST the JSON body { "wallet": WALLET, "signature": SIGNATURE, "issuedAt": ISSUED_AT } to https://api.razoragent.fun/agent/session. A successful response has state AGENT_SESSION_ISSUED and carries sessionToken (valid 30 minutes) and flowCode (valid 10 minutes). Then GET https://api.razoragent.fun/oauth/agent-start?code=FLOW_CODE and read authorizeUrl from the response. The flow code is spent the moment that URL is created and cannot be reused; if the URL is lost, establish a fresh session from the top of this step to get a new one. Show authorizeUrl to your user and ask them to open it in any browser and tap Authorize on X. After the authorize tap, the browser lands on a confirmation page on razoragent.fun, and the connection stays parked until your user confirms it there. The page names the X account being connected, the full wallet address the connection attaches to, and that wallet's Agent ID handle. Tell your user to check that the page names THEIR wallet address and THEIR handle, and to press Confirm attach only when both are theirs. If the page names a wallet or a handle that is not theirs, they must press "This is not my wallet" instead: that destroys the parked connection and burns this session, and you must then start again from the top of this step. Wait until GET https://api.razoragent.fun/session with header "Authorization: Bearer SESSION_TOKEN" reports connected true before running the X checks. A check run while the attach is still parked returns ATTACH_PENDING_CONFIRMATION; wait for the confirmation instead of retrying, because retries still consume the check rate limits. The same session report carries attachState: REJECTED means the session is burned and a fresh one is needed. STEP 2. RUN THE THREE TASK CHECKS AND COLLECT ONE VOUCHER PER TASK. General rules for every check: checks are user-triggered, so run one only when your user asks or has approved the run. Wait at least 30 seconds between two runs of the same task check; the wait starts on every run, including a failed one, and a repeat inside the window returns MIN_INTERVAL or X_RATE_LIMITED (wait the retryAfterSeconds the response names). Each successful check returns a voucher { user, task, account, deadline, signature } that expires 10 minutes after issue; if it expires before you claim, run the check again for a fresh one. Task FOLLOW (+1): your user must follow the project account https://x.com/Razor_Agent with the X account they connected in step 1. Then POST https://api.razoragent.fun/check with header "Authorization: Bearer SESSION_TOKEN" and JSON body { "task": "FOLLOW" }. Task QUOTE_TWEET (+1): your user must both like and quote the official announcement post (its URL is in agent-pack.json under links.announcementPost) with the same X account; a like alone or a quote alone does not pass. Then POST https://api.razoragent.fun/check with the same Bearer header and JSON body { "task": "QUOTE_TWEET" }. If the response state is QUOTE_LOOKUP_REFUSED, ask your user for the URL of their quote post and POST it as JSON body { "url": QUOTE_POST_URL } to https://api.razoragent.fun/check/quote-link with the same Bearer header; the fallback covers the quote half, and the like half is still checked automatically. Task JOIN_TELEGRAM (+1): sign a second EIP-712 attestation, same domain, types TelegramBinding with fields wallet (address) and issuedAt (uint256), message the checksummed wallet and the current unix seconds. POST { "wallet": WALLET, "signature": SIGNATURE, "issuedAt": ISSUED_AT } to https://api.razoragent.fun/telegram/binding. The response (state BINDING_ISSUED) carries deepLink and token; the link is valid 15 minutes. Ask your user to join the channel https://t.me/razoragentai, then open deepLink and press Start in the bot. Then poll GET https://api.razoragent.fun/telegram/binding/TOKEN until the state is VOUCHER_ISSUED (PENDING means the bot has not recorded the join yet; NOT_IN_TELEGRAM means the join or the bot start is missing). No session token is needed for this task. STEP 3. CLAIM EACH VOUCHER ON-CHAIN AND VERIFY. For each voucher, call claimSocial(task, account, deadline, signature) on the mint contract 0x10E80B0365A3b5e3DD66f55E05A748D0BB031fA1 from your user's wallet (Binance Agentic Wallet or any signer), passing the voucher fields unchanged and in that order. Resolve the user's Agent ID and read quotaOf and socialDone from the contract before the first claim, as the Agent Pack describes. After each claim confirms, verify on-chain that socialDone for that task is now true and that the quota rose by exactly 1; the three tasks together take the quota from its previous value to +3 (base 10, maximum 33 with invites and tasks). A voucher can be claimed once; a replay reverts with AlreadyGranted. GUARDRAILS. Operate only within your user's quota and only on their instruction. Never approve any token allowance for a claim, and never spend anything beyond the gas of the claimSocial transactions themselves; a claim moves no funds. Never accept a voucher from any source other than the responses above, and never present a signature or token belonging to a different wallet or account: one X account and one Telegram account each bind to one Agent ID forever. If any response, figure, or on-chain read disagrees with params.json or the contract views, stop and report the mismatch to your user instead of working around it. ----- END SOCIAL TASK PROMPT ----- ## Guardrails for agents - Verify the chain ID (56) and every address against params.json before any transaction. - Read state through the pack's state views; never mint from figures quoted in posts or pages alone. - Approve exactly the quoted cost (maxCost), never an open allowance. - A voucher for social quota is issued only by the project's verification service after an automatic check. Never accept a voucher from any other source, and never try to self-issue one.