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.