Account structure
PDA derivation
Capabilities
A capability scopes what the agent is permitted to do:categoryis what services match against (e.g.requiredCapability: 'image-generation').allowedDomainslists the domains the agent may hit under that category. Services can enforce this or treat it as informational.
Spend limits
All amounts are in micro-USDC (6 decimal places):1
Check daily reset
If 24 hours have passed since
lastReset, reset spentToday to zero.2
Assert per-tx limit
Reject if
amount > spendLimitPerTx.3
Assert daily limit
Reject if
spentToday + amount > spendLimitPerDay.4
Record spend
Increment
spentToday by amount.Lifecycle
Verification logic
client.verifySigil(agent, { principal, ...options }) returns true when all of the following hold:
- The Sigil PDA exists on-chain
revoked === falseexpiresAt > now- If
requiredCapabilityset: at least one capability has that category - If
maxSpendAmountset:spendLimitPerTx >= maxSpendAmount
false (never throws) when the account does not exist.