A set of tools that gives agents powerful capabilities.

412
69
<div align="center"> <div> <a href="https://strandsagents.com"> <img src="https://strandsagents.com/latest/assets/logo-auto.svg" alt="Strands Agents" width="55px" height="105px"> </a> </div> <h1> Strands Agents Tools </h1> <h2> A model-driven approach to building AI agents in just a few lines of code. </h2> <div align="center"> <a href="https://github.com/strands-agents/tools/graphs/commit-activity"><img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/m/strands-agents/tools"/></a> <a href="https://github.com/strands-agents/tools/issues"><img alt="GitHub open issues" src="https://img.shields.io/github/issues/strands-agents/tools"/></a> <a href="https://github.com/strands-agents/tools/pulls"><img alt="GitHub open pull requests" src="https://img.shields.io/github/issues-pr/strands-agents/tools"/></a> <a href="https://github.com/strands-agents/tools/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/strands-agents/tools"/></a> <a href="https://pypi.org/project/strands-agents-tools/"><img alt="PyPI version" src="https://img.shields.io/pypi/v/strands-agents-tools"/></a> <a href="https://python.org"><img alt="Python versions" src="https://img.shields.io/pypi/pyversions/strands-agents-tools"/></a> </div> <p> <a href="https://strandsagents.com/">Documentation</a> ◆ <a href="https://github.com/strands-agents/samples">Samples</a> ◆ <a href="https://github.com/strands-agents/sdk-python">Python SDK</a> ◆ <a href="https://github.com/strands-agents/tools">Tools</a> ◆ <a href="https://github.com/strands-agents/agent-builder">Agent Builder</a> ◆ <a href="https://github.com/strands-agents/mcp-server">MCP Server</a> </p> </div>

Strands Agents Tools provides a powerful set of tools for your agents to use. It bridges the gap between large language models and practical applications by offering ready-to-use tools for file operations, system execution, API interactions, mathematical operations, and more.

✨ Features

  • 📁 File Operations - Read, write, and edit files with syntax highlighting and intelligent modifications
  • 🖥️ Shell Integration - Execute and interact with shell commands securely
  • 🧠 Memory - Store user and agent memories across agent runs to provide personalized experiences with both Mem0 and Amazon Bedrock Knowledge Bases
  • 🌐 HTTP Client - Make API requests with comprehensive authentication support
  • 💬 Slack Client - Real-time Slack events, message processing, and Slack API access
  • 🐍 Python Execution - Run Python code snippets with state persistence, user confirmation for code execution, and safety features
  • 🧮 Mathematical Tools - Perform advanced calculations with symbolic math capabilities
  • ☁️ AWS Integration - Seamless access to AWS services
  • 🖼️ Image Processing - Generate and process images for AI applications
  • 🎥 Video Processing - Use models and agents to generate dynamic videos
  • 🎙️ Audio Output - Enable models to generate audio and speak
  • 🔄 Environment Management - Handle environment variables safely
  • 📝 Journaling - Create and manage structured logs and journals
  • ⏱️ Task Scheduling - Schedule and manage cron jobs
  • 🧠 Advanced Reasoning - Tools for complex thinking and reasoning capabilities
  • 🐝 Swarm Intelligence - Coordinate multiple AI agents for parallel problem solving with shared memory
  • 🔄 Multiple tools in Parallel - Call multiple other tools at the same time in parallel with Batch Tool
  • 🔍 Browser Tool - Tool giving an agent access to perform automated actions on a browser (chromium)

📦 Installation

Quick Install

pip install strands-agents-tools

To install the dependencies for optional tools:

pip install strands-agents-tools[mem0_memory]

Development Install

# Clone the repository
git clone https://github.com/strands-agents/tools.git
cd tools

# Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate # On Windows: venv\Scripts\activate

# Install in development mode
pip install -e ".[dev]"

# Install pre-commit hooks
pre-commit install

Tools Overview

Below is a comprehensive table of all available tools, how to use them with an agent, and typical use cases:

