Skip to content
Back to site

Tools

Agents interact with the world through tools: functions they can call during conversations. Hivekeep provides 100+ built-in tools, plus support for MCP servers and custom scripts.

ToolDescription
recallSemantic search across memories
memorizeStore a new memory
update_memoryEdit an existing memory
forgetDelete a memory
list_memoriesBrowse all memories with filters
review_memoriesReview and curate memories
search_historyFull-text search through past conversation messages
browse_historyBrowse messages by date range with pagination
list_summariesList all compacting summaries (active and archived) with metadata
read_summaryRead the full text of a specific compacting summary by ID
search_knowledgeSearch the knowledge base (uploaded documents)
list_knowledge_sourcesList available knowledge sources
ToolDescription
web_searchSearch the web (provider configurable per Agent)
browse_urlFetch and read a web page
extract_linksExtract all links from a URL
screenshot_urlTake a screenshot of a web page
ToolDescription
get_contactGet full contact details by ID
search_contactsSearch across all contacts
create_contactCreate a new contact with identifiers
update_contactUpdate contact info or add identifiers
delete_contactRemove a contact
set_contact_noteAdd private or global notes to a contact
find_contact_by_identifierLook up a contact by platform/identifier
ToolDescription
get_secretRetrieve a secret value by key
create_secretStore a new secret
update_secretUpdate an existing secret
delete_secretRemove a secret
search_secretsSearch secrets by query
redact_messageRedact sensitive content from a chat message
get_vault_entryRetrieve a structured vault entry
create_vault_entryCreate a structured vault entry
create_vault_typeDefine a custom vault type (e.g. “WiFi Network”)
get_vault_attachmentRetrieve a vault entry’s attachment

These tools let an Agent spawn background sub-agents and manage delegated work:

ToolAvailabilityDescription
spawn_selfmainSpawn a sub-agent of yourself
spawn_agentmainSpawn a sub-agent of another Agent
respond_to_taskmainRespond to a completed/failed task
cancel_taskmainCancel a running task
list_tasksmainList all tasks
list_active_queuesmainList active concurrency groups with status (active/queued counts)
get_task_detailmainGet details of a specific task
report_to_parentsub-agentSend progress updates to the parent
update_task_statussub-agentMark the task as completed or failed (mandatory)
request_inputsub-agentAsk the parent for clarification

spawn_self and spawn_agent support optional concurrency control:

  • concurrency_group: Queue name (e.g. "batch-issues", "api-calls"). Tasks in the same group are limited to concurrency_max parallel executions.
  • concurrency_max: Max concurrent tasks in the group. Required if concurrency_group is set. Default: 1.

Excess tasks enter queued status and are automatically promoted (FIFO) when a slot opens. Use list_active_queues to monitor queue status.

