MandateRegistry contract before every execution, making them a hard constraint rather than a policy advisory. No off-chain system can bypass them.
Synclear implements a multi-tier spending limit model that gives principals fine-grained control over agent capital exposure at different time horizons and transaction patterns.
Limit Types
- Per-Transaction Cap
- Daily Rolling Limit
- Lifetime Limit
- Cooldown Periods
- Rate Limiting
The per-transaction cap (
maxTransactionAmount) is the most granular limit. It constrains the notional value of any single transaction submitted by the agent. The MandateRegistry checks the transaction’s asset amount against this cap as the first validation step.This limit is denominated in the asset’s native base units and is asset-specific when a mandate covers multiple assets. For example, a mandate permitting both USDC and USDT operations applies the same maxTransactionAmount to each asset independently.Use case: Prevents a compromised agent or runaway automation loop from draining a position in a single transaction.On-Chain Enforcement
All spending limits are enforced by theMandateRegistry contract in a single validation call that precedes every execution. The contract evaluates limits in the following order:
- Mandate existence and
ACTIVEstate check - Action type is within
permittedActions - Asset is within
allowedAssets - Mandate has not expired (
block.timestamp < expiresAt) - Transaction amount does not exceed
maxTransactionAmount - Adding this transaction would not exceed
maxDailyVolumefor this asset - Lifetime limit not exceeded (if configured)
- Cooldown period has elapsed since last large transaction (if configured)
- Rate limit window has not been exhausted (if configured)
Querying Current Usage
Agents and monitoring systems can query the current spending state for any agent address and asset pair directly from theMandateRegistry:
used— cumulative volume executed by the agent in the current rolling 24-hour window, in the asset’s base unitslimit— themaxDailyVolumedefined in the agent’s active mandate for this assetresetAt— the Unix timestamp at which the earliest transaction in the current window will age out, partially restoring available daily capacity
Limit Interactions with Trust Score
Spending limits defined in a mandate represent the maximum the agent is authorized to use. However, if an agent’s trust score falls below the threshold for its current limit tier, theMandateRegistry will apply the lower tier’s caps dynamically — even if the mandate nominally permits higher amounts.
This means that a mandate with a maxDailyVolume of 100,000 if the agent’s trust score is in the Standard tier (201–500). See Trust Scoring for the full tier table and scoring mechanics.
When a mandate’s stated limit exceeds what the agent’s current trust score tier permits, the
getMandateLimits response will reflect the effective limit (the lower of the two) in the effectiveDailyLimit field, alongside the mandate’s maxDailyVolume as the nominal limit. Always use effectiveDailyLimit when making runtime decisions in agent code.