ToolAgent UsageUse Case
file_readagent.tool.file_read(path="path/to/file.txt")Reading configuration files, parsing code files, loading datasets
file_writeagent.tool.file_write(path="path/to/file.txt", content="file content")Writing results to files, creating new files, saving output data
editoragent.tool.editor(command="view", path="path/to/file.py")Advanced file operations like syntax highlighting, pattern replacement, and multi-file edits
shell*agent.tool.shell(command="ls -la")Executing shell commands, interacting with the operating system, running scripts
http_requestagent.tool.http_request(method="GET", url="https://api.example.com/data")Making API calls, fetching web data, sending data to external services
python_repl*agent.tool.python_repl(code="import pandas as pd\ndf = pd.read_csv('data.csv')\nprint(df.head())")Running Python code snippets, data analysis, executing complex logic with user confirmation for security
calculatoragent.tool.calculator(expression="2 * sin(pi/4) + log(e**2)")Performing mathematical operations, symbolic math, equation solving
use_awsagent.tool.use_aws(service_name="s3", operation_name="list_buckets", parameters={}, region="us-west-2")Interacting with AWS services, cloud resource management
retrieveagent.tool.retrieve(text="What is STRANDS?")Retrieving information from Amazon Bedrock Knowledge Bases
nova_reelsagent.tool.nova_reels(action="create", text="A cinematic shot of mountains", s3_bucket="my-bucket")Create high-quality videos using Amazon Bedrock Nova Reel with configurable parameters via environment variables
mem0_memoryagent.tool.mem0_memory(action="store", content="Remember I like to play tennis", user_id="alex")Store user and agent memories across agent runs to provide personalized experience
memoryagent.tool.memory(action="retrieve", query="product features")Store, retrieve, list, and manage documents in Amazon Bedrock Knowledge Bases with configurable parameters via environment variables
environmentagent.tool.environment(action="list", prefix="AWS_")Managing environment variables, configuration management
generate_image_stabilityagent.tool.generate_image_stability(prompt="A tranquil pool")Creating images using Stability AI models
generate_imageagent.tool.generate_image(prompt="A sunset over mountains")Creating AI-generated images for various applications
image_readeragent.tool.image_reader(image_path="path/to/image.jpg")Processing and reading image files for AI analysis
journalagent.tool.journal(action="write", content="Today's progress notes")Creating structured logs, maintaining documentation
thinkagent.tool.think(thought="Complex problem to analyze", cycle_count=3)Advanced reasoning, multi-step thinking processes
load_toolagent.tool.load_tool(path="path/to/custom_tool.py", name="custom_tool")Dynamically loading custom tools and extensions
swarmagent.tool.swarm(task="Analyze this problem", swarm_size=3, coordination_pattern="collaborative")Coordinating multiple AI agents to solve complex problems through collective intelligence
current_timeagent.tool.current_time(timezone="US/Pacific")Get the current time in ISO 8601 format for a specified timezone
sleepagent.tool.sleep(seconds=5)Pause execution for the specified number of seconds, interruptible with SIGINT (Ctrl+C)
agent_graphagent.tool.agent_graph(agents=["agent1", "agent2"], connections=[{"from": "agent1", "to": "agent2"}])Create and visualize agent relationship graphs for complex multi-agent systems
cron*agent.tool.cron(action="schedule", name="task", schedule="0 * * * *", command="backup.sh")Schedule and manage recurring tasks with cron job syntax <br> **Does not work on Windows
slackagent.tool.slack(action="post_message", channel="general", text="Hello team!")Interact with Slack workspace for messaging and monitoring
speakagent.tool.speak(text="Operation completed successfully", style="green", mode="polly")Output status messages with rich formatting and optional text-to-speech
stopagent.tool.stop(message="Process terminated by user request")Gracefully terminate agent execution with custom message
use_llmagent.tool.use_llm(prompt="Analyze this data", system_prompt="You are a data analyst")Create nested AI loops with customized system prompts for specialized tasks
workflowagent.tool.workflow(action="create", name="data_pipeline", steps=[{"tool": "file_read"}, {"tool": "python_repl"}])Define, execute, and manage multi-step automated workflows
batchagent.tool.batch(invocations=[{"name": "current_time", "arguments": {"timezone": "Europe/London"}}, {"name": "stop", "arguments": {}}])Call multiple other tools in parallel.
use_browseragent.tool.use_browser(action="navigate", url="https://www.example.com") Web scraping, automated testing, form filling, web automation tasks

