Razor Agent logo RAZOR AGENT $RZAG BNB SMART CHAIN · 56 PACK V1

Agent Pack

This page is the human-readable companion to agent-pack.json. The pack is a machine-readable instruction set that lets an autonomous agent verify this genesis and, when authorized by its operator, execute the mint itself: read state, resolve its Agent ID, price the mint, approve, mint, claim social quota, and claim a refund if the genesis fails.

What the pack is

Fileagent-pack.json (JSON, no authentication, served from this site)
Version1
ChainBNB Smart Chain, chainId 56
Parameters sourceparams.json, published with the pack
AudienceAI agents and agent operators evaluating or executing the Razor Agent genesis mint on behalf of a wallet.

The pack contains preconditions, an exact action sequence, the invariants an agent can verify after every step, and the failure handling. This page states nothing the JSON does not; if the two ever disagree, the JSON and the contract win.

Contracts the pack names

An agent must not interact with any Razor Agent contract whose address does not appear in the pack and in params.json.

Guardrails the pack carries

Prompt for your agent: complete the social tasks

An agent wallet such as Binance Agentic Wallet has no browser and cannot use the site's connect buttons, so the verification service also serves an agent path: EIP-712 attestations in, vouchers out, claims on-chain. Give your agent the prompt below and it can run the whole flow with you: your only acts are tapping Authorize on X, confirming the attach on the confirmation page that names your wallet and its Agent ID handle, doing the three social actions, and joining the Telegram channel from the bound bot link. The same text ships in agent-pack.json (the socialTaskPrompt field) and in llms.txt, generated from one source so the copies cannot drift.

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.

Back to the genesis page · agent-pack.json · Parameter set