# `GEPA.LLM.Tool`
[🔗](https://github.com/nshkrdotcom/gepa_ex/blob/v0.3.0/lib/gepa/llm/tool.ex#L1)

GEPA-facing portable tool specification.

The first shipping slice uses this for ReqLLM conversion only. ASM tool-loop
support remains capability-gated until the shared CLI tool surface exists.

# `callback`

```elixir
@type callback() :: (map(), map() -&gt; {:ok, term()} | {:error, term()})
```

# `t`

```elixir
@type t() :: %GEPA.LLM.Tool{
  description: String.t(),
  input_schema: map() | keyword(),
  metadata: map(),
  name: String.t(),
  run: callback() | nil
}
```

# `new`

```elixir
@spec new(keyword()) :: t()
```

---

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