* These tools do not work on windows

💻 Usage Examples

File Operations

from strands import Agent
from strands_tools import file_read, file_write, editor

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

agent.tool.file_read(path="config.json")
agent.tool.file_write(path="output.txt", content="Hello, world!")
agent.tool.editor(command="view", path="script.py")

Shell Commands

Note: shell does not work on Windows.

from strands import Agent
from strands_tools import shell

agent = Agent(tools=[shell])

# Execute a single command
result = agent.tool.shell(command="ls -la")

# Execute a sequence of commands
results = agent.tool.shell(command=["mkdir -p test_dir", "cd test_dir", "touch test.txt"])

# Execute commands with error handling
agent.tool.shell(command="risky-command", ignore_errors=True)

HTTP Requests

from strands import Agent
from strands_tools import http_request

agent = Agent(tools=[http_request])

# Make a simple GET request
response = agent.tool.http_request(
 method="GET",
 url="https://api.example.com/data"
)

# POST request with authentication
response = agent.tool.http_request(
 method="POST",
 url="https://api.example.com/resource",
 headers={"Content-Type": "application/json"},
 body=json.dumps({"key": "value"}),
 auth_type="Bearer",
 auth_token="your_token_here"
)

Python Code Execution

Note: python_repl does not work on Windows.

from strands import Agent
from strands_tools import python_repl

agent = Agent(tools=[python_repl])

# Execute Python code with state persistence
result = agent.tool.python_repl(code="""
import pandas as pd

# Load and process data
data = pd.read_csv('data.csv')
processed = data.groupby('category').mean()

processed.head()
""")

Swarm Intelligence

from strands import Agent
from strands_tools import swarm

agent = Agent(tools=[swarm])

# Create a collaborative swarm of agents to tackle a complex problem
result = agent.tool.swarm(
 task="Generate creative solutions for reducing plastic waste in urban areas",
 swarm_size=5,
 coordination_pattern="collaborative"
)

# Create a competitive swarm for diverse solution generation
result = agent.tool.swarm(
 task="Design an innovative product for smart home automation",
 swarm_size=3,
 coordination_pattern="competitive"
)

# Hybrid approach combining collaboration and competition
result = agent.tool.swarm(
 task="Develop marketing strategies for a new sustainable fashion brand",
 swarm_size=4,
 coordination_pattern="hybrid"
)

Use AWS

from strands import Agent
from strands_tools import use_aws

agent = Agent(tools=[use_aws])

# List S3 buckets
result = agent.tool.use_aws(
 service_name="s3",
 operation_name="list_buckets",
 parameters={},
 region="us-east-1",
 label="List all S3 buckets"
)

# Get the contents of a specific S3 bucket
result = agent.tool.use_aws(
 service_name="s3",
 operation_name="list_objects_v2",
 parameters={"Bucket": "example-bucket"}, # Replace with your actual bucket name
 region="us-east-1",
 label="List objects in a specific S3 bucket"
)

# Get the list of EC2 subnets
result = agent.tool.use_aws(
 service_name="ec2",
 operation_name="describe_subnets",
 parameters={},
 region="us-east-1",
 label="List all subnets"
)

Batch Tool

import os
import sys

from strands import Agent
from strands_tools import batch, http_request, use_aws

# Example usage of the batch with http_request and use_aws tools
agent = Agent(tools=[batch, http_request, use_aws])

result = agent.tool.batch(
 invocations=[
 {"name": "http_request", "arguments": {"method": "GET", "url": "https://api.ipify.org?format=json"}},
 {
 "name": "use_aws",
 "arguments": {
 "service_name": "s3",
 "operation_name": "list_buckets",
 "parameters": {},
 "region": "us-east-1",
 "label": "List S3 Buckets"
 }
 },
 ]
)

Use Browser

from strands import Agent
from strands_tools import use_browser

