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", ...}, ...]