AgentTool.fromFunction covers single functions; deriving a whole tool set from a trait’s methods (names, scaladoc-or-annotation descriptions, parameter case classes → tapir schemas) via Scala 3 inline/Mirror machinery would match Embabel’s @Tool-on-domain-objects ergonomics without reflection. Out of scope for Scala 2.13 (document the limitation). Acceptance: a trait with two methods produces two AgentTools whose schemas round-trip through the existing AgentToolSpec machinery.
AgentTool.fromFunction covers single functions; deriving a whole tool set from a trait’s methods (names, scaladoc-or-annotation descriptions, parameter case classes → tapir schemas) via Scala 3 inline/Mirror machinery would match Embabel’s @Tool-on-domain-objects ergonomics without reflection. Out of scope for Scala 2.13 (document the limitation). Acceptance: a trait with two methods produces two AgentTools whose schemas round-trip through the existing AgentToolSpec machinery.