type field and optional type-specific constraints.
A credential may carry multiple scope grants. A tool invocation is authorized if it satisfies any scope grant. Each grant is satisfied only if all its constraints are met.
Scope type reference
hasp.data.read
Authorize the agent to read records from the HASP Data API.
| Field | Description |
|---|---|
app_id | Restrict to a specific app’s data. Omit to allow reads across all apps. |
entities | Restrict to specific entity types. Omit to allow all readable entities. |
filters | Field-level filters applied to every read. Supports substitution syntax. |
hasp.data.write
Authorize the agent to create or update records in the HASP Data API.
| Field | Description |
|---|---|
app_id | Restrict to a specific app. |
entities | Restrict to specific entity types. |
fields | Restrict to specific writable fields. The agent cannot write fields not in this list. |
hasp.data.read does not implicitly grant hasp.data.write. A separate grant is required for write access even on the same entities.
external.tool.invoke
Authorize the agent to call an external or registered tool.
| Field | Description |
|---|---|
tool_id | The registered tool identifier. Required. |
rate_limit | Optional rate limit: maximum invocations per hour (integer). Omit for no rate limit. |
constraints | Arbitrary key-value constraints enforced at invocation time. Keys and values are tool-specific. |
external.tool.invoke grant applies to a single tool. To authorize multiple tools, add one grant per tool.
agent.delegate
Authorize the agent to issue a child credential to another registered agent.
| Field | Description |
|---|---|
to_agent_id | The agent this credential may delegate to. Required. |
max_chain_depth | Maximum additional delegation depth from the child. 1 means the child cannot further delegate. Max 3. |
human.escalate
Authorize the agent to escalate to a human via a configured channel.
| Field | Description |
|---|---|
to_role | Org role to escalate to. Omit to allow escalation to any configured role. |
channels | Delivery channels. Omit to allow all configured channels. |
Substitution syntax
Filters and constraints may use substitution syntax to bind values at credential issuance time:| Variable | Resolves to |
|---|---|
{{delegating_user.id}} | The ULID of the user who authorized the credential |
{{delegating_user.email}} | The email of the delegating user |
{{org.id}} | The org’s ULID |
{{org.slug}} | The org’s slug |
{{current_time}} | ISO 8601 timestamp at issuance |
Allowed scope types
Each agent definition has anallowed_scope_types list. A credential cannot be issued with a scope type that is not in the agent’s allowed types.
To configure which scope types an agent may receive:
- Dashboard: Developers → Agents → [agent name] → Settings
- API:
PATCH /v1/agents/{agent_id}withallowed_scope_types
allowed_scope_types to null permits all scope types. This is the default for newly registered agents.