Skip to content

Tools are what let the agent do things — read files, run commands, search the web, manage todos. CLIver ships with a set of built-in tools, and can connect to external tools via MCP servers.

The harness is CLIver’s orchestration layer — it coordinates the Re-Act loop, built-in tools, MCP servers, skills, and the permission system. When the LLM decides to use a tool, the harness routes the call through permission checks, executes it (locally or via MCP), and feeds the result back.

flowchart LR
LLM --> Harness
Harness --> Tools[Built-in Tools]
Harness --> MCP[MCP Servers]
Harness --> Permissions

Each tool is a Python function with a Pydantic schema. The LLM sees tool names and descriptions in its system prompt. When it decides to use one, the harness executes the function and feeds the result back into the conversation.

CategoryTools
File I/Oread_file, write_file, list_directory, grep_search
Shellrun_shell_command, docker_run, execute_code
Webweb_search, web_fetch, browse_web, browser_action
Task Managementtodo_read, todo_write, create_task
Knowledgeidentity_update, memory_read, memory_write, search_sessions
Interactionask_user_question, cliver_help, skill
Mediaimage_generate

Beyond built-in tools, CLIver can connect to any Model Context Protocol server for extended capabilities — file systems, databases, APIs, and more — all through a standardized protocol. The harness treats MCP tools the same as built-in ones: same permission checks, same execution flow.

Built-in tools are auto-discovered from src/cliver/tools/. MCP servers are configured in config.yaml. You can filter available tools via enabled_toolsets in config.