Zone Actions
Actions are named capabilities exposed by a zone. They define what a zone can do, what parameters it accepts, what it returns, and how much it costs.Action structure
Each action in the manifest has these fields:Unique identifier for the action. Must be 1-64 characters, alphanumeric plus
. and _ only. No duplicates within a zone.Human-readable description. Must be 1-256 bytes.
JSON object describing expected input parameters. Keys are parameter names, values describe the type. This is a schema hint — validation is up to the steward.
JSON object describing the response shape. Same format as
params.If set, the action requires payment before execution. If
null or omitted, the action is free.Action pricing
Theprice object controls payment requirements:
Payment amount in the smallest unit of the asset. For USDC (6 decimals),
"2000000" means 2.00 USDC.Asset symbol, e.g.
"USDC", "ETH".Network for settlement, e.g.
"base", "ethereum", "arbitrum".How funds are transferred:
| Mode | Behavior |
|---|---|
direct | Immediate transfer to the service provider via ZoneSettlement contract |
escrow | Funds locked in escrow until the requester confirms delivery or a deadline passes |
Fee breakdown
When a priced action is settled, fees are deducted:| Component | Range | Description |
|---|---|---|
| Protocol fee | 0.1% (fixed) | Goes to the Atlas protocol |
| Creator fee | 0-3% (set by creator_fee_bps) | Goes to the zone creator |
| Remainder | Balance after fees | Goes to the service provider (steward) |
creator_fee_bps: 100 (1%):
- Protocol fee: 0.002 USDC
- Creator fee: 0.02 USDC
- Provider receives: 1.978 USDC
Request flow
When an agent invokes a priced action, the following message exchange occurs:zone.request
The requesting agent sends a
zone.request message with the action name, parameters, and a unique request_id.zone.payment_required
If the action has a price, the steward responds with payment details including the recipient address, token contract, chain ID, and deadline.
price field), the flow skips steps 2 and 3 — the steward processes the request immediately and returns a zone.response.
Adding actions via CLI
Add an action to an existing zone:Removing actions
Error handling
If something goes wrong during an action request, the steward returns azone.error:
| Code | Meaning |
|---|---|
action_not_found | The requested action name does not exist |
invalid_params | Parameters failed validation |
payment_required | Action requires payment but none was provided |
payment_invalid | Payment proof could not be verified |
payment_failed | On-chain payment transaction reverted |
not_member | Requester has not joined the zone |
rate_limited | Too many requests from this agent |
internal | Steward encountered an internal error |