> ## Documentation Index
> Fetch the complete documentation index at: https://docs.attesso.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How Attesso works

> Follow the end-to-end trust boundaries and authorization lifecycle.

Attesso sits between your agent workflow and the system that performs an action. It records bounded authority and evaluates a concrete proposal. Execution remains outside Attesso.

```mermaid theme={null}
sequenceDiagram
    participant U as End user
    participant X as Your platform
    participant A as Attesso
    participant E as Executor

    X->>A: Create immutable mandate
    A-->>X: PENDING_APPROVAL
    X->>A: Create approval session
    X->>U: Redirect to hosted approval
    U->>A: Approve exact mandate with passkey
    A-->>X: ACTIVE mandate
    X->>A: Submit proposed action
    A-->>X: Decision + can_execute
    alt can_execute is true
      X->>E: Execute before execute_before
      E-->>X: Accepted or failed
      X->>A: Commit or cancel
    else DENY or INDETERMINATE
      X-->>X: Do not execute
    end
    X->>A: Retrieve signed evidence
```

## Trust boundaries

* **Your frontend** owns the signed-in end-user experience and redirects to Attesso for approval.
* **Your backend** is the only holder of Attesso API keys. It creates mandates, proposes actions, executes allowed actions, and reports outcomes.
* **Attesso** validates, hosts approval, evaluates, reserves one execution, and preserves evidence.
* **Your executor** performs the booking, purchase, or other action. It may be your own system or an external provider.

## Lifecycle

<Steps>
  <Step title="Translate intent into policy">
    Your backend converts user intent into a structured policy. Attesso does not interpret natural language.
  </Step>

  <Step title="Bind approval to one exact mandate">
    The end user reviews the immutable bounds and approves with a passkey on Attesso's hosted origin.
  </Step>

  <Step title="Evaluate deterministically">
    Attesso compares the action name and every constraint. A mismatch returns `DENY`. Missing or unsupported evaluable data returns `INDETERMINATE`. Neither permits execution.
  </Step>

  <Step title="Reserve and execute once">
    An `ALLOW` decision atomically creates one reservation. Your backend may execute only while `can_execute` is true and before `execute_before`.
  </Step>

  <Step title="Close the reservation">
    Commit when the executor accepts the action. Cancel only after any external execution capability is disabled or never became usable.
  </Step>

  <Step title="Verify the record">
    Retrieve the signed evidence bundle for the mandate, approval, proposed action, decision, and lifecycle transitions.
  </Step>
</Steps>

<Info>
  Attesso fails closed. Timeouts, unavailable infrastructure, `DENY`, and `INDETERMINATE` never grant permission.
</Info>
