Behaviour for tool implementations. Tools are provided by the consuming app and wrapped by ToolExec.
Minimal implementation
defmodule MyApp.Tools.ERP do
use Cyclium.Tool
def call(:read_po, args, _ctx), do: {:ok, fetch_po(args["po_id"])}
enduse Cyclium.Tool provides sensible defaults for all optional callbacks.
Override any of them as needed.