# `ToolCall.Emit`

Dispatches IR to a provider-specific schema.

The IR is intentionally provider-neutral: `docs/design.md` lists the subset
each provider actually accepts.

`precompile/1` renders the closed set of provider variants at compile time so
that a module carries finished schemas as literals; `emit/3` renders loose IR
values on demand. Runtime IR is validated before rendering.

# `target`

```elixir
@type target() :: :openai | :anthropic
```

# `emit`

```elixir
@spec emit([ToolCall.IR.Tool.t()] | ToolCall.IR.Tool.t(), target(), keyword()) ::
  [map()] | map()
```

---

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