# `DeltaCalc.Manifest`
[🔗](https://github.com/ZenHive/delta_calc/blob/v0.3.0/lib/delta_calc/manifest.ex#L1)

Aggregates the Descripex-annotated API surface for agent discovery and MCP tooling.

Use `build/0` for a JSON-serializable manifest, or `tools/0` for MCP tool definitions
that a trading agent can call directly.

CI enforces five global invariants in `DeltaCalc.ManifestConsistencyTest`:

  1. Public function name+arity is unique across all `@modules` entries.
  2. Every `lib/delta_calc/` module exposing `api()` functions is listed in `@modules`.
  3. Every advertised public function carries Descripex `:hints` metadata.
  4. Every public function in a registered module is advertised via `api()`.
  5. Every publicly documented `lib/delta_calc/` module is listed in `@modules`.

# `build`

```elixir
@spec build() :: map()
```

Build a JSON-serializable manifest of all public DeltaCalc APIs.

# `modules`

```elixir
@spec modules() :: [module()]
```

Return the list of modules included in the manifest.

# `tools`

```elixir
@spec tools(keyword()) :: [map()]
```

Return MCP tool definitions for all public DeltaCalc APIs.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