agent = Agent(tools=[use_browser])

# Simple navigation
result = agent.tool.use_browser(action="navigate", url="https://example.com")

# Sequential actions for form filling
result = agent.tool.use_browser(actions=[
 {"action": "navigate", "args": {"url": "https://example.com/login"}},
 {"action": "type", "args": {"selector": "#username", "text": "[email protected]"}},
 {"action": "click", "args": {"selector": "#submit"}}
])

# Web scraping with content extraction
result = agent.tool.use_browser(actions=[
 {"action": "navigate", "args": {"url": "https://example.com/data"}},
 {"action": "get_text", "args": {"selector": ".content"}},
 {"action": "click", "args": {"selector": ".next-page"}},
 {"action": "get_html", "args": {"selector": "main"}}
])

🌍 Environment Variables Configuration

Agents Tools provides extensive customization through environment variables. This allows you to configure tool behavior without modifying code, making it ideal for different environments (development, testing, production).

Global Environment Variables

These variables affect multiple tools:

Environment VariableDescriptionDefaultAffected Tools
BYPASS_TOOL_CONSENTBypass consent for tool invocation, set to "true" to enablefalseAll tools that require consent (e.g. shell, file_write, python_repl)
STRANDS_TOOL_CONSOLE_MODEEnable rich UI for tools, set to "enabled" to enabledisabledAll tools that have optional rich UI
AWS_REGIONDefault AWS region for AWS operationsus-west-2use_aws, retrieve, generate_image, memory, nova_reels
AWS_PROFILEAWS profile name to use from ~/.aws/credentialsdefaultuse_aws, retrieve
LOG_LEVELLogging level (DEBUG, INFO, WARNING, ERROR)INFOAll tools

Tool-Specific Environment Variables

Calculator Tool

Environment VariableDescriptionDefault
CALCULATOR_MODEDefault calculation modeevaluate
CALCULATOR_PRECISIONNumber of decimal places for results10
CALCULATOR_SCIENTIFICWhether to use scientific notation for numbersFalse
CALCULATOR_FORCE_NUMERICForce numeric evaluation of symbolic expressionsFalse
CALCULATOR_FORCE_SCIENTIFIC_THRESHOLDThreshold for automatic scientific notation1e21
CALCULATOR_DERIVE_ORDERDefault order for derivatives1
CALCULATOR_SERIES_POINTDefault point for series expansion0
CALCULATOR_SERIES_ORDERDefault order for series expansion5

Current Time Tool

Environment VariableDescriptionDefault
DEFAULT_TIMEZONEDefault timezone for current_time toolUTC

Sleep Tool

Environment VariableDescriptionDefault
MAX_SLEEP_SECONDSMaximum allowed sleep duration in seconds300

Mem0 Memory Tool

The Mem0 Memory Tool supports three different backend configurations:

  1. Mem0 Platform:
  • Uses the Mem0 Platform API for memory management
  • Requires a Mem0 API key
  1. OpenSearch (Recommended for AWS environments):
  • Uses OpenSearch as the vector store backend
  • Requires AWS credentials and OpenSearch configuration
  1. FAISS (Default for local development):
  • Uses FAISS as the local vector store backend
  • Requires faiss-cpu package for local vector storage
Environment VariableDescriptionDefaultRequired For
MEM0_API_KEYMem0 Platform API keyNoneMem0 Platform
OPENSEARCH_HOSTOpenSearch Host URLNoneOpenSearch
AWS_REGIONAWS Region for OpenSearchus-west-2OpenSearch
DEVEnable development mode (bypasses confirmations)falseAll modes

Note:

  • If MEM0_API_KEY is set, the tool will use the Mem0 Platform
  • If OPENSEARCH_HOST is set, the tool will use OpenSearch
  • If neither is set, the tool will default to FAISS (requires faiss-cpu package)

Memory Tool

Environment VariableDescriptionDefault
MEMORY_DEFAULT_MAX_RESULTSDefault maximum results for list operations50
MEMORY_DEFAULT_MIN_SCOREDefault minimum relevance score for filtering results0.4

Nova Reels Tool

