🧩 Skills Reference
VexAI ships with 23 built-in skills providing 170+ tools. Each skill is a self-contained module that encapsulates related functionality and exposes one or more tools the LLM can invoke during conversations.
name, description, an array of tools[], and an execute(toolName, args, context) method. Built-in skills are registered on startup; user-defined skills are hot-loaded from the skills/ directory.
Skills Summary
| Skill | Tools | Description |
|---|---|---|
discord | 29 | Core messaging, embeds, reactions, polls, threads, forums, crossposting |
moderation | 11 | Kick, ban, timeout, warn, purge, slowmode |
server-management | 21 | Channels, roles, emojis, invites, events, webhooks, permissions |
user-management | 6 | User info, nicknames, role assignment, DMs, member listing |
components | 6 | Buttons, select menus, reaction roles |
memory | 1 | Search structured bot logs |
semantic-memory | 5 | FTS5-powered remember, recall, forget, list, update |
discord-search | 9 | Message search, history, context, stats, semantic search, edit history |
integrations | 17 | Custom APIs, RSS feeds, webhooks, GitHub tools |
email | 3 | OpenMail inbox listing, reading, reply sending |
voice | 13 | TTS, STT, voice channels, meeting transcription, voice assistant |
agent-system | 7 | Create, invoke, handover, list, info, delete, toggle agents |
sub-agents | 7 | Spawn background agents, check/cancel status, task board |
workflows | 9 | Create, list, get, update, delete, toggle, trigger workflows, run history |
event-system | 13 | Event listeners, WebSocket, REST polling, event emission, event log |
graph-renderer | 1 | Chart rendering (20 chart types including bar, line, pie, sankey, heatmap) |
cron | 4 | Scheduled recurring tasks |
utility | 5 | Embeds, polls, reminders, web search, URL fetching |
system | 5 | Exec commands, download files, restart, credits, cache stats |
table-renderer | 1 | Canvas-based table rendering with emoji support |
skill-manager | 5 | Create, read, edit, delete, list user skills |
skill-agent | 1 | AI-powered skill generation from descriptions |
image-generation | 1 | AI image generation with reference image support |
Discord (29 tools)
Core Discord messaging and channel interactions: send messages, manage embeds, reactions, threads, forum posts, polls, and crosspost to announcement channels.
| Tool | Description |
|---|---|
send_message | Send a message to a different channel |
fetch_messages | Fetch recent messages from a channel |
get_message | Get full details of a specific message including attachments, embeds, buttons, reactions, and reply context |
pin_message | Pin a message in a channel |
unpin_message | Unpin a message in a channel |
list_pinned_messages | List all pinned messages in a channel |
react_to_message | Add a reaction to a message |
delete_reaction | Remove a reaction from a message |
send_status | Send a brief progress update while working on a long task |
download_attachment | Download attachments from a Discord message to a local directory |
list_channels | List all channels in the server |
create_channel | Create a new text or voice channel |
delete_channel | Delete a channel by ID |
edit_channel | Edit a channel's name, topic, or NSFW setting |
list_roles | List all roles in the server |
create_role | Create a new role |
delete_role | Delete a role from the server |
server_info | Get information about the current server |
search_user_messages | Search for messages by a specific user across text channels |
list_bans | List all banned users in the server |
get_audit_log | Fetch recent audit log entries |
create_thread | Create a thread from a message or as standalone in a text channel |
archive_thread | Archive a thread, optionally locking it |
unarchive_thread | Unarchive a thread |
list_threads | List threads in a channel or entire guild |
add_thread_member | Add a user to a thread |
remove_thread_member | Remove a user from a thread |
create_forum_post | Create a new post in a forum channel |
list_forum_tags | List available tags on a forum channel |
crosspost_message | Publish a message in an announcement channel to all following servers |
send_message tool targets a different channel than the current one. The bot's reply to the user is handled automatically by the message pipeline, so no tool call is needed.
Moderation (11 tools)
Server moderation toolkit: kick, ban, timeout, warn members, purge messages, and control slowmode. Destructive actions (kick, ban) require approval via the security observer.
| Tool | Description |
|---|---|
kick_member | Kick a member from the server |
ban_member | Ban a member from the server |
unban_member | Unban a user from the server |
timeout_member | Timeout (mute) a member for a specified duration |
remove_timeout | Remove a timeout from a member |
warn_member | Issue a warning to a member (stored in database) |
list_warnings | List warnings for a user with optional date and moderator filters |
count_warnings | Get a quick count of warnings matching filters |
delete_warning | Delete a specific warning by ID |
purge_messages | Bulk delete messages from a channel (1–100) |
set_slowmode | Set slowmode delay on a channel (0 to disable, max 21 600 seconds) |
kick_member, ban_member, and purge_messages are approval-gated. The security observer must approve them before execution.
Server Management (21 tools)
Comprehensive server administration: manage emojis, invites, auto-roles, welcome messages, scheduled events, webhooks, and channel permissions.
| Tool | Description |
|---|---|
list_emojis | List all custom emojis in the server |
add_emoji | Add a custom emoji to the server from a URL |
delete_emoji | Delete a custom emoji from the server |
list_invites | List all active invites for the server |
create_invite | Create a new invite link for a channel |
revoke_invite | Revoke/delete an active invite by code |
set_auto_roles | Set roles that are automatically assigned to new members |
list_auto_roles | List currently configured auto-assign roles |
set_welcome_message | Configure a welcome message for new members (with template variables) |
audit_permissions | Audit effective permissions for a user or role in a channel |
create_event | Create a guild scheduled event |
list_events | List guild scheduled events |
delete_event | Delete or cancel a scheduled event |
get_event_attendees | List users interested in an event |
create_webhook | Create a webhook for a channel |
list_webhooks | List webhooks for a channel or the entire guild |
delete_webhook | Delete a webhook |
send_webhook_message | Send a message through a webhook with custom username and avatar |
set_channel_permissions | Set permission overrides on a channel for a user or role |
lock_channel | Lock a channel by denying SendMessages for @everyone |
unlock_channel | Unlock a channel by removing the SendMessages deny for @everyone |
User Management (6 tools)
Manage server members: look up user info, assign and remove roles, change nicknames, send DMs, and list members with filters.
| Tool | Description |
|---|---|
get_user_info | Get detailed information about a server member |
assign_role | Assign a role to a member |
remove_role | Remove a role from a member |
set_nickname | Set or clear a member's nickname |
dm_user | Send a direct message to a user (with file attachment support) |
list_members | List server members with optional filters |
Components (6 tools)
Interactive Discord UI components: send messages with buttons and select menus, set up reaction roles for self-service role assignment.
| Tool | Description |
|---|---|
send_buttons | Send a message with interactive buttons (max 5 per row, max 5 rows) |
send_select_menu | Send a message with a dropdown select menu |
edit_components | Edit or remove components from an existing message |
create_reaction_role | Set up reaction roles on a message (emoji-to-role mappings) |
list_reaction_roles | List all reaction role configurations in the server |
remove_reaction_role | Remove reaction role configuration from a message |
Memory (1 tool)
Search and browse structured bot logs stored in SQLite for debugging and auditing.
| Tool | Description |
|---|---|
search_logs | Search through bot logs and return recent entries matching the query |
Semantic Memory (5 tools)
Persistent long-term memory powered by FTS5 full-text search. Store facts, preferences, events, relationships, and decisions that persist across conversations.
| Tool | Description |
|---|---|
remember | Store a new memory (facts, preferences, events, relationships, decisions) |
recall | Search memories by text query using full-text search |
forget | Delete a specific memory by its ID |
list_memories | List stored memories, optionally filtered by user or category |
update_memory | Update an existing memory's content, category, or importance |
Discord Search (9 tools)
Advanced message searching: keyword search, user history, conversation context, channel activity, deleted message auditing, semantic search via AI embeddings, and message edit tracking.
| Tool | Description |
|---|---|
search_messages | Search Discord messages across channels by keyword, user, channel, and/or date range |
search_user_history | Search a specific user's message history with keyword, channel, and date filters |
get_conversation_context | Fetch messages around a specific message to understand conversation context |
message_stats | Get message statistics for a channel or user over a time period |
count_messages | Get a quick count of messages matching filters |
channel_activity | Get a ranked list of channels by message volume within a date range |
deleted_messages | Query messages that have been deleted for moderation review |
semantic_search | Search messages by meaning using AI embeddings |
get_message_edits | Get the full edit/revision history for a specific message |
Integrations (17 tools)
Connect to external services: register and call custom APIs, subscribe to RSS/Atom feeds, create inbound webhook endpoints, and interact with GitHub repositories.
| Tool | Description |
|---|---|
register_api | Register a named external API endpoint with saved configuration |
call_api | Call a registered external API and return the HTTP response |
list_apis | List all registered API configurations for this server |
remove_api | Remove a registered API configuration |
add_rss_feed | Subscribe a Discord channel to an RSS/Atom feed |
list_rss_feeds | List all RSS feed subscriptions for this server |
remove_rss_feed | Remove an RSS feed subscription |
toggle_rss_feed | Enable or disable an RSS feed subscription |
check_rss_feed | Force-check an RSS feed right now and post any new items |
create_webhook_endpoint | Create an inbound webhook endpoint for external services |
list_webhook_endpoints | List all configured webhook endpoints for this server |
delete_webhook_endpoint | Delete a webhook endpoint |
toggle_webhook_endpoint | Enable or disable a webhook endpoint |
github_repo_info | Get GitHub repository information (stars, forks, issues, description) |
github_issues | List issues from a GitHub repository |
github_pulls | List pull requests from a GitHub repository |
github_commits | List recent commits from a GitHub repository |
Email (3 tools)
OpenMail integration with owner-gated approval. Only pre-approved email threads are accessible to the LLM for privacy and security.
| Tool | Description |
|---|---|
list_approved_email_threads | List approved email threads that are safe for LLM access |
read_approved_email_thread | Read a specific approved email thread by thread ID |
send_email_reply | Send an email reply in an approved thread |
Voice (13 tools)
Full voice and audio suite: text-to-speech, speech-to-text transcription, voice channel management, meeting transcription mode, and an interactive voice assistant with wake-word detection.
| Tool | Description |
|---|---|
transcribe_audio | Transcribe audio from a URL (voice message, audio file, etc.) to text |
text_to_speech | Convert text to an audio file and send it in the current channel |
join_voice | Join a voice channel to speak or listen |
leave_voice | Leave the current voice channel |
speak | Say something in the voice channel via TTS |
start_listening | Start transcribing audio from the voice channel |
stop_listening | Stop transcribing audio from the voice channel |
get_transcript | Get recent transcript entries from the voice channel |
start_meeting | Start meeting mode: join voice channel and transcribe everything |
end_meeting | End the current meeting and return the full transcript |
voice_status | Show current voice state: connected channel, listening status, transcript count |
start_voice_assistant | Start voice assistant mode (listens for wake word, responds via voice) |
stop_voice_assistant | Stop voice assistant mode and leave the voice channel |
Agent System (7 tools)
Create and manage specialized agents: persistent personas with custom system prompts, tool access, and trigger words. Agents can be invoked, handed-over to, and toggled on/off.
| Tool | Description |
|---|---|
create_agent | Start an interactive agent creation wizard |
invoke_agent | Delegate a task to a specialized agent |
handover_to_agent | Hand over the current conversation to a specialized agent |
list_agents | List all registered agents with their status, mode, and trigger words |
get_agent_info | Get detailed information about a specific agent |
delete_agent | Delete a specialized agent permanently |
toggle_agent | Enable or disable a specialized agent without deleting it |
Sub-Agents (7 tools)
Spawn temporary background sub-agents for complex multi-step tasks. Includes a task board for tracking work items and assigning them to sub-agents.
| Tool | Description |
|---|---|
spawn_sub_agent | Spawn a temporary sub-agent to work on a specific goal in the background |
check_sub_agent | Check the status and result of a running or completed sub-agent |
cancel_sub_agent | Cancel a running sub-agent |
list_sub_agents | List all running and recently completed sub-agents |
create_task | Create a task on the task board |
update_task | Update a task on the task board (status, result) |
list_tasks | List tasks on the task board, with their sub-agent assignments |
Workflows (9 tools)
DAG-based workflow automation: create directed graphs of triggers, conditions, actions, transforms, and control-flow nodes. Workflows execute on events and can be manually triggered.
| Tool | Description |
|---|---|
create_workflow | Create a new workflow, a directed graph of nodes connected by edges |
list_workflows | List all workflows for the current server |
get_workflow | Get full details of a workflow by ID, including all nodes and edges |
update_workflow | Update an existing workflow's nodes, edges, name, or description |
delete_workflow | Delete a workflow by ID |
toggle_workflow | Enable or disable a workflow |
trigger_workflow | Manually trigger a workflow with optional data |
list_workflow_runs | List recent execution runs for a workflow |
get_workflow_run | Get detailed execution log for a specific workflow run |
Event System (13 tools)
Event-driven automations: listen for Discord events, external WebSocket messages, REST API changes, and cron triggers. React with messages, AI responses, tool calls, or webhook forwards.
| Tool | Description |
|---|---|
create_event_listener | Create a listener that triggers an action when matching events occur |
list_event_listeners | List all event listeners configured for this server |
delete_event_listener | Delete an event listener by ID |
toggle_event_listener | Enable or disable an event listener |
get_event_log | View recent events that have been captured by the event system |
emit_event | Manually emit a custom event onto the event bus |
create_ws_connection | Connect to an external WebSocket server to receive real-time events |
list_ws_connections | List all WebSocket connections for this server |
delete_ws_connection | Disconnect and remove a WebSocket connection |
create_rest_poll | Poll a REST API at intervals and emit an event when the response changes |
list_rest_polls | List all REST API polls for this server |
delete_rest_poll | Stop and remove a REST API poll |
list_event_types | List all available event types that can be listened for |
Graph Renderer (1 tool)
Generate beautiful dark-mode chart images from structured data. Supports 20 chart types: line, bar, horizontal bar, pie, donut, area, scatter, radar, gauge, progress, funnel, heatmap, treemap, waterfall, candlestick, timeline, histogram, sparkline, sankey, and polar area.
| Tool | Description |
|---|---|
generate_graph | Generate a chart/graph as a PNG image with 20+ chart type support |
Cron (4 tools)
Schedule recurring tasks with cron expressions: create, list, delete, and toggle cron jobs that run actions on a defined schedule.
| Tool | Description |
|---|---|
create_cron_job | Create a new scheduled cron job with action and schedule |
list_cron_jobs | List all scheduled cron jobs |
delete_cron_job | Delete a cron job by ID |
toggle_cron_job | Enable or disable a cron job |
Utility (5 tools)
General-purpose utilities: send rich embeds, create native Discord polls, set timed reminders, fetch URL content, and search the web.
| Tool | Description |
|---|---|
send_embed | Send a rich embed message to a channel |
create_poll | Create a poll in a channel using Discord native polls |
set_reminder | Set a reminder that fires after a delay or at a specific time |
fetch_url | Fetch content from a URL and return the text |
web_search | Search the web using a search API (Brave Search or SearXNG) |
System (5 tools)
System-level tools: execute allowlisted commands, download files, restart the bot, check API credit balance, and view cache statistics.
| Tool | Description |
|---|---|
exec_command | Execute a system command (allowlisted: pip, python, node, npm, apt, curl, wget, cat, ls, mkdir, chmod) |
download_file | Download a file from a URL to a temporary directory |
restart_bot | Restart the bot process |
check_credits | Check the remaining OpenRouter API credits (balance) |
cache_stats | Show cache statistics: tool cache, response dedup cache, and security verdict cache |
exec_command only allows a predefined set of commands. Arbitrary shell execution is blocked. restart_bot requires admin privileges.
Table Renderer (1 tool)
Render markdown tables as dark-mode PNG images for clean display in Discord. Supports emoji, long text wrapping, and automatic column sizing.
| Tool | Description |
|---|---|
render_table | Render a markdown table as a dark-mode PNG image |
Skill Manager (5 tools)
Manage user-defined skills at runtime: create, read, edit, and delete custom skills stored in the skills/ directory. Skills are hot-loaded without restarting the bot.
| Tool | Description |
|---|---|
list_skills | List all user-defined skills in the skills/ directory |
read_skill | Read the source code of a user-defined skill |
create_skill | Create a new user-defined skill with JavaScript code |
edit_skill | Replace the source code of an existing user-defined skill |
delete_skill | Delete a user-defined skill directory |
Skill Agent (1 tool)
AI-powered skill generator: describe what you want and the LLM generates a complete skill with tool definitions and execute logic.
| Tool | Description |
|---|---|
generate_skill | Generate a new bot skill from a name and description using AI |
Image Generation (1 tool)
Generate images from text prompts using AI models via OpenRouter. Supports optional reference images for style or composition guidance.
| Tool | Description |
|---|---|
generate_image | Generate an image from a text prompt, optionally with reference images |
Custom Skills
VexAI supports user-defined skills that extend the bot's capabilities without modifying the core codebase. Custom skills are hot-loaded from the skills/ directory at startup and can be managed at runtime.
How Custom Skills Work
- Skills are loaded from the
skills/directory in the project root - Each skill lives in its own subdirectory with a JavaScript entry file
- Skills follow the registry pattern:
name,description,tools[], andexecute(toolName, args, context) - The
SkillContextprovideschannelId,userId,guildId,client, andexecuteTool()for internal tool calls - Internal tool calls via
executeTool()have a max recursion depth of 5 and bypass the security observer
Managing Custom Skills
Use the skill-manager tools to create, edit, delete, and list custom skills at runtime. Use the skill-agent to generate complete skill code from a natural-language description.
Skill Structure
{
"name": "my-custom-skill",
"description": "What this skill does",
"tools": [
{
"name": "my_tool",
"description": "What this tool does",
"parameters": {
"type": "object",
"properties": {
"input": { "type": "string", "description": "Input parameter" }
},
"required": ["input"]
}
}
]
}
list_skills to verify your skill is loaded.