Kins interact with the world through tools — functions they can call during conversations. KinBot provides 100+ built-in tools, plus support for MCP servers and custom scripts.
Tool Description 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 search_knowledgeSearch the knowledge base (uploaded documents) list_knowledge_sourcesList available knowledge sources
Tool Description web_searchSearch the web (provider configurable per Kin) browse_urlFetch and read a web page extract_linksExtract all links from a URL screenshot_urlTake a screenshot of a web page
Tool Description 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
Tool Description 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 a Kin spawn background sub-agents and manage delegated work:
Tool Availability Description spawn_selfmain Spawn a sub-agent of yourself spawn_kinmain Spawn a sub-agent of another Kin respond_to_taskmain Respond to a completed/failed task cancel_taskmain Cancel a running task list_tasksmain List all tasks list_active_queuesmain List active concurrency groups with status (active/queued counts) get_task_detailmain Get details of a specific task report_to_parentsub-kin Send progress updates to the parent update_task_statussub-kin Mark the task as completed or failed (mandatory ) request_inputsub-kin Ask the parent for clarification
spawn_self and spawn_kin 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.
Tool Description send_messageSend a message to another Kin (request or inform) replyReply to an inter-Kin request list_kinsList all available Kins
Tool Description 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
Tool Description 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 Kins) generate_mini_app_iconGenerate an icon for an app
Tool Description 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
Tool Description 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 generate_imageGenerate an image using a configured provider list_image_modelsList available image generation models
Tool Description 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 Kin 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 Kin’s main conversation session.
task : The payload spawns an autonomous sub-task with a configurable prompt template.
Task mode parameters:
Parameter Description 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
Tool Description create_kinCreate a new Kin update_kinUpdate a Kin’s configuration delete_kinDelete a Kin get_kin_detailsGet full details of a Kin
Tool Description list_installed_pluginsList installed plugins browse_plugin_storeBrowse the plugin store install_pluginInstall a plugin uninstall_pluginRemove a plugin enable_pluginEnable a disabled plugin disable_pluginDisable a plugin configure_pluginSet plugin configuration get_plugin_detailsView plugin details and config schema
Tool Description list_usersList all platform users get_userGet user details create_invitationCreate a signup invitation link
Tool Availability Description prompt_humanmain, sub-kin Ask the user a question and wait for a response notifymain, sub-kin Send a notification to the user
Tool Description 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
Tool Description run_shellExecute a shell command (main + sub-kin) http_requestMake HTTP requests to external APIs get_platform_configRead current KinBot configuration (sensitive values redacted) get_platform_logsView KinBot platform logs (opt-in) update_platform_configModify a config value in the .env file (opt-in) restart_platformTrigger a graceful restart of KinBot (opt-in) get_system_infoGet system/platform information execute_sqlRun raw SQL on the database (opt-in, dangerous)
Tool Description 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
Tool Description register_toolCreate a custom tool with a script run_custom_toolExecute a custom tool list_custom_toolsList registered custom tools
Each Kin has a tool config that controls access:
" disabledNativeTools " : [ "run_shell" , "execute_sql" ],
" enabledOptInTools " : [ "create_kin" , "get_platform_logs" , "update_platform_config" , "restart_platform" ],
" searchProviderId " : "provider-id"
disabledNativeTools — deny-list of native tools to hide from this Kin
mcpAccess — which MCP server tools the Kin can use (["*"] for all tools on a server, or specific tool names)
enabledOptInTools — explicitly enable tools that are disabled by default (kin management, plugin management, platform tools, execute_sql)
searchProviderId — override the global web search provider for this Kin
Configure this in the Kin’s settings page in the UI.
Some powerful tools are disabled by default and must be explicitly enabled via enabledOptInTools:
Tools Why opt-in create_kin, update_kin, delete_kin, get_kin_detailsCan modify platform structure All plugin management tools Can install/remove server extensions get_platform_logsExposes internal server logs update_platform_configCan modify server configuration restart_platformCan restart the entire KinBot process execute_sqlDirect database access — use with extreme caution
Tools declare which contexts they’re available in:
Context Description main The primary Kin agent in a conversation sub-kin A sub-agent spawned via spawn_self or spawn_kin
Most tools are main-only . The following are also available to sub-kins:
report_to_parent, update_task_status, request_input (sub-kin only)
prompt_human, notify, run_shell, http_request
Sub-kins have access to standard tools (memory, web, contacts, vault, files, etc.) and inter-Kin communication (send_message, list_kins), but not administrative tools (cron, webhooks, channels, kin management).
When a sub-kin sends an inter-Kin message:
request type : The task suspends (awaiting_kin_response status) until the recipient replies or the timeout expires (default: 5 minutes)
inform type : Fire-and-forget, the task continues immediately
Sub-kins can make up to 3 inter-Kin requests per task (configurable via maxInterKinRequests)
Model Context Protocol servers extend Kins with external tools. Kins can even manage their own MCP connections (with user approval).
MCP servers added by a Kin start in pending_approval status and must be approved by an admin before they become active.
To connect an MCP server:
Go to Settings > MCP Servers
Add the server command, args, and environment variables
Assign it to specific Kins via their tool config (mcpAccess)
Kins can also manage MCP servers programmatically using add_mcp_server, update_mcp_server, remove_mcp_server, and list_mcp_servers.
Kins can create their own tools by writing scripts:
The Kin calls register_tool with a name, description, and script
The script is stored in the Kin’s workspace
The Kin (or other tools) can invoke it via run_custom_tool
This lets Kins build specialized automation without needing code changes to KinBot.