Resources, effects, and recovery
Understand why every model, Tool, API, database, Memory, browser, sandbox, and storage operation crosses one governed boundary.
Agent code has no ambient network, secret, database, storage, or provider authority. Every world operation targets a pinned Resource and an operation from its immutable catalog. Constal validates arguments, evaluates Policy, enforces controls and budgets, records the operation, invokes the least-privilege integration, validates the result, and preserves the outcome.
One boundary for every capability
Models, web access, services, databases, MCP servers, Memory, browsers, sandboxes, and artifact storage all use the same invocation protocol. A Tool is a model-facing affordance over that boundary; it is not a second effect system. Credential material is supplied only to the consuming integration and never becomes an Agent value.
This uniformity is what makes mixed Agent behavior understandable. A Model call, GitHub mutation, database read, and sandbox execution may use different integrations, but they share exact Resource identity, Policy evidence, durable history, control semantics, and audit evidence.
Effects declare recovery
| Effect class | Recovery after an uncertain result |
|---|---|
read-only | Repeat safely |
idempotent | Repeat under the original operation identity or destination key |
reconcilable | Check the provider outcome; invoke again only after proof it was not performed |
non-idempotent | Record outcome-unknown; never retry automatically |
The operation declaration is authoritative. Policy can deny, constrain, substitute, or require approval, but it cannot relabel an effect as safer. Transport failure, timeout, malformed output, or a lost response does not prove an operation failed. Constal preserves that uncertainty until the declared recovery contract can resolve it.
Read Resources to configure capabilities and Resources SDK guide to invoke them from Agent code.