Signet — grant a scoped mandate
signet_grantStep 2: authorize an actor (yourself, for full autonomy) to do specific actions within LIMITS — the mandate is enforced fail-closed on every action. Set require_approval=false for no-human execution. Spend caps + target allowlist + expiry bound the blast radius; revoke anytime (on Solana, revoke DESTROYS the session key). SOLANA (a chain-501 connection + require_approval=false): the grant mints a rail-held session keypair and returns its session_address — fund it with the budget it may spend (its balance is the hard on-chain cap); target_allowlist entries are base58 recipient/program addresses, matched case-SENSITIVELY. Requires Authorization: Bearer . A grant can be a STANDING mandate (no_expiry:true, or expires_in_days:0) — a long-lived per-wallet/per-chain authorization the agent keeps and reuses; the spend cap and revoke are the walls, not a clock.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | who may act — your agent id, or 'self' | |
| chain | No | ||
| no_expiry | No | true = a STANDING mandate with no expiry (bounded by the spend cap + revoke). Use for a per-chain wallet mandate the agent should keep. | |
| spend_cap | No | cumulative budget, smallest unit (wei) — for pay/transfer | |
| spend_asset | No | 'native' or an ERC-20 address | |
| valid_until | No | or an explicit RFC3339 expiry, or "never" for a standing mandate | |
| action_types | Yes | e.g. ["deploy"], ["pay"] | |
| connection_id | Yes | from signet_connect | |
| max_per_action | No | per-action ceiling, wei | |
| expires_in_days | No | grant lifetime in days (default 30). Pass 0 for a STANDING mandate that never expires. | |
| require_approval | No | false = autonomous (no human); true = escalate each action to the owner | |
| target_allowlist | No | contract addresses this actor may call |