The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
📁 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, Amazon Bedrock Knowledge Bases, Elasticsearch, and MongoDB Atlas
🕸️ Web Infrastructure - Perform web searches, extract page content, and crawl websites with Tavily and Exa-powered tools
🌐 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
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 Variable
Description
Default
Affected Tools
BYPASS_TOOL_CONSENT
Bypass consent for tool invocation, set to "true" to enable
false
All tools that require consent (e.g. shell, file_write, python_repl)
STRANDS_TOOL_CONSOLE_MODE
Enable rich UI for tools, set to "enabled" to enable
Security Model: The tenant-isolation keys (user_id / agent_id) are never exposed as agent-facing tool parameters. The agent only chooses the action and its content/query/memory_id. This prevents a model (or prompt-injected content) from reading, writing, or deleting another tenant's memories.
Usage patterns:
from strands import Agent
from strands_tools.mem0_memory import Mem0MemoryTool, mem0_memory
# Multi-tenant (recommended): bind identity per authenticated principal
tool = Mem0MemoryTool(user_id=f"user_{authenticated_user_id}")
agent = Agent(tools=[tool.mem0_memory])
agent.tool.mem0_memory(action="store", content="User prefers vegetarian pizza")
# Single-tenant: use the standalone function with env vars (MEM0_USER_ID / MEM0_AGENT_ID)
agent = Agent(tools=[mem0_memory])
agent.tool.mem0_memory(action="store", content="User prefers vegetarian pizza")
The Mem0 Memory Tool supports three different backend configurations:
Mem0 Platform:
Uses the Mem0 Platform API for memory management
Requires a Mem0 API key
OpenSearch (Recommended for AWS environments):
Uses OpenSearch as the vector store backend
Requires AWS credentials and OpenSearch configuration
FAISS (Default for local development):
Uses FAISS as the local vector store backend
Requires faiss-cpu package for local vector storage
Neptune Analytics (Optional Graph backend for search enhancement):
Uses Neptune Analytics as the graph store backend to enhance memory recall.
Requires AWS credentials and Neptune Analytics configuration
# Configure your Neptune Analytics graph ID in the .env file:
export NEPTUNE_ANALYTICS_GRAPH_IDENTIFIER=sample-graph-id
# Configure your Neptune Analytics graph ID in Python code:
import os
os.environ['NEPTUNE_ANALYTICS_GRAPH_IDENTIFIER'] = "g-sample-graph-id"
Environment Variable
Description
Default
Required For
MEM0_USER_ID
User ID for memory operations (standalone function)
None
Standalone
MEM0_AGENT_ID
Agent ID for memory operations (standalone function)
None
Standalone
MEM0_API_KEY
Mem0 Platform API key
None
Mem0 Platform
OPENSEARCH_HOST
OpenSearch Host URL
None
OpenSearch
AWS_REGION
AWS Region for OpenSearch
us-west-2
OpenSearch
NEPTUNE_ANALYTICS_GRAPH_IDENTIFIER
Neptune Analytics Graph Identifier
None
Neptune Analytics
DEV
Enable development mode (bypasses confirmations)
false
All modes
MEM0_LLM_PROVIDER
LLM provider for memory processing
aws_bedrock
All modes
MEM0_LLM_MODEL
LLM model for memory processing
anthropic.claude-3-5-haiku-20241022-v1:0
All modes
MEM0_LLM_TEMPERATURE
LLM temperature (0.0-2.0)
0.1
All modes
MEM0_LLM_MAX_TOKENS
LLM maximum tokens
2000
All modes
MEM0_EMBEDDER_PROVIDER
Embedder provider for vector embeddings
aws_bedrock
All modes
MEM0_EMBEDDER_MODEL
Embedder model for vector embeddings
amazon.titan-embed-text-v2:0
All 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)
If NEPTUNE_ANALYTICS_GRAPH_IDENTIFIER is set, the tool will configure Neptune Analytics as graph store to enhance memory search
LLM configuration applies to all backend modes and allows customization of the language model used for memory processing
Bright Data Tool
Environment Variable
Description
Default
BRIGHTDATA_API_KEY
Bright Data API Key
None
BRIGHTDATA_ZONE
Bright Data Web Unlocker Zone
web_unlocker1
Memory Tool
Environment Variable
Description
Default
MEMORY_DEFAULT_MAX_RESULTS
Default maximum results for list operations
50
MEMORY_DEFAULT_MIN_SCORE
Default minimum relevance score for filtering results
0.4
Nova Reels Tool
Environment Variable
Description
Default
NOVA_REEL_DEFAULT_SEED
Default seed for video generation
0
NOVA_REEL_DEFAULT_FPS
Default frames per second for generated videos
24
NOVA_REEL_DEFAULT_DIMENSION
Default video resolution in WIDTHxHEIGHT format
1280x720
NOVA_REEL_DEFAULT_MAX_RESULTS
Default maximum number of jobs to return for list action
10
Python REPL Tool
Environment Variable
Description
Default
PYTHON_REPL_BINARY_MAX_LEN
Maximum length for binary content before truncation
100
PYTHON_REPL_INTERACTIVE
Whether to enable interactive PTY mode
None
PYTHON_REPL_RESET_STATE
Whether to reset the REPL state before execution
None
PYTHON_REPL_PERSISTENCE_DIR
Set Directory for python_repl tool to write state file
None
Shell Tool
Environment Variable
Description
Default
SHELL_DEFAULT_TIMEOUT
Default timeout in seconds for shell commands
900
Slack Tool
Environment Variable
Description
Default
SLACK_DEFAULT_EVENT_COUNT
Default number of events to retrieve
42
STRANDS_SLACK_AUTO_REPLY
Enable automatic replies to messages
false
STRANDS_SLACK_LISTEN_ONLY_TAG
Only process messages containing this tag
None
Speak Tool
Environment Variable
Description
Default
SPEAK_DEFAULT_STYLE
Default style for status messages
green
SPEAK_DEFAULT_MODE
Default speech mode (fast/polly)
fast
SPEAK_DEFAULT_VOICE_ID
Default Polly voice ID
Joanna
SPEAK_DEFAULT_OUTPUT_PATH
Default audio output path
speech_output.mp3
SPEAK_DEFAULT_PLAY_AUDIO
Whether to play audio by default
True
Editor Tool
Environment Variable
Description
Default
EDITOR_DIR_TREE_MAX_DEPTH
Maximum depth for directory tree visualization
2
EDITOR_DEFAULT_STYLE
Default style for output panels
default
EDITOR_DEFAULT_LANGUAGE
Default language for syntax highlighting
python
EDITOR_DISABLE_BACKUP
Skip creating .bak backup files during edit operations
false
Environment Tool
Environment Variable
Description
Default
ENV_VARS_MASKED_DEFAULT
Default setting for masking sensitive values
true
HTTP Request Tool
Environment Variable
Description
Default
STRANDS_HTTP_ALLOW_INSECURE_SSL
Allow disabling SSL certificate verification via verify_ssl parameter
false
Dynamic MCP Client Tool
Environment Variable
Description
Default
STRANDS_MCP_TIMEOUT
Default timeout in seconds for MCP operations
30.0
File Read Tool
Environment Variable
Description
Default
FILE_READ_RECURSIVE_DEFAULT
Default setting for recursive file searching
true
FILE_READ_CONTEXT_LINES_DEFAULT
Default number of context lines around search matches
2
FILE_READ_START_LINE_DEFAULT
Default starting line number for lines mode
0
FILE_READ_CHUNK_OFFSET_DEFAULT
Default byte offset for chunk mode
0
FILE_READ_DIFF_TYPE_DEFAULT
Default diff type for file comparisons
unified
FILE_READ_USE_GIT_DEFAULT
Default setting for using git in time machine mode
true
FILE_READ_NUM_REVISIONS_DEFAULT
Default number of revisions to show in time machine mode
5
Browser Tool
Environment Variable
Description
Default
STRANDS_DEFAULT_WAIT_TIME
Default setting for wait time with actions
1
STRANDS_BROWSER_MAX_RETRIES
Default number of retries to perform when an action fails
3
STRANDS_BROWSER_RETRY_DELAY
Default retry delay time for retry mechanisms
1
STRANDS_BROWSER_SCREENSHOTS_DIR
Default directory where screenshots will be saved
screenshots
STRANDS_BROWSER_USER_DATA_DIR
Default directory where data for reloading a browser instance is stored
~/.browser_automation
STRANDS_BROWSER_HEADLESS
Default headless setting for launching browsers
false
STRANDS_BROWSER_WIDTH
Default width of the browser
1280
STRANDS_BROWSER_HEIGHT
Default height of the browser
800
RSS Tool
Environment Variable
Description
Default
STRANDS_RSS_MAX_ENTRIES
Default setting for maximum number of entries per feed
100
STRANDS_RSS_UPDATE_INTERVAL
Default amount of time between updating rss feeds in minutes
60
STRANDS_RSS_STORAGE_PATH
Default storage path where rss feeds are stored locally
strands_rss_feeds (this may vary based on your system)
Retrieve Tool
Environment Variable
Description
Default
RETRIEVE_ENABLE_METADATA_DEFAULT
Default setting for enabling metadata in retrieve tool responses
false
Use Agent Tool
Environment Variable
Description
Default
STRANDS_PROVIDER
Default model provider when using model_provider="env"
ollama
STRANDS_MODEL_ID
Default model identifier for environment-based model selection
None
STRANDS_MAX_TOKENS
Maximum tokens for the nested agent model
None
STRANDS_TEMPERATURE
Sampling temperature for the nested agent model
None
Elasticsearch Memory Tool
Environment Variable
Description
Default
ELASTICSEARCH_CLOUD_ID
Elasticsearch Cloud ID for connection
None
ELASTICSEARCH_URL
Elasticsearch URL for serverless connection
None
ELASTICSEARCH_API_KEY
Elasticsearch API key for authentication
None
ELASTICSEARCH_INDEX_NAME
Elasticsearch index name for memory storage
strands_memory
ELASTICSEARCH_NAMESPACE
Namespace for memory isolation
default
ELASTICSEARCH_EMBEDDING_MODEL
Amazon Bedrock model for embeddings
amazon.titan-embed-text-v2:0
AWS_REGION
AWS region for Bedrock embedding service
us-west-2
Note: This tool requires AWS account credentials to generate embeddings using Amazon Bedrock Titan models.
Graph Tool
The graph tool uses the same model provider environment variables as use_agent for per-node model configuration. No additional environment variables are required.
Video Tools
Environment Variable
Description
Default
TWELVELABS_API_KEY
TwelveLabs API key for video analysis
None
TWELVELABS_MARENGO_INDEX_ID
Default index ID for search_video tool
None
TWELVELABS_PEGASUS_INDEX_ID
Default index ID for chat_video tool
None
MongoDB Atlas Memory Tool
Environment Variable
Description
Default
MONGODB_ATLAS_CLUSTER_URI
MongoDB Atlas connection string
None
MONGODB_DATABASE_NAME
Database name for MongoDB operations
strands_memory
MONGODB_COLLECTION_NAME
Collection name for MongoDB operations
memories
MONGODB_NAMESPACE
Namespace for memory isolation
default
MONGODB_EMBEDDING_MODEL
Amazon Bedrock model for embeddings
amazon.titan-embed-text-v2:0
Note: This tool requires AWS account credentials to generate embeddings using Amazon Bedrock Titan models.
Interacting with AWS services, cloud resource management
retrieve
agent.tool.retrieve(text="What is STRANDS?")
Retrieving information from Amazon Bedrock Knowledge Bases with optional metadata
nova_reels
agent.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
agent_core_memory
agent.tool.agent_core_memory(action="record", content="Hello, I like vegetarian food")
Store and retrieve memories with Amazon Bedrock Agent Core Memory service
mem0_memory
agent.tool.mem0_memory(action="store", content="Remember I like to play tennis")
Store user and agent memories across agent runs to provide personalized experience (tenant identity configured via Mem0MemoryTool or environment variables)
⚠️ SECURITY WARNING: Dynamically connect to external MCP servers via stdio, sse, or streamable_http, list tools, and call remote tools. This can pose security risks as agents may connect to malicious servers. Use with caution in production.
Store and retrieve memories using MongoDB Atlas with semantic search via AWS Bedrock Titan embeddings (connection and namespace configured via MongoDBMemoryTool or environment variables)
elasticsearch_memory
agent.tool.elasticsearch_memory(action="record", content="User prefers dark mode")
Store and retrieve memories using Elasticsearch with semantic search via AWS Bedrock Titan embeddings (connection and namespace configured via ElasticsearchMemoryTool or environment variables)