Files
cleveragents-core/docs/reference/tool_model.md
T
Jeff dfb91781aa
CI / lint (pull_request) Successful in 14s
CI / typecheck (pull_request) Successful in 26s
CI / security (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 15s
CI / integration_tests (pull_request) Successful in 4m10s
CI / build (pull_request) Successful in 16s
CI / unit_tests (pull_request) Successful in 8m23s
CI / docker (pull_request) Successful in 39s
CI / coverage (pull_request) Successful in 6m21s
CI / lint (push) Waiting to run
CI / typecheck (push) Waiting to run
CI / security (push) Waiting to run
CI / quality (push) Waiting to run
CI / unit_tests (push) Waiting to run
CI / integration_tests (push) Waiting to run
CI / coverage (push) Blocked by required conditions
CI / build (push) Waiting to run
CI / docker (push) Blocked by required conditions
feat(tool): add tool and validation domain models
2026-02-14 00:35:04 +00:00

5.7 KiB

Tool Domain Model

The Tool is the atomic unit of execution in CleverAgents -- a namespaced, independently registered callable operation.

Tool Name

Tools use a namespace/short_name naming pattern:

local/line-counter
devops/docker-build

The name is the unique identifier. Tools and Validations share the same namespace; no collisions are allowed.

Source Types

Source Description Required Fields
mcp Delegates to an MCP server mcp_server, mcp_tool_name
agent_skill Agent Skills Standard folder agent_skill_path
builtin Provided by the runtime (none)
custom Inline Python code code
wrapped Validation-only; wraps an existing tool (set via Validation)

ToolCapability

Describes what a tool can and cannot do:

Field Type Default Description
read_only bool False Tool only reads, never writes
writes bool False Tool can write to resources
write_scope str | None None Scope of writes
checkpointable bool False Tool supports checkpoint/rollback
checkpoint_scope CheckpointScope | None None Granularity of checkpoint support
side_effects list[str] [] Known side effects
idempotent bool False Safe to re-run
unsafe bool False Requires extra safety checks
human_approval_required bool False Requires human approval
cost_profile str | None None Named cost profile

Constraint: If read_only=True, then writes and checkpointable must be False.

ResourceSlot

Declares a resource binding for a tool:

Field Type Default Description
name str (required) Slot name (valid Python identifier)
resource_type str (required) Resource type name
access ResourceAccessMode (required) read_only or read_write
description str "" Human-readable description
binding BindingMode contextual How the resource is resolved
static_resource str | None None Resource name (required for static)
required bool True Whether slot must be filled

Constraint: static_resource required when binding=static; forbidden otherwise.

ToolLifecycle

Optional lifecycle hooks:

Field Type Description
discover str | None Hook for tool discovery
activate str | None Hook for tool activation
deactivate str | None Hook for tool deactivation

Tool Fields

Field Type Default Description
name str (required) namespace/short_name format
description str (required) Short description
source ToolSource (required) Implementation source
tool_type ToolType tool Registry discriminator
code str | None None Inline Python (custom source)
mcp_server str | None None MCP server name
mcp_tool_name str | None None MCP tool name
agent_skill_path str | None None Agent Skills path
input_schema dict | None None JSON Schema for inputs
output_schema dict | None None JSON Schema for outputs
capability ToolCapability ToolCapability() Capability metadata
resource_slots list[ResourceSlot] [] Resource bindings
lifecycle ToolLifecycle | None None Lifecycle hooks
timeout int 300 Execution timeout (seconds, >= 1)

Class Methods

  • Tool.from_config(config: dict) -- Create from a YAML config dict
  • tool.as_cli_dict() -- Stable ordered dict for CLI rendering

Properties

  • tool.namespace -- Extracted namespace from name
  • tool.short_name -- Extracted short name from name