Environment VariableDescriptionDefault
NOVA_REEL_DEFAULT_SEEDDefault seed for video generation0
NOVA_REEL_DEFAULT_FPSDefault frames per second for generated videos24
NOVA_REEL_DEFAULT_DIMENSIONDefault video resolution in WIDTHxHEIGHT format1280x720
NOVA_REEL_DEFAULT_MAX_RESULTSDefault maximum number of jobs to return for list action10

Python REPL Tool

Environment VariableDescriptionDefault
PYTHON_REPL_BINARY_MAX_LENMaximum length for binary content before truncation100

Shell Tool

Environment VariableDescriptionDefault
SHELL_DEFAULT_TIMEOUTDefault timeout in seconds for shell commands900

Slack Tool

Environment VariableDescriptionDefault
SLACK_DEFAULT_EVENT_COUNTDefault number of events to retrieve42
STRANDS_SLACK_AUTO_REPLYEnable automatic replies to messagesfalse
STRANDS_SLACK_LISTEN_ONLY_TAGOnly process messages containing this tagNone

Speak Tool

Environment VariableDescriptionDefault
SPEAK_DEFAULT_STYLEDefault style for status messagesgreen
SPEAK_DEFAULT_MODEDefault speech mode (fast/polly)fast
SPEAK_DEFAULT_VOICE_IDDefault Polly voice IDJoanna
SPEAK_DEFAULT_OUTPUT_PATHDefault audio output pathspeech_output.mp3
SPEAK_DEFAULT_PLAY_AUDIOWhether to play audio by defaultTrue

Editor Tool

Environment VariableDescriptionDefault
EDITOR_DIR_TREE_MAX_DEPTHMaximum depth for directory tree visualization2
EDITOR_DEFAULT_STYLEDefault style for output panelsdefault
EDITOR_DEFAULT_LANGUAGEDefault language for syntax highlightingpython

Environment Tool

Environment VariableDescriptionDefault
ENV_VARS_MASKED_DEFAULTDefault setting for masking sensitive valuestrue

File Read Tool

Environment VariableDescriptionDefault
FILE_READ_RECURSIVE_DEFAULTDefault setting for recursive file searchingtrue
FILE_READ_CONTEXT_LINES_DEFAULTDefault number of context lines around search matches2
FILE_READ_START_LINE_DEFAULTDefault starting line number for lines mode0
FILE_READ_CHUNK_OFFSET_DEFAULTDefault byte offset for chunk mode0
FILE_READ_DIFF_TYPE_DEFAULTDefault diff type for file comparisonsunified
FILE_READ_USE_GIT_DEFAULTDefault setting for using git in time machine modetrue
FILE_READ_NUM_REVISIONS_DEFAULTDefault number of revisions to show in time machine mode5

Use Browser Tool

Environment VariableDescriptionDefault
STRANDS_DEFAULT_WAIT_TIMEDefault setting for wait time with actions1
STRANDS_BROWSER_MAX_RETRIESDefault number of retries to perform when an action fails3
STRANDS_BROWSER_RETRY_DELAYDefault retry delay time for retry mechanisms1
STRANDS_BROWSER_SCREENSHOTS_DIRDefault directory where screenshots will be savedscreenshots
STRANDS_BROWSER_USER_DATA_DIRDefault directory where data for reloading a browser instance is stored~/.browser_automation
STRANDS_BROWSER_HEADLESSDefault headless setting for launching browsersfalse
STRANDS_BROWSER_WIDTHDefault width of the browser1280
STRANDS_BROWSER_HEIGHTDefault height of the browser800

Contributing ❤️

We welcome contributions! See our Contributing Guide for details on:

  • Reporting bugs & features
  • Development setup
  • Contributing via Pull Requests
  • Code of Conduct
  • Reporting of security issues

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Security

See CONTRIBUTING for more information.

⚠️ Preview Status

Strands Agents is currently in public preview. During this period:

  • APIs may change as we refine the SDK
  • We welcome feedback and contributions

Repository

ST
strands-agents

strands-agents/tools

Created

May 14, 2025

Updated

July 7, 2025

Language

Python

Category

AI