Skip to content

Prebuilt Tools

Python-only package

The prebuilt tools package (elsai-agents-tools) is a Python-only companion to the Elsai Agents SDK. It provides ready-made tools for experimenting with agents during development — file I/O, shell access, web search, AWS integrations, multi-agent orchestration, and more.

Installation

Requires Python 3.10+ and elsai-agents>=0.2.0.

bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents-tools==0.1.0

Some tools need additional dependencies. Each category below includes the install command for its optional extras when required. You can combine extras in one install, for example "elsai-agents-tools[mem0-memory,diagram]==0.1.0".

Register tools by passing them to Agent(tools=[...]). Import each tool from its module (for example from elsai_tools.shell import shell) or, for class-based tools, pass the instance method (for example interpreter.code_interpreter).

For per-tool parameters and import paths, see the Prebuilt Tools API (organized by category).

Available tools

RAG and memory

ToolDescriptionExtra
retrieveQuery Amazon Bedrock Knowledge Bases with semantic search and return ranked passages for agent contextbase
memoryFull CRUD over Knowledge Base documents — store, list, get, delete, and retrieve entries the agent can reference laterbase
agent_core_memoryPersistent short- and long-term memory through Bedrock AgentCore — record facts, retrieve by query, and manage session historybase (AWS)
mem0_memoryLong-term agent memory and user personalization backed by Mem0, with vector search over past interactionsmem0-memory
elasticsearch_memoryStore and recall agent memory in Elasticsearch with vector similarity search for fast semantic lookupelasticsearch-memory
mongodb_memoryStore and retrieve agent memory using MongoDB Atlas Vector Search for scalable, document-oriented recallmongodb-memory

Optional extras:

bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[mem0-memory]==0.1.0"
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[elasticsearch-memory]==0.1.0"
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[mongodb-memory]==0.1.0"

File operations

ToolDescription
editorView, search, and edit files line-by-line — supports insert, replace, pattern matching, and undo for safe in-place changes
file_readRead local files and parse common formats (JSON, CSV, PDF, code, and more) into text the agent can reason over
file_writeCreate new files or overwrite existing ones with agent-generated content; prompts for consent unless bypassed
python
from elsai import Agent
from elsai_tools.editor import editor
from elsai_tools.file_read import file_read
from elsai_tools.file_write import file_write

agent = Agent(tools=[editor, file_read, file_write])

# View a file with syntax highlighting
agent.tool.editor(command="view", path="./src/app.py")

# Create or overwrite a file
agent.tool.file_write(path="./output/report.txt", content="Summary\n")

# Read a file (supports many formats including PDF, CSV, and code)
agent.tool.file_read(path="./data/config.json")

Shell and system

ToolDescriptionExtra
environmentRead, set, and unset environment variables so the agent can inspect or configure its runtimebase
shellRun shell commands in a working directory with stdout/stderr capture — useful for builds, git, and system tasksbase
cronAdd, list, and remove cron jobs to schedule recurring scripts or maintenance tasks on the hostbase
use_computerDesktop automation — control mouse, keyboard, and screen OCR to interact with GUI applicationsuse-computer

Optional extra for use_computer:

bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[use-computer]==0.1.0"
python
from elsai import Agent
from elsai_tools.environment import environment
from elsai_tools.shell import shell
from elsai_tools.cron import cron

agent = Agent(tools=[environment, shell, cron])

# Run a shell command
agent.tool.shell(command="ls -la", work_dir="/app")

# List environment variables
agent.tool.environment(action="list")

# Schedule a recurring job
agent.tool.cron(
    action="add",
    schedule="0 8 * * *",
    command="python /app/daily_report.py >> /tmp/report.log 2>&1",
    description="Daily report at 8 AM",
)

Code interpretation

ToolDescriptionExtraNotes
python_replExecute Python in a persistent REPL session where variables and imports carry over between callsbaseNot supported on Windows (fcntl unavailable)
code_interpreterRun Python or other languages in an isolated Bedrock AgentCore sandbox with no local machine accessagent-core-code-interpreterBedrock AgentCore Code Sandbox

Optional extra for code_interpreter:

bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[agent-core-code-interpreter]==0.1.0"
python
from elsai import Agent
from elsai_tools.python_repl import python_repl
from elsai_tools.code_interpreter import AgentCoreCodeInterpreter

# Local persistent Python REPL
repl_agent = Agent(tools=[python_repl])
repl_agent.tool.python_repl(code="x = 10")
repl_agent.tool.python_repl(code="print(x * 2)")

# Sandboxed execution on Bedrock AgentCore (requires [agent-core-code-interpreter])
interpreter = AgentCoreCodeInterpreter(region="us-west-2")
sandbox_agent = Agent(tools=[interpreter.code_interpreter])

sandbox_agent.tool.code_interpreter(
    code_interpreter_input={
        "action": {
            "type": "executeCode",
            "code": "print('Hello, World!')",
            "language": "python",
        }
    }
)

Web and network

ToolDescriptionExtra
http_requestMake authenticated HTTP requests and fetch web pages — supports Bearer, JWT, Basic, Digest, and AWS SigV4 authbase
slackFull Slack integration with Socket Mode — listen for events, call any Slack API method, and handle threadsbase
slack_send_messagePost a message to a Slack channel or thread in one step, without composing raw API payloadsbase
browserAutomate a real browser — navigate URLs, click elements, fill forms, and extract page contentlocal-chromium-browser or agent-core-browser
rssSubscribe to RSS/Atom feeds and surface new entries so the agent can monitor news and changelogsrss
bright_dataScrape websites and run search queries through Bright Data's proxy and SERP APIsbase
tavily_searchAI-optimized web search with filtering, ranking, domain controls, and news or general topic modesbase
tavily_extractPull clean, LLM-ready text from one or more URLs with optional image and metadata extractionbase
tavily_crawlCrawl a website starting from a base URL, following links within depth and page limitsbase
tavily_mapDiscover and map the link structure of a site from a starting URL before deeper crawlingbase
exa_searchSemantic web search that finds pages by meaning and relevance, not just keyword matchingbase
exa_get_contentsRetrieve full page text and metadata for URLs — typically used after an Exa searchbase
mcp_clientConnect to MCP servers at runtime and invoke their tools dynamically from inside the agent loopbase

Optional extras:

bash
# Local Chromium browser
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[local-chromium-browser]==0.1.0"

# Bedrock AgentCore browser
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[agent-core-browser]==0.1.0"

# RSS feeds
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[rss]==0.1.0"

MCP client vs SDK MCPClient

mcp_client (this package) is an agent tool that lets the model connect to MCP servers dynamically. The SDK's MCPClient is used by you at agent setup time to register MCP tools statically. See MCP Tools for the SDK integration.

Multimodal

ToolDescriptionExtra
generate_image_stabilityGenerate images from text prompts using Stability AI models with configurable size and stylebase
image_readerLoad local image files and return descriptions or extracted text for vision-style agent reasoningbase
generate_imageGenerate images from prompts using Amazon Bedrock image models (e.g. Titan, Stable Diffusion)base
nova_reelsCreate short videos from text prompts with Amazon Nova Reels on Bedrockbase
speakConvert text to speech using macOS say locally or Amazon Polly in the cloudbase
diagramRender cloud architecture and UML diagrams from agent descriptions (AWS, Azure, GCP, and generic)diagram
chat_videoAsk questions about uploaded video content using TwelveLabs multimodal understandingtwelvelabs
search_videoSemantic search across indexed video libraries to find clips matching a natural-language querytwelvelabs

Optional extras:

bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[diagram]==0.1.0"
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[twelvelabs]==0.1.0"
python
from elsai import Agent
from elsai_tools.generate_image import generate_image
from elsai_tools.image_reader import image_reader
from elsai_tools.speak import speak

agent = Agent(tools=[generate_image, image_reader, speak])

# Generate an image with Amazon Bedrock
agent.tool.generate_image(prompt="A steampunk robot playing chess")

# Analyze a local image file
agent.tool.image_reader(image_path="./screenshots/diagram.png")

# Convert text to speech (macOS say or Amazon Polly)
agent.tool.speak(text="Task completed successfully.")

AWS services

ToolDescription
use_awsCall any AWS service operation dynamically through boto3 — the agent supplies the service, method, and parameters

Utilities

ToolDescription
calculatorEvaluate math expressions, solve equations, and perform calculus operations with symbolic support
current_timeReturn the current date and time with optional timezone — useful for scheduling and time-sensitive tasks
load_toolDynamically import and register tools from Python files at runtime without restarting the agent
sleepPause the agent for a specified duration; respects interrupts so long waits can be cancelled
stopForce-stop the agent event loop immediately, ending the current run

Agents and workflows

ToolDescriptionExtra
graphBuild and run multi-agent graphs with defined nodes, edges, and handoff topologybase
agent_graphCreate, update, and execute persistent agent graphs with shared state across nodesbase
journalMaintain structured task lists and execution logs that agents can read and append to over timebase
swarmCoordinate a team of specialist agents that hand off to each other until the task is completebase
handoff_to_userPause the agent loop and wait for human input, or fully hand control back to the userbase
use_agentSpawn a nested agent with its own tools and system prompt inside the current event loopbase
thinkRun parallel reasoning branches and merge results — useful for exploring multiple approachesbase
use_llmCall a nested LLM with a custom prompt, separate from the main agent conversationbase
workflowDefine and execute sequenced task pipelines with dependencies and priority orderingbase
batchInvoke multiple tools in a single model turn, reducing round-trips for compound operationsbase
a2a_discover_agentDiscover remote agents that expose the Agent-to-Agent (A2A) protocol on a given endpointa2a-client
a2a_list_discovered_agentsList agents previously discovered via A2A, with their capabilities and endpointsa2a-client
a2a_send_messageSend a task or message to a remote A2A agent and receive its responsea2a-client

Optional extra for A2A tools:

bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[a2a-client]==0.1.0"
python
from elsai import Agent
from elsai_tools.graph import graph
from elsai_tools.swarm import swarm
from elsai_tools.workflow import workflow
from elsai_tools.handoff_to_user import handoff_to_user

agent = Agent(tools=[graph, swarm, workflow, handoff_to_user])

# Create and run a multi-agent graph
agent.tool.graph(
    action="create",
    graph_id="analysis_pipeline",
    topology={
        "nodes": [
            {
                "id": "researcher",
                "role": "researcher",
                "system_prompt": "You research topics thoroughly.",
            },
            {
                "id": "writer",
                "role": "writer",
                "system_prompt": "You write clear summaries.",
            },
        ],
        "edges": [{"from": "researcher", "to": "writer"}],
    },
)
agent.tool.graph(action="execute", graph_id="analysis_pipeline", task="Summarize AI trends in 2026")

# Coordinate a custom agent team
agent.tool.swarm(
    task="Plan a product launch",
    agents=[
        {"name": "strategist", "system_prompt": "You define product strategy."},
        {"name": "marketer", "system_prompt": "You craft go-to-market plans."},
    ],
)

# Run parallel tasks in a workflow
agent.tool.workflow(
    action="create",
    workflow_id="research_workflow",
    tasks=[
        {"id": "gather", "prompt": "Collect key facts about the topic.", "priority": 1},
        {"id": "summarize", "prompt": "Write a one-page summary.", "depends_on": ["gather"], "priority": 2},
    ],
)

# Pause for human input before continuing
agent.tool.handoff_to_user(
    message="Review the draft above. Type 'approve' to continue.",
    breakout_of_loop=False,
)

By default, tools that perform sensitive operations — file writes, shell commands, code execution, AWS mutations, and similar — prompt for user confirmation before running.

To bypass confirmation prompts, set the BYPASS_TOOL_CONSENT environment variable:

bash
export BYPASS_TOOL_CONSENT=true

Or in Python:

python
import os

os.environ["BYPASS_TOOL_CONSENT"] = "true"

Use this in automated workflows, development, and CI/CD where interactive prompts are not possible. Use with caution in production — it removes an important safety check.

Tools that respect BYPASS_TOOL_CONSENT include editor, file_write, environment, shell, cron, http_request, memory, mem0_memory, python_repl, use_aws, and use_computer.

Copyright © 2026 Elsai Foundry.