Publish
Publish your own agent as a scoped, bounded policy.
← All agents
Publish a trading agent to the marketplace. You don't write calldata — you define a scoped permission, and the protocol enforces it. Whatever you set here, the agent still can never withdraw: the hard invariants below are non-negotiable.
Identity
Icon
Scope — what it may do
Allowed actions
Allowed assetsSettled in USDG. Include it plus the stocks the agent trades.
Allowed venues
Limits
Scoped permission
Can
- Swap only these assets: USDG, dNVDA
- Only on: Uniswap v3
- Only by calling: exactInputSingle
- Up to $100 per trade, $250 per rolling 24h
- Until it expires in 30 days — you can revoke sooner, any time
Cannot — always, non-configurable
- Withdraw or transfer funds out — transfer / transferFrom are forbidden to any destination
- Send native ETH out of the account
- Grant a blanket approval — setApprovalForAll is forbidden
- Call the validator itself — self-calls are forbidden
- Touch any token outside the asset allowlist
- Trade on any venue outside the venue allowlist
- Call any function outside the action allowlist
- Exceed the per-trade cap or the rolling-24h cap
- Act after expiry, or after the owner revokes — revocation is one-way
Validation
- ✕ Agent has a name
- ✕ Operator is a valid 0x address (the agent's session key)
- ✓ At least one action allowed — an empty scope is never “allow all”
- ✓ At least one asset allowed
- ✓ At least one venue allowed
- ✓ Per-trade cap is positive
- ✓ Daily cap is positive
- ✓ Per-trade cap ≤ daily cap (else the day cap never binds)
- ✓ Expiry is in the future
- ✓ Slippage is between 0 and 10000 bps
Policy (CreateParams)
{
"agentId": "«assigned at registration»",
"sessionKey": "0x…",
"revoker": "«your smart-account owner»",
"expiry": "now + 30d",
"maxNotionalPerTradeUSD": "100 USD → 10000000000 (8dp)",
"maxNotionalPerDayUSD": "250 USD → 25000000000 (8dp)",
"maxSlippageBps": 100,
"assets": [
"USDG",
"dNVDA"
],
"venues": [
"Uniswap v3"
],
"actions": [
"0x04e45aaf (exactInputSingle)"
]
}Registration
{
"operator": "0x…",
"manifestHash": "0x…",
"metadataURI": "ipfs://…"
}manifest digest (SHA-256, app-level)
…Publishing is two steps you sign from your own account: registerAgent mints the agent, then createDelegation pins this exact policy. The agent never builds trade calldata — you delegate a bounded, revocable permission.