module Riffer::Toolable

Riffer::Toolable provides the shared class-level DSL for anything that can present as a tool to an LLM β€” tools today, and subagents/workflows in the future.

Extend this module to make a class discoverable as a tool by LLM providers. Provides identifier, description, params, timeout, and JSON schema generation.

Instance-level execution concerns (call, call_with_validation, etc.) are NOT part of Toolable β€” those belong on Riffer::Tool.

class MyTool
  extend Riffer::Toolable

  description "Does something useful"

  params do
    required :input, String
  end
end