> ## 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.

# World manifest

> The self-description a world returns from initialize — the heart of AWP discoverability.

Returned by `initialize`. A complete, valid manifest (validated in CI against [`world-manifest.schema.json`](/api-reference/schemas/world-manifest); the file is [`examples/v0.1/world-manifest.json`](https://github.com/Hyperduality/agent-world-protocol/blob/main/examples/v0.1/world-manifest.json)):

```json awp:world-manifest theme={null}
{
  "protocol_version": "0.1",
  "world": { "name": "warehouse-sim", "version": "2.3.0", "vendor": "acme" },
  "time_models": ["lockstep", "streaming"],
  "tick_policy": "on_tick",
  "tick_authority": "any_session",
  "capabilities": { "seed": true, "snapshot": true, "replay": true, "task": true },
  "initial_states": ["empty_shelves", "stocked"],
  "embodiments": [
    {
      "id": "arm_01",
      "kind": "manipulator",
      "shared_control": false,
      "action_types": ["move_to_pose", "gripper_set", "stop"],
      "channels": ["rgb_wrist", "proprio"]
    }
  ],
  "observation_channels": [
    { "id": "rgb_wrist", "modality": "image/jpeg", "rate_hz": 30, "loss_class": "latest-wins",
      "schema": { "width": 1280, "height": 720, "color_space": "srgb" } },
    { "id": "proprio", "modality": "proprio/json", "rate_hz": 100, "loss_class": "latest-wins", "stale_after_ms": 50,
      "schema": { "joints": 7, "fields": ["q_rad", "dq_radps", "tau_nm"] } }
  ],
  "action_schemas": [
    { "type": "move_to_pose", "params_schema": { "$ref": "#/$defs/move_to_pose_params" },
      "duration": "extended", "preemption": ["replace", "queue"], "concurrency_group": "arm_motion", "max_queue": 4,
      "requires_approval": false },
    { "type": "gripper_set",
      "params_schema": { "type": "object", "properties": { "width_m": { "type": "number", "minimum": 0, "maximum": 0.085 } },
                         "required": ["width_m"], "additionalProperties": false },
      "duration": "extended", "preemption": "replace", "concurrency_group": "gripper" },
    { "type": "stop", "params_schema": { "type": "object", "additionalProperties": false },
      "duration": "instant", "preemption": "replace", "concurrency_group": "arm_motion" }
  ],
  "safety_policy": {
    "envelopes": [
      { "embodiment": "arm_01",
        "spatial": { "frame": "base", "aabb_m": [[-0.8, -0.8, 0.0], [0.8, 0.8, 1.2]] },
        "max_velocity_mps": 1.0, "max_force_n": 40, "max_action_rate_hz": 10,
        "enforcement": "both", "on_violation": "clamp" }
    ],
    "safe_state": { "behavior": "safe_stop", "watchdog_ms": 2000 },
    "max_basis_age_ms": 200,
    "approval_timeout_ms": 60000,
    "audit": { "redact_paths": ["/task/content"] }
  },
  "$defs": {
    "move_to_pose_params": {
      "type": "object",
      "properties": {
        "pose": { "$ref": "https://agentworldprotocol.com/schemas/v0.1/common.schema.json#/$defs/pose" },
        "max_velocity_mps": { "type": "number", "exclusiveMinimum": 0, "maximum": 1.0 }
      },
      "required": ["pose"],
      "additionalProperties": false
    }
  },
  "extensions": {}
}
```

Local `$ref`s inside `params_schema` resolve against the manifest's own `$defs`; shared primitives (`pose`, timestamps) come from the published [`common.schema.json`](https://github.com/Hyperduality/agent-world-protocol/blob/main/schemas/v0.1/common.schema.json). `safety_policy` is always a concrete object, never a reference.

* Every `channel` and `action_type` referenced by an embodiment MUST be defined in the top-level lists. `[AWP-MAN-001]`
* `params_schema` values MUST be valid JSON Schema (2020-12). `[AWP-MAN-002]`
* Manifests MUST be stable for the life of the connection; changes require re-`initialize`. `[AWP-MAN-003]`
* `capabilities` is an open map. v0.1 standard keys: `seed`, `snapshot`, `replay`, `command_channels`, `task`. Unknown keys MUST be ignored; vendor keys use `x-<vendor>.` naming. New standard keys arrive by RFD ([RFD process](/community/rfd-process)). `[AWP-MAN-004]`
* Worlds declaring the `command_channels` capability additionally list `command_channels` — agent→world channels, same schema as observation channels — see [command channels](/spec/loop/command-channels). `[AWP-MAN-005]`
* Worlds offering `lockstep` MUST declare `tick_policy` (`on_tick`) and `tick_authority` (`any_session` | `barrier`); worlds offering `streaming` MUST declare `safety_policy.safe_state` and MAY declare `safety_policy.max_basis_age_ms` ([time models](/spec/loop/time-models), [safe state](/spec/safety/safe-state)). `[AWP-MAN-006]`
* Embodiments that may be bound together by one session share a `multi_bind_group`; `session.open` names them in `embodiments` and submissions then carry `embodiment_id` (AWP-EMB-005). `[AWP-MAN-007]`

Canonical schema: [world-manifest](/api-reference/schemas/world-manifest).
