Capabilities overview
What is a capability?
Section titled “What is a capability?”A capability is the uniform abstraction for anything callable in ESP-Claw. Each cap_* component registers one or more metadata-rich descriptors (claw_cap_descriptor_t) with claw_cap, and all execution funnels through the shared dispatcher.
Capabilities can play three roles:
| Role | kind | Meaning |
|---|---|---|
| Callable tool | CLAW_CAP_KIND_CALLABLE | JSON in, text out; invocable from the LLM, Console, or automation |
| Event source | CLAW_CAP_KIND_EVENT_SOURCE | Long-lived producer feeding claw_event_router |
| Hybrid | CLAW_CAP_KIND_HYBRID | Both callable and event emitting |
Descriptors are grouped into capability groups (claw_cap_group_t)—the smallest unit for registration, start/stop, and LLM visibility toggles.
Built-in taxonomy
Section titled “Built-in taxonomy”| Family | Components | Notes |
|---|---|---|
| IM ingress | cap_im_platform | Unified component for Feishu, QQ, Telegram, and WeChat; registers per-platform groups such as cap_im_tg |
| Filesystem | cap_files | Managed FATFS read/write, edit, copy, move, delete, and listing |
| Lua | cap_lua | Author, sync/async run, and track Lua jobs |
| Skill admin | cap_skill | Register/unregister and activate Skills, exposing core features as tools and returning the full document on activation |
| LLM inspect | cap_llm_inspect | Nested multimodal calls over local images |
| HTTP request | cap_http_request | Allowlisted direct HTTP and HTTPS requests |
| Web search | cap_web_search | External search APIs |
| System | cap_system | System/device inspection with optional runtime sections, current local time queries, and restart controls |
| Scheduler | cap_scheduler | Cron-like scheduling |
| Router admin | cap_router_mgr | Dynamic Event Router rule maintenance |
| MCP | cap_mcp_* | Model Context Protocol client/server |
| CLI | cap_cli | Surface caps through terminal helpers |
| Sessions | cap_session_mgr | Session state persistence |
| Agent manager | cap_agent_mgr | Root-only subagent spawn / supervise / close / delete |
Group registration
Section titled “Group registration”Every cap_* exposes cap_xxx_register_group() for the app to call during init:
claw_cap_register_group enforces unique group ids, runs descriptor init hooks, then finishes registration. claw_cap_start_group later invokes start (e.g. launching the Telegram poll task from the cap_im_platform component).
LLM visibility
Section titled “LLM visibility”Not every registered group is visible to the model. claw_cap_set_llm_visible_groups applies an allow-list controlling which tool schemas enter context:
Other groups remain callable from the Console or automation; activating Skills expands the LLM-facing set.
Call paths
Section titled “Call paths”Three primary entry points:
- LLM tool calls:
claw_core→claw_cap_call_from_core(session/channel aware) - Console:
cap call <name> <json>for direct execution - Event Router rules:
call_capactions (see Dataflow and automation)
claw_cap_call_context_t.caller records whether the invoker was SYSTEM, AGENT, or CONSOLE.