Skip to content

Built-in tools

Tools depend on the active provider and model supporting tool calling. Many are gated behind a feature flag (/config > Permissions), a Discord permission, a model capability, or an optional API key.

ToolPrompt macroRequiresWhat it does
Review capabilities{capabilities_tool}-Check current chat abilities, commands, or settings before answering.
Create / update long-term memory{memory_tool} / {memory_update_tool}self_teaching_enabledSave or replace a stable server fact or user preference.
Update short-term memory{short_term_memory_tool}-Save temporary working memory for the current channel or story arc.
Create / update task{task_tool} / {task_update_tool}-Schedule or edit reminders and self-tasks (see Scheduled Tasks).
Cross-channel message{cross_channel_tool}-Act in another channel or thread, with an optional report-back.
Create thread{create_thread_tool}thread_creation_enabled + thread permsOpen a public thread and post its starter message.
Roll dice-dice_rolling_enabledRoll dice publicly and use the returned result in roleplay.
Select sticker{sticker_tool}sticker_usage_enabledAdd a matching server sticker or custom expression to a reply.
Manage message{manage_message_tool}manage_message_enabledPin, edit, or delete recent messages (pin needs Manage Messages).
Block / unblock user{block_user_tool} / {unblock_user_tool}user_blocking_enabledPersona-scoped mute/block of a user (does not touch memories).
Interact with recent message{message_interaction_tool}-React to or send a short reply to a recent message.
Peek profile picture{profile_picture_tool}vision model or vision_llmInspect a user’s or the persona’s avatar.
Read document{document_tool}-Extract text from a PDF or any UTF-8 text file: source code (.py/.ts/.rs/…), .json, .yaml, .md, .txt, and any non-binary attachment.
Reveal message metadata{message_metadata_tool}-Annotate recent turns with handles and timestamps for precise targeting.
Process YouTube video{youtube_tool}model with video supportAnalyze a specific YouTube link on demand.
Analyze image{image_analysis_tool}configured vision_llmDelegate image understanding to a separate vision model.
Generate image / anime image{image_generation_tool} / {anime_image_generation_tool}imagegen_enabled + capable providerGenerate or edit images (see Media Generation).
Danbooru tag lookup{tag_search_tool}danbooru_enabledTurn character names, nicknames, and tag guesses into exact Danbooru tags (see Danbooru Tag Lookup).
Danbooru art search{booru_post_search_tool}danbooru_enabledPost up to 4 existing Danbooru images for 1 or 2 tags (see Art Search and Post Reading).
Danbooru post read-danbooru_enabledRead the grouped tags of one Danbooru post from its ID or link.
Generate voice message{voice_message_tool}ElevenLabs key + persona voice + voice_message_enabledSend a spoken Discord voice reply.

Prompt text that supports the tool macros above also supports scoped conditionals:

{{if tool:create_long_term_memory}}
Use {memory_tool} when a detail is worth remembering.
{{else}}
Do not promise to save long-term memories.
{{/if}}

Use capability:<name> for an enabled TomoriBot setting, or tool:<function_name> when the text should appear only if that exact tool is available to the active provider and model. Use tool_family:url_fetch when either the bundled URL reader or a server MCP replacement is available. Prefix a condition with ! to invert it. Blocks can be nested and may contain one {{else}}; general and/or expressions are not supported.

The supported capability names are tool_use, self_teaching, personal_memories, emoji_usage, sticker_usage, web_search, manage_message, thread_creation, image_generation, video_generation, voice_message, user_blocking, short_term_memory, and time_awareness. tool_use is also off when the active model cannot call tools.

Tool conditions reflect provider/model support, server configuration, configured backends, MCP replacements, and the current Deliberate Tool Mode allowlist. They do not bypass or predict Discord permission checks performed when a tool executes. Unknown capability names evaluate as false and are logged; malformed blocks are omitted. Raw chat messages, model output, and tool results are never treated as conditional templates.