ToolDescription
send_messageSend a message to another Agent (request or inform)
replyReply to an inter-Agent request
list_kinsList all available Agents
ToolDescription
create_cronCreate a scheduled recurring task
update_cronUpdate a cron job
delete_cronRemove a cron job
list_cronsList all cron jobs
get_cron_journalView a cron’s execution history
trigger_cronManually trigger a cron job
wake_me_inSet a one-shot timer (“remind me in 30 minutes”)
cancel_wakeupCancel a pending wakeup
list_wakeupsList pending wakeups
ToolDescription
create_mini_appCreate a new mini-app
update_mini_appUpdate app metadata
delete_mini_appDelete an app
list_mini_appsList all mini-apps
write_mini_app_fileWrite a file to an app’s workspace
read_mini_app_fileRead a file from an app
delete_mini_app_fileDelete a file
list_mini_app_filesList all files in an app
get_mini_app_storageRead a persistent KV entry
set_mini_app_storageWrite a persistent KV entry
delete_mini_app_storageDelete a KV entry
list_mini_app_storageList all KV keys
clear_mini_app_storageClear all KV entries
create_mini_app_snapshotSave a snapshot before risky changes
list_mini_app_snapshotsList available snapshots
rollback_mini_appRestore from a snapshot
get_mini_app_templatesBrowse starter templates
get_mini_app_docsGet mini-app SDK documentation
browse_mini_appsBrowse the App Gallery (apps from all Agents)
generate_mini_app_iconGenerate an icon for an app
get_mini_app_consoleGet recent console output (logs, warnings, errors) from a running mini-app
edit_mini_app_fileEdit a mini-app file by replacing exact text (single match by default, optional replaceAll)
multi_edit_mini_app_fileApply multiple text replacements to a single mini-app file atomically
ToolDescription
list_channelsList configured messaging channels
list_channel_conversationsList recent conversations on a channel
send_channel_messageSend a message to a channel
create_channelCreate a new messaging channel
update_channelUpdate channel configuration
delete_channelDelete a messaging channel
activate_channelActivate an inactive channel
deactivate_channelDeactivate an active channel
ToolDescription
store_fileCreate a shareable file (text, base64, URL, or workspace path)
get_stored_fileGet file metadata and download URL
list_stored_filesList all stored files
search_stored_filesSearch files by name or description
update_stored_fileUpdate file metadata
delete_stored_fileDelete a stored file
attach_fileAttach a file to the current message
list_image_modelsDiscover image models available across configured providers (with maxImageInputs: 0 = text-to-image, 1 = single-image edit, N>1 = multi-reference)
describe_image_modelFetch the tunable per-model parameters (seed, guidance, style, lora_scale, …) for a chosen model, call this before generate_image to populate its params field
generate_imageGenerate an image with a chosen model. Accepts a text prompt, optional imageUrls array (source images, capped by the model’s maxImageInputs), and optional params from describe_image_model

The three image tools are designed to be chained:

  1. list_image_models: see what’s available across the user’s configured providers. Each entry includes maxImageInputs so you know whether the model is text-to-image only (0), single-image edit/inpainting (1), or multi-reference (N>1, e.g. Nano Banana Pro, Flux-Kontext multi).
  2. describe_image_model (optional but recommended), for the model you want to use, fetch its parameter schema (each entry has type, description, default, and either an enum or minimum/maximum). Image-input fields are deliberately excluded, those are driven by generate_image’s imageUrls, not by params.
  3. generate_image: provide prompt, optional imageUrls (one or more URLs from the conversation or a previous generate_image call), and optional params from step 2. Validation is loose on the client side: an invalid params value surfaces as a 422 from the upstream provider, which round-trips back as a tool error so you can self-correct on the next call.
ToolDescription
create_webhookCreate an incoming webhook with optional payload filtering and dispatch mode
update_webhookUpdate webhook configuration, including filters and dispatch mode
delete_webhookRemove a webhook
list_webhooksList all webhooks with filter, dispatch, and stats info

Webhooks support payload filtering to drop irrelevant events before they reach the Agent queue, saving LLM tokens. Two filter modes are available:

  • Simple mode (filter_mode: "simple"): Extract a value from the JSON payload using a dot-notation path (filter_field, e.g. "action" or "event.type") and match against an allowlist (filter_allowed_values). Case-insensitive matching.
  • Advanced mode (filter_mode: "advanced"): Test the raw payload body against a regex pattern (filter_expression).

Set filter_mode to null to disable filtering.

Webhooks support two dispatch modes:

  • conversation (default): The payload is injected as a message in the Agent’s main conversation session.
  • task: The payload spawns an autonomous sub-task with a configurable prompt template.

Task mode parameters:

ParameterDescription
dispatch_mode"conversation" or "task"
task_title_templateTemplate for task title. Use {{field.path}} placeholders resolved against the JSON payload (e.g. "GitHub: {{action}} on #{{issue.number}}")
task_prompt_templateTemplate for the task description/prompt. Use {{field.path}} placeholders and {{__payload__}} for the full raw payload
max_concurrent_tasksMax concurrent webhook-spawned tasks. Default: 1. 0 = unlimited. Uses the concurrency group system internally
ToolDescription
create_agentCreate a new Agent
update_agentUpdate an Agent’s configuration
delete_agentDelete an Agent
get_agent_detailsGet full details of an Agent
ToolDescription
list_usersList all platform users
get_userGet user details
create_invitationCreate a signup invitation link
ToolAvailabilityDescription
prompt_humanmain, sub-agentAsk the user a question and wait for a response
notifymain, sub-agentSend a notification to the user
ToolDescription
read_fileRead a text file or extract text from a PDF. Supports offset/limit for large files
write_fileCreate or overwrite a file
edit_fileReplace exact text in a file. Supports replaceAll flag for bulk find-and-replace
multi_editApply multiple text replacements to a single file atomically (all succeed or none applied)
list_directoryList files and directories with optional glob pattern filtering
grepRegex search across files using ripgrep (with grep fallback). Supports 3 output modes: content, files_with_matches, count. Glob filtering, context lines, multiline mode
ToolDescription
run_shellExecute a shell command (main + sub-agent)
http_requestMake HTTP requests to external APIs
get_platform_configRead current Hivekeep configuration (sensitive values redacted)
get_platform_logsView Hivekeep platform logs (dangerous; grant via toolbox)
update_platform_configModify a config value in the .env file (dangerous; grant via toolbox)
restart_platformTrigger a graceful restart of Hivekeep (dangerous; grant via toolbox)
get_system_infoGet system/platform information
get_setup_healthRead-only setup diagnostic: capability coverage, invalid providers, stale defaults, channel status, public-URL sanity, plus a prioritized fix list
list_providersList all configured AI providers with their capabilities (available to every Agent, not just the configurator)
list_modelsList available models across providers, optionally filtered by capability (llm, image, embedding, search, rerank). Available to every Agent
execute_sqlRun raw SQL on the database (dangerous; grant via toolbox)
ToolDescription
add_mcp_serverRegister a new MCP server
update_mcp_serverUpdate MCP server configuration
remove_mcp_serverRemove an MCP server
list_mcp_serversList configured MCP servers

Custom tools are global and script-based. The authoring tools below create and manage them; each finished tool is then exposed to Agents under its own name, custom_<slug> (resolved separately, not listed in this registry), and runs with its configured timeout.

ToolDescription
create_custom_toolCreate a custom tool definition
write_custom_tool_fileWrite or update the tool’s script file
run_custom_tool_setupRun the tool’s one-time setup step (e.g. install dependencies)
test_custom_toolExecute a custom tool to validate it before publishing
update_custom_toolUpdate a custom tool’s metadata or config
delete_custom_toolRemove a custom tool
list_custom_toolsList registered custom tools
create_tool_domainCreate a tool domain (logical grouping for custom tools)
list_tool_domainsList tool domains
update_tool_domainUpdate a tool domain
delete_tool_domainRemove a tool domain

Custom tool execution timeout is configurable via environment variables:

  • HIVEKEEP_CUSTOM_TOOL_TIMEOUT, default timeout (default: 30s)
  • HIVEKEEP_CUSTOM_TOOL_MAX_TIMEOUT, maximum allowed timeout (default: 300s / 5min)

Per-invocation timeout values passed by the Agent are clamped between 1 second and the server maximum.

Tool access is governed by toolboxes: the single tool-grant primitive for both main Agents and tasks, across all four tool sources (native, plugin, MCP, custom). There is no per-Agent deny-list, no MCP access gate, and no capability flags.

Each Agent (and each task/cron) references an array of toolbox ids:

{
"toolboxIds": ["all"]
}

The resolved toolset is:

allowed = CORE_TOOLS ∪ (union of every referenced toolbox's tool names)
toolset = { tool ∈ universe | tool ∈ allowed }
  • CORE_TOOLS: a mandatory floor of always-available tools, layered on top of any selection. Even an empty toolbox list still gets the core floor.
  • A toolbox lists tool names by their stable name. The built-in all toolbox uses *, which expands to every native tool plus every enabled custom tool. MCP and plugin tools must still be listed by name to be granted (* does not cover them).
  • An empty / null selection resolves to the core floor only. Existing Agents that predate toolboxes are migrated to an explicit ['all'] selection at boot, preserving their previous behavior.

Assign toolboxes in the Agent’s settings page in the UI.

ToolboxPurpose
allAll native tools plus all enabled custom tools (MCP/plugin tools still granted by name)
codeTicket-bound implementation: project/ticket tools, web docs lookup, read-only memory, project knowledge
researchWeb browsing, history/summaries, full memory read/write
opsMemory, vault secrets, redaction, HTTP requests, system info
scoutRead-only exploration: grep, file/directory reads, web lookups (no writes)
emailEmail account access (list, read, search, send)
address-bookRead-only external address books (iCloud, …)
calendarCalendar access (list/create/update/delete events)
configuratorPlatform setup set used by the Queenie onboarding guide

You can also create custom toolboxes via the toolbox management tools (create_toolbox, update_toolbox, delete_toolbox, list_toolboxes, list_tools).

There is no separate “opt-in” allow-list. Powerful or destructive tools are simply not part of curated toolboxes by default: an Agent receives them only when a toolbox it references lists the tool by name (or via the all wildcard for native tools). Grant these deliberately:

ToolsWhy to grant carefully
create_agent, update_agent, delete_agent, get_agent_detailsCan modify platform structure
Plugin management toolsCan install/remove server extensions
get_platform_logsExposes internal server logs
update_platform_configCan modify server configuration
restart_platformCan restart the entire Hivekeep process
execute_sqlDirect database access, use with extreme caution

For sub-agents, a hard exclusion floor is subtracted after the allow-list, so even an all toolbox cannot grant a main-session-only tool to a task.

Tools declare which contexts they’re available in:

ContextDescription
mainThe primary Agent agent in a conversation
sub-agentA sub-agent spawned via spawn_self or spawn_agent

Most tools are main-only. The following are also available to sub-agents:

  • report_to_parent, update_task_status, request_input (sub-agent only)
  • save_run_learning, delete_run_learning (sub-agent only, cron tasks only, persist lessons learned across cron runs)
  • prompt_human, notify, run_shell, http_request

Sub-agents have access to standard tools (memory, web, contacts, vault, files, etc.) and inter-Agent communication (send_message, list_kins), but not administrative tools (cron, webhooks, channels, agent management).

When a sub-agent sends an inter-Agent message:

  • request type: The task suspends (awaiting_agent_response status) until the recipient replies or the timeout expires (default: 5 minutes)
  • inform type: Fire-and-forget, the task continues immediately
  • Sub-agents can make up to 3 inter-Agent requests per task (configurable via maxInterAgentRequests)

Model Context Protocol servers extend Agents with external tools. Agents can even manage their own MCP connections (with user approval).

MCP servers added by an Agent start in pending_approval status and must be approved by an admin before they become active.

MCP servers are global once active: their tools join the universe of grantable tools. To expose specific MCP tools to an Agent, list them by name in a toolbox the Agent references (the all wildcard does not auto-grant MCP tools).

To connect an MCP server:

  1. Go to Settings > MCP Servers
  2. Add the server command, args, and environment variables
  3. Add the MCP tool names to a toolbox, then assign that toolbox to the Agent

Agents can also manage MCP servers programmatically using add_mcp_server, update_mcp_server, remove_mcp_server, and list_mcp_servers.

Agents can create their own tools by writing scripts:

  1. The Agent calls create_custom_tool with a name and description, then write_custom_tool_file to add the script
  2. If the tool needs dependencies, the Agent runs run_custom_tool_setup once
  3. The Agent validates it with test_custom_tool
  4. Once published, the tool becomes available to Agents under its own name (custom_<slug>)

Custom tools are global (shared across Agents), not stored per-Agent. This lets Agents build specialized automation without needing code changes to Hivekeep.