# `ADK.Tool.Declarative`
[🔗](https://github.com/zeroasterisk/adk-elixir/blob/main/lib/adk/tool/declarative.ex#L1)

Macro-based tool declaration using `@tool` module attributes.

## Usage

    defmodule MyTools do
      use ADK.Tool.Declarative

      @tool name: "greet", description: "Greet a person"
      def greet(_ctx, %{"name" => name}) do
        {:ok, "Hello, #{name}!"}
      end

      @tool name: "add", description: "Add two numbers"
      def add(_ctx, %{"a" => a, "b" => b}) do
        {:ok, a + b}
      end
    end

    MyTools.__tools__()
    # => [%ADK.Tool.FunctionTool{name: "greet", ...}, ...]

---

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