Skip to content

Tool families

Liminal ships 500+ tools in the family catalog (additional tools when Google/Microsoft MCP sidecars attach). With AGENT_TOOL_LAZY=1 (default) only a baseline subset is registered at startup; the model activates more families on demand. This keeps the tool list the model reasons over small and relevant.

  • Discover: list_tool_families (pass a task_hint to get suggestions).
  • Activate: activate_tool_family("<family>") loads a whole family into the live registry.
  • Pre-declare: breakdown can declare the families a plan will need so they pre-activate.

Baseline set is chosen by AGENT_ALWAYS_TOOLS_PROFILE (balanced default · knowledge_first · max_autonomy). Authoritative catalog: packages/tools/src/tool_catalog.ts; registration: packages/tools/src/index.ts. Every registered tool belongs to a family or the always-set (enforced by tool_catalog.test.ts).

See Lazy tool loading below if a tool you expect isn't available, and Configuration for the gating env keys.

Always loaded (baseline)

These are registered up front in every session — code is the agent's substrate, so reading, editing, navigating, and reasoning never wait on activation.

GroupTools
Reasoningthink, reason, plan, hypothesize, breakdown
Read & navigateread_file, read_file_chunked, read_file_with_imports, file_metadata, list_dir, grep_file, find_files, repo_map, workspace_snapshot
Writewrite_file (create/overwrite/append), edit_file (replacements or fuzzy diff)
Meta (always)list_tool_families, activate_tool_family, api_connect/api_list, mcp_attach/mcp_detach

Family catalog

FamilyWhat it addsNotable gate
files_editmove_file, copy_file, copy_tree, mkdir_p, delete_file (approval-gated), multi_file_apply (atomic, rollback), path_guard
shellrun_shell (destructive, approval-gated), run_background, kill_process, list_processes, read_process_output, run_command_with_pty, execute_code
code_intelast_grep, symbol_index, find_references, rename_symbol (project-wide TS/JS rename), run_tests, run_lint
gitgit_status, git_diff, git_log, git_branch, git_commit, git_checkpoint, git_rollback, git_worktree
webweb_search, web_fetch, http_request, weather_lookup
marketsmarkets_quoteAGENT_MARKETS_ENABLE
browserbrowser_open/navigate/snapshot/act/extract/wait_for/cookies/close, browser_serve_fileAGENT_BROWSER
captchacaptcha_solveAGENT_CAPTCHA_KEY
visionvision_analyze, upload_imageAGENT_VISION_*
audiospeak (TTS), transcribe_audioAGENT_TTS_ENABLED / AGENT_TRANSCRIBE_ENABLED
memory_advancedrecall_relevant, memory_query, memory_graph, memory_consolidate, curate_memory, restore_memory, memory_promote, memory_neighbors, consolidate_chat, read_artifact, failure_review
vaultvault_write/read/search/list/links/graph/delete
documentdoc_plandoc_*doc_render_pptx/docx/pdfdoc_exportAGENT_DOC_ENGINE
taskstask_checkpoint, resume_task, feature_checklist, pattern_record
agenda_scheduleragenda_set/get/clear, schedule_create/list/delete/run
metasuggest_improvement, view_insights, self_telemetry, dynamic-tool + connector tools
dynamic_toolscreate_tool, edit_tool, remove_tool, list_dynamic_tools
external_apiapi_<conn>_<op> (from api_connect), mcp_<conn>_<tool> (from mcp_attach)
connectorsconnect_provider, disconnect_provider, list_connectors, integrations_snapshot, revoke_integration_account, mail_search_inboxesOAuth in Integrations hub
google_workspaceGoogle MCP + Calendar/Gmail REST + email_style_inferGoogle OAuth
microsoft_365Microsoft MCP + Outlook REST + email_style_inferMicrosoft OAuth
githubGitHub MCP (dynamic)GitHub OAuth / GITHUB_TOKEN
slackSlack REST (channels, search, threads, reactions, files)Slack OAuth
linearLinear REST issuesLinear OAuth
notionNotion REST workspaceNotion OAuth
xeroXero accounting RESTXero OAuth
youtubeYouTube Data + Analytics RESTYouTube OAuth
reasoning_advanceddecompose_goal, verify_contract, dispatch_graph, query_tool_outputs, research_stateharness-scoped
synthesissynthesis_run (cross-domain synthesis sub-agent)harness-scoped
orchestrationspawn_agent, wait_for_agents, cancel_agent, list_agents, verify_result, evidence_critic, path_critic, policy_critic, reflect_debate, branch_explore, branch_evaluateharness-scoped
workflowplan_workflow, run_workflow, workflow_status, query_workflowroot-only, AGENT_WORKFLOWS
navigationextended repo/file navigation helpers
independencebreakout_start, independence_status
harness_uicheck_context, compress_context, get/set_runtime_settings, set_persona, refresh_world_contextharness-scoped

Harness-scoped families are recreated per child agent via onChildCreated (never copied parent → child). Root-only families (workflow) are excluded from children so workflows can't nest. See Sub-agents & orchestration and Dynamic workflows.

Feature deep-dives

AreaGuide
Web research (web_search + parallel web_fetch)Web research
Browser automation (Playwright)Browser automation
Memory, recall, vaultMemory & recall
Documents (PPTX/DOCX/PDF)Document engine
Voice (TTS + dictation)Voice
Parallel sub-agentsSub-agents & orchestration
Multi-phase fan-outDynamic workflows
External APIs / MCPapi_connect (OpenAPI 3.x) · mcp_attach (Streamable-HTTP MCP)
Integrations (OAuth)Connectors · per-provider guides
Multi-account mailMulti-account mail
Compose dock & attachmentsCompose dock & attachments
Inbox automationInbox watcher

Troubleshooting inactive tools

If the model reports a tool isn't available under lazy loading:

  1. list_tool_families (pass a task_hint) to see families and what they hold.
  2. activate_tool_family("<best-fit family>") — one family, not many.
  3. Retry the exact tool with corrected args.

Never activate the same family twice on one registry — tool_catalog.ts tracks activated families. To keep a family always-on (e.g. browser), set its always-active env flag or use the max_autonomy profile.

Contributors

Full per-file map: repository root CLAUDE.md (packages/tools section). Eval scenarios: npm run eval -w packages/eval.

Liminal AI · Beta docs (v0.1.2) · Marketing: vireondynamics.com/liminal · Compare: vireondynamics.com/liminal/compare