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

Quick Start

1

Zero-Config Bot

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

from praisonaiagents.bots 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

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_webWebSearch the internet
web_crawlWebCrawl and extract web content
store_memoryMemoryStore information in memory
search_memoryMemorySearch stored memories
store_learningLearningStore learned knowledge
search_learningLearningSearch learned knowledge
schedule_addSchedulingAdd scheduled tasks
schedule_listSchedulingList scheduled tasks
schedule_removeSchedulingRemove scheduled tasks
clarifyClarificationAsk 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_filesFilesNEW — List directory contents
search_filesFilesNEW — Search for patterns in files
todo_addPlanningNEW — Add tasks to todo list
todo_listPlanningNEW — List todo items
todo_updatePlanningNEW — Update todo status/content
skills_listSkillsNEW — List available skills
skill_viewSkillsNEW — View skill details
skill_manageSkills⚠️ requires workspaceNEW — Create/edit/delete skills

Intentionally Excluded Tools

These tools are NOT auto-injected and require explicit opt-in:
ToolReasonHow to Enable
delegate_taskStub implementationAdd to default_tools manually
session_searchPlaceholder onlyAdd to default_tools manually

Smart Defaults Configuration

from praisonaiagents.bots 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

# 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

# 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

# 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

# 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"
])

Best Practices

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.
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.
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.
To disable auto-injection, pass an explicit empty list: Agent(tools=[]). Passing no tools parameter triggers smart defaults.

Workspace

How workspace containment enables safe file tools

BotOS

Multi-platform bot orchestration concepts