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

# Manifests API

> Register and inspect agent manifest versions — the structural identity DecimalAI uses for change detection.

A manifest is a snapshot of your agent's structural identity at a point in time: tools, prompts, models, skills, sub-agents. The SDK registers manifests **automatically** every time your agent runs — these endpoints expose the underlying records for inspection, timeline views, and CI integration.

## How manifests get created

```mermaid theme={null}
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#f5f5f4','primaryBorderColor':'#a8a29e','primaryTextColor':'#44403c','lineColor':'#a8a29e'}}}%%
flowchart TD
    A[first trace] --> B[extract config]
    B --> C[compute hash]
    C --> D[register v1]
    E[later trace] --> F{hash compare}
    F -->|same hash| G[return existing<br/>idempotent]
    F -->|new hash| H[register v2<br/>parent = v1]
    F -->|old hash| I[revert<br/>reactivate v_old]
```

You rarely call `POST /manifests` directly. The SDK's framework adapters (`decimalai.langchain.install()`, `decimalai.openai_agents.install(agent=...)`, etc.) extract the structural config and call it for you. The GitHub Action `regression-check` runs the same code under `DECIMALAI_MODE=manifest_only` to capture the PR-branch manifest.

## Common patterns

<CardGroup cols={2}>
  <Card title="Timeline view" icon="clock-rotate-left" href="/api-reference/manifests/overview">
    `GET /manifests?agent_name=...` returns version history in reverse chronological order.
  </Card>

  <Card title="Inspect a version" icon="microscope" href="/api-reference/manifests/overview">
    `GET /manifests/{id}` returns the full component list with content hashes — useful for diffing two versions.
  </Card>

  <Card title="Explicit registration" icon="hand" href="/api-reference/manifests/overview">
    When the SDK can't auto-detect (custom framework, dynamic config), call `decimalai.register_manifest(...)` directly with the components you want recorded.
  </Card>

  <Card title="CI manifest extraction" icon="github" href="/guides/regression-check">
    The regression-check GitHub Action runs in `manifest_only` mode — it calls your agent factory but suppresses LLM traffic, then writes the manifest ID to a file CI can read.
  </Card>

  <Card title="One-call impact report" icon="chart-column" href="/api-reference/manifests/overview">
    `GET /agents/{agent_name}/impact-report` returns the full impact of a manifest transition in one response: surface changes, `affected_trace_count`, keep/repair/replay/drop buckets, and a human-readable summary. Defaults to the latest transition; pin either side with `manifest_id` / `baseline_manifest_id`. (Python: `client.impact_report("my-agent")`.)
  </Card>
</CardGroup>

## Concepts

* **Manifest hash**: SHA-256 fingerprint of structural components (tools + models). Same hash + same agent = idempotent.
* **Component**: one piece of the manifest. Types: `tool`, `model`, `prompt`, `skill`, `subagent`, `output_contract`.
* **Status**: `active` (current), `superseded` (replaced), `draft` (registered but not activated).
* **Revert**: same hash reappearing reactivates the old manifest — no duplicate.

See [Versioning & Compatibility](/concepts/versioning) for the full model.

## Related

* [Manifests Guide](/guides/manifests) — framework-by-framework setup
* [Regression Check](/guides/regression-check) — how manifests drive the PR comment
* [Compatibility Policies](/guides/compatibility-policies) — tune how strict the impact analysis is
