Skip to content

Tools & Extensions

TomoriBot is agentic: beyond chatting, she can call tools to search the web, read documents, generate media, set reminders, act in other channels, and more. She decides when to use them based on the conversation. This page covers the built-in tools, how to extend her with MCP servers, and how to keep tool declarations lean with Deliberate Tool Mode.

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

Tool Prompt macro Requires What 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_enabled Save or replace a stable server fact or user preference.
Update short-term memory {short_term_memory_tool} — (not on NovelAI) Save temporary working memory for the current channel/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} — (not on NovelAI) Act in another channel/thread, with an optional report-back.
Create thread {create_thread_tool} thread_creation_enabled + thread perms Open a public thread and post its starter message.
Select sticker {sticker_tool} sticker_usage_enabled Add a matching server sticker to a reply.
Manage message {manage_message_tool} manage_message_enabled Pin, edit, or delete recent messages (pin needs Manage Messages).
Block / unblock user {block_user_tool} / {unblock_user_tool} user_blocking_enabled Persona-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_llm Inspect 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/timestamps for precise targeting.
Increase media context {media_context_tool} vision model Pull older windowed-out images/videos back into context.
Process YouTube video {youtube_tool} model with video support Analyze a specific YouTube link on demand.
Analyze image {image_analysis_tool} configured vision_llm Delegate image understanding to a separate vision model.
Generate image / anime image {image_generation_tool} / {anime_image_generation_tool} imagegen_enabled + capable provider Generate or edit images (see Media Generation).
Generate voice message {voice_message_tool} ElevenLabs key + persona voice + voice_message_enabled Send a spoken Discord voice reply.

The model sees a single unified web_search(query, category) tool. Behind it, a dispatcher routes each call through an engine chain and returns the first success:

Brave → SearXNG → DuckDuckGo → Felo

  • Brave runs first when a Brave API key is configured (set it with /optional-key brave set); it adds image, video, and news search. ⚠️ Set a $5 usage limit in the Brave dashboard to avoid surprise charges.
  • DuckDuckGo is the default when no key is set, cascading to Felo on rate limits.
  • SearXNG and Crawl4AI are optional self-hosted sidecars that unlock more categories and browser-rendered page fetches — see Self-Hosting.

For reading a specific page, she uses fetch_url. It’s unavailable on NovelAI.

MCP (Model Context Protocol) servers extend her with external tools you register yourself.

Any publicly hosted MCP server with an HTTPS endpoint works. Using Smithery.ai as an example:

  1. Create an account and generate an API key from your profile.
  2. Open an MCP in the catalog and copy its connection URL (e.g. https://youtube.run.tools).
  3. Run /mcp add, paste the connection URL into URL, and paste your Smithery key into Auth Token.

If a server needs no auth, leave Auth Token blank. Your auth token is encrypted at rest and never shown again. Remove a server anytime with /mcp remove, which disconnects it immediately and frees a slot.

Local MCP servers are only supported on self-hosted instances — the public hosted bot requires HTTPS and blocks local/private addresses. If you run your own instance, see Setup: Local MCP Server.

Every declared tool adds to the prompt. Deliberate Tool Mode keeps tool declarations out of ordinary chat turns unless the message looks like it actually needs a tool — this reduces prompt size and helps smaller/local models answer faster.

  • She first checks the message for tool intent. Built-in triggers cover common requests (reminders, web search, memory updates, cross-channel messages, image/video/voice generation, media analysis, thread creation, message actions). Follow-up wording works too, like “do that again but angrier” after a voice-message request.
  • Server managers can add literal custom trigger phrases with /server trigger add — for example mapping pic, img, or pfp to image generation.
  • /server dtm — server managers toggle it.
  • /personal dtm — users override it for themselves.
  • With a thought-log channel configured (/server thought-logs), successful deliberate-mode tool calls are logged there along with the trigger that exposed the tool.

Deliberate Tool Mode only decides which tools are shown to the model — the model still has to choose to call one. Run /help deliberate-tool-mode for the Discord summary.