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

# Message envelope

> The JSON-RPC 2.0 wrapper used by every control-channel message.

<CodeGroup>
  ```json Request theme={null}
  { "jsonrpc": "2.0", "id": 42, "method": "action.submit", "params": { } }
  ```

  ```json Response theme={null}
  { "jsonrpc": "2.0", "id": 42, "result": { } }
  ```

  ```json Notification theme={null}
  { "jsonrpc": "2.0", "method": "action.status", "params": { } }
  ```

  ```json Error theme={null}
  { "jsonrpc": "2.0", "id": 42,
    "error": { "code": 3001, "message": "AWP_PARAMS_INVALID",
               "data": { "retryable": false, "detail": "pose.p_m[2] exceeds maximum" } } }
  ```
</CodeGroup>

The blocks above are illustrative fragments. Complete, validated messages appear on each method page tagged with their schema (for example ` ```json awp:action-submit `).

Rules:

* `id` values are unique per sender per connection; batching is prohibited (AWP-CTL-006); unknown fields are ignored (AWP-VER-003); unknown methods return JSON-RPC `-32601`.
* One connection carries at most one session (AWP-CTL-007).
* Every `action.status`, `world.event`, and `session.state` notification carries `status_seq`; the agent returns the highest value it has processed in `session.resume` (AWP-CTL-008).
* All 64-bit fields (`ts_mono_ns`, `ts_sim_ns`, `ts_send_ns`, `received_ts_mono_ns`, `basis_ts_mono_ns`, `valid_until_ns`, `origin_ns`, `receive_ns`, `transmit_ns`, `seq`, `tick`, `status_seq`, `expires_at_ns`, …) are JSON integers ≤ 2^53 − 1 (AWP-CTL-009). This is safe in every mainstream JSON implementation without BigInt or string encoding; sessions are bounded at \~104 days as a consequence.
