Bot Default Tools

The 20+ tools every bot gets automatically

Diagram

Bot Default Tools

📋 User Request

⚙️ Bot Default Tools

✅ Result

Bot default tools provide instant superpowers to every bot deployment, automatically injecting 20+ safe and useful tools when agents have no explicit tool configuration.

python
from praisonaiagents import Agent

agent = Agent(
    name="Assistant",
    instructions="Help users with files, web search, and scheduling.",
)

The user messages the bot with no custom tools= list; PraisonAI injects file, web, memory, and schedule tools automatically.

Diagram

Bot Default Tools

📝 User Message

⚙️ Auto-Inject Tools

🤖 Bot Agent

✅ Reply

Injected Tools

Diagram

Auto-Injected Bot Tools

🤖 Bot

📁 Files
read/write/edit/list/search

📋 Planning
todo_add/list/update

🧠 Skills
skill_manage/list/view

🌐 Web
search_web/web_crawl

💾 Memory
store/search memory & learning

⏰ Schedule
schedule_add/list/remove

Optional: browser (--browser)

Add a local Chromium via --browser — see Bot Browser Automation.

Quick Start

  1. Zero-Config Bot
    python
    from praisonaiagents import Agent
    from praisonai.bots import TelegramBot
    
    agent = Agent(
        name="Assistant",
        instructions="You help users. Use any tool you need."
    )
    
    # No tools= passed — bot auto-injects safe defaults
    TelegramBot(token="YOUR_TOKEN", agent=agent).start()
  2. Custom Tool Selection
    python
    from praisonaiagents import BotConfig
    
    config = BotConfig(
        token="YOUR_TOKEN",
        default_tools=["search_web", "read_file", "todo_add"],  # override list
        auto_approve_tools=True,  # default True for bots
    )
    
    bot = TelegramBot(config=config, agent=agent)

How It Works

Diagram
📁 Workspace📦 Defaults🤖 Agent🤖 Bot📁 Workspace📦 Defaults🤖 Agent🤖 BotCheck agent.toolsNone (empty)Apply smart defaultsCheck workspace config✅ Workspace availableFull tool list (20+ tools)Inject toolsReady with superpowers

Smart defaults activate when:

ConditionBehaviorResult
Agent has no toolsAuto-inject defaultsFull 20+ tool suite
Agent has tools=[]Respect explicit emptyNo tools injected
Agent has tools=[…]Keep existing toolsNo injection
No workspace configuredFilter destructive toolsSafe subset only

Configuration Options

Complete Default Tools List

ToolCategorySafe without workspace?Notes
search_webWeb✅Search the internet
web_crawlWeb✅Crawl and extract web content
store_memoryMemory✅Store information in memory
search_memoryMemory✅Search stored memories
store_learningLearning✅Store learned knowledge
search_learningLearning✅Search learned knowledge
schedule_addScheduling✅Add scheduled tasks
schedule_listScheduling✅List scheduled tasks
schedule_removeScheduling✅Remove scheduled tasks
clarifyClarification✅Ask clarifying questions
read_fileFiles✅ (read-only)NEW — Read files from workspace
write_fileFiles⚠️ requires workspaceNEW — Write files to workspace
edit_fileFiles⚠️ requires workspaceNEW — Edit files with find/replace
list_filesFiles✅NEW — List directory contents
search_filesFiles✅NEW — Search for patterns in files
todo_addPlanning✅NEW — Add tasks to todo list
todo_listPlanning✅NEW — List todo items
todo_updatePlanning✅NEW — Update todo status/content
skills_listSkills✅NEW — List available skills
skill_viewSkills✅NEW — View skill details
skill_manageSkills⚠️ requires workspaceNEW — Create/edit/delete skills

Opt-In Tools (not auto-injected)

These tools are functional but require explicit opt-in:

ToolReasonHow to Enable
delegate_taskSpawns a sub-agent for a specific task — medium-risk, requires approval — opt in per botAdd to default_tools manually, e.g. default_tools=[..., "delegate_task"]. See Delegate Task Tool.
session_searchCross-session conversation recall — opt in per botAdd to default_tools manually, e.g. default_tools=[..., "session_search"]. See Cross-Session Recall.

Smart Defaults Configuration

python
from praisonaiagents import BotConfig

# Disable auto-injection completely
config = BotConfig(
    token="YOUR_TOKEN",
    default_tools=[],  # explicit empty list
)

# Custom safe subset
config = BotConfig(
    token="YOUR_TOKEN", 
    default_tools=[
        "search_web", "store_memory", "todo_add",
        "read_file", "skills_list"
    ]
)

# Full suite (same as default when workspace configured)
config = BotConfig(
    token="YOUR_TOKEN",
    workspace_dir="./bot-workspace",  # enables destructive tools
    default_tools=None,  # use full defaults
)

Tool Approval Settings

python
# Auto-approve all tool calls (default for bots)
config = BotConfig(
    auto_approve_tools=True,  # ← Default: True for chat bots
)

# Require manual approval (useful for development)
config = BotConfig(
    auto_approve_tools=False,  # Agents show confirmation prompts
)

Common Patterns

Workspace-Aware Filtering

python
# Without workspace: safe tools only
config = BotConfig(
    token="YOUR_TOKEN",
    # No workspace_dir set
    # Result: write_file, edit_file, skill_manage filtered out
)

# With workspace: full tool suite
config = BotConfig(
    token="YOUR_TOKEN",
    workspace_dir="./safe-sandbox",
    # Result: all 20+ tools available
)

Development vs Production

python
# Development: explicit tool control
agent = Agent(
    name="Dev Bot",
    tools=["search_web", "read_file"]  # explicit list prevents defaults
)

# Production: trust smart defaults  
agent = Agent(
    name="Prod Bot", 
    instructions="Help users with anything"
    # No tools= → auto-injection activates
)

Tool Categories by Use Case

python
# Minimal web assistant
config = BotConfig(default_tools=[
    "search_web", "web_crawl", "store_memory", "search_memory"
])

# File-focused assistant  
config = BotConfig(default_tools=[
    "read_file", "write_file", "edit_file", "list_files", "search_files"
])

# Learning assistant
config = BotConfig(default_tools=[
    "store_learning", "search_learning", "skills_list", "skill_view", "skill_manage"
])

# Gateway / long-lived assistant
config = BotConfig(default_tools=[
    "store_memory", "search_memory",
    "session_search",  # recall past conversations
])

Best Practices

Trust Smart Defaults

In most cases, let the bot auto-inject tools rather than specifying manually. Smart defaults adapt based on workspace configuration and provide the safest possible tool suite.

Workspace Security

Destructive file tools (write_file, edit_file, skill_manage) are automatically filtered out unless a workspace is configured. This ensures bots are safe by construction.

Development Testing

Use auto_approve_tools=False during development to see exactly which tools your bot is calling. Switch to auto_approve_tools=True for production deployments.

Explicit Override

To disable auto-injection, pass an explicit empty list: Agent(tools=[]). Passing no tools parameter triggers smart defaults.


Troubleshooting

My bot only has a few tools, not the 20+ listed here

If your bot is missing most default tools (only sees a small fallback set), upgrade to the version that includes PR #2004. A regression caused ToolResolver to be imported from the wrong module, which silently dropped the full default toolset and left only a small hardcoded fallback.

Verify the fix is active by checking that imports resolve from praisonai.tool_resolver, not praisonaiagents.tools.


Related