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 assets
Settled 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.