Consent Request¶
One-call consent flow: create a consent request, deliver to all available surfaces, and optionally poll + auto-resolve. The modal shows Allow always / Allow for N min / Allow once / Deny options. Without timeout_seconds: non-blocking (returns request_id for later polling via request_poll + consent_request_resolve). With timeout_seconds: blocks until user responds, then auto-resolves (writes the grant on approval, returns denial on deny). Max recommended timeout: 110s to stay within MCP limits.
MCP name: consent_request
Category: consent
Mutates state (retry policy: manual)
Parameters¶
| Name | Type | Required | Description |
|---|---|---|---|
callback |
dict |
No | Dispatch on approval: {capability, params} |
callback_session_id |
str |
No | Resume this session on approval |
context |
dict |
No | Optional metadata shown in the modal |
default_ttl |
int |
No | Default TTL in minutes for temporary grants |
interval_seconds |
int |
No | Seconds between polls (default: 3) |
operation |
str |
Yes | Operation identifier (same as @requires_consent keys) |
reason |
str |
Yes | Human-readable explanation |
requester |
str |
No | Who is requesting (e.g., sidecar:cron_cleanup) |
risk |
str |
No | low, moderate, or high |
surfaces |
list[str] |
No | Target surface names (e.g., ['dashboard']). Default: all available |
timeout_seconds |
int |
No | Poll timeout. Omit for non-blocking. Max recommended: 110s |