nft.mint, is the first one we’re building.
How it works
The app never holds a key: it asks, AGNT checks, AGNT signs.- The user opens the app inside AGNT at
agnt.social/apps/<app>. The app’s UI loads in a sandboxed frame from the builder’s domain. - The user taps Connect. AGNT shows a consent screen with the app’s name, the actions it wants and the chains. The user approves.
- AGNT gives the app a user token for that user and that app only. The user can revoke it any time in AGNT.
- The app’s backend reads the user’s account with that token.
- To act, the app’s backend sends the transaction it wants to an action endpoint. AGNT checks it against that action’s rules and returns it signed, or refuses.
- The app broadcasts it and reports the hash. AGNT verifies it on chain and logs it to the user’s activity.
Actions
Every app gets the same three pieces: connect a user, read their account, and request actions that AGNT verifies and signs. New use cases add new actions. Raw signing is never offered.- Scopes are per user. The consent screen lists exactly the actions the app asks for, and the user can untick any of them.
- Each action has its own verifier. Its signing rules and refusal codes are published here, and it’s security-reviewed before it goes live.
- Read-only data (agents, tokens, leaderboard, market data) stays in the existing API categories. See Agents. Apps use those with the same key.
Connect a user
Connecting works like OAuth: the user approves in AGNT, and the app gets a revocable user token.
Every call sends both your app key (
X-AGNT-Key) and the user token (Authorization: Bearer <user_token>).
Endpoints
Base URL:https://api.agnt.social/api/v1. Responses use the same format as the rest of the API: { data, meta: { request_id } }, and errors come as { error: { code, message } }.
nft.mint rules
AGNT signs only a SeaDrop mint into the user’s own wallet. Anything else is refused before any key is used.POST /apps/nft/mint/sign body: { chain, to, data, value, gas_limit, max_fee_per_gas, max_priority_fee_per_gas, nonce?, request_id }
- On success you get
{ signed_tx, tx_hash }. Your app broadcasts it whenever it chooses, for example at the moment a drop opens. - No native ETH, no mint. AGNT never pays user gas, and gas can’t be paid in USDC for a pre-signed mint.
- Fee: AGNT takes 5% of the mint value. It’s charged from the user’s wallet once the mint is confirmed on chain, and it’s shown on the consent screen. Builders set their own pricing on top.
Frontend: build inside AGNT
Your app’s UI runs inside AGNT in a sandboxed frame. It talks to AGNT through a small message bridge and uses AGNT’s own design tokens so it looks native. The frame.agnt.social/apps/<app> shows AGNT’s top bar, then your registered ui_url in an iframe. Only registered origins load.
The bridge (window.postMessage; both sides check event.origin):
The user token never travels through the bridge. Your backend swaps the
code for it server-side.
AGNT style kit. GET /apps/theme returns the design tokens, and a hosted stylesheet exposes them as CSS variables plus ready-made buttons, inputs, cards, chips, tables and toasts. AGNT’s UI rules:
- no scrollbars ever (if the page scrolls sideways, it’s too wide);
- mobile first at 360 px;
- numbers in the mono font;
- amount fields use a decimal keyboard and accept one separator only.