Appearance
Web and network
Optional extras:
bash
# Local Chromium browser
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[local-chromium-browser]==0.3.0"
# Bedrock AgentCore browser
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[agent-core-browser]==0.3.0"
# RSS feeds
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[rss]==0.3.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.
Tools
http_request
Make authenticated HTTP requests and fetch web pages — supports Bearer, JWT, Basic, Digest, and AWS SigV4 auth
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
ELSAI_HTTP_ALLOW_INSECURE_SSL | optional | unset | Set to true only if you must allow verify_ssl=False |
Also respects BYPASS_TOOL_CONSENT (see Tool consent).
slack
Full Slack integration with Socket Mode — listen for events, call any Slack API method, and handle threads
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
SLACK_BOT_TOKEN | yes | — | Slack bot token |
SLACK_APP_TOKEN | yes | — | Slack app-level token — needed for Socket Mode |
ELSAI_SLACK_AUTO_REPLY | optional | false | Set to true to auto-reply in Slack listener mode |
ELSAI_SLACK_LISTEN_ONLY_TAG | optional | unset | Only handle Slack messages that include this tag |
SLACK_DEFAULT_EVENT_COUNT | optional | 42 | Default number of events for the Slack listener |
slack_send_message
Post a message to a Slack channel or thread in one step, without composing raw API payloads
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
SLACK_BOT_TOKEN | yes | — | Slack bot token |
browser
Automate a real browser — navigate URLs, click elements, fill forms, and extract page content
Extra: local-chromium-browser or agent-core-browser
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
ELSAI_BROWSER_HEADLESS | optional | false | Run Chromium without a visible window |
ELSAI_BROWSER_WIDTH | optional | 1280 | Browser window width |
ELSAI_BROWSER_HEIGHT | optional | 800 | Browser window height |
ELSAI_BROWSER_USER_DATA_DIR | optional | auto | Chromium profile directory (standalone mode) |
ELSAI_BROWSER_SCREENSHOTS_DIR | optional | screenshots | Folder for browser screenshots |
On A2A servers, browser profiles are under $ELSAI_A2A_SESSION_DIR/<context_id>/browser/user_data/.
rss
Subscribe to RSS/Atom feeds and surface new entries so the agent can monitor news and changelogs
Extra: rss
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
ELSAI_RSS_MAX_ENTRIES | optional | 100 | Max entries to fetch from a feed |
ELSAI_RSS_UPDATE_INTERVAL | optional | 60 | How often to refresh feeds (minutes) |
ELSAI_RSS_STORAGE_PATH | optional | package default | Where feed subscriptions are stored on disk |
bright_data
Scrape websites and run search queries through Bright Data's proxy and SERP APIs
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
BRIGHTDATA_API_KEY | yes | — | Bright Data API key |
BRIGHTDATA_ZONE | optional | web_unlocker1 | Bright Data zone name |
tavily_search
AI-optimized web search with filtering, ranking, domain controls, and news or general topic modes
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
TAVILY_API_KEY | yes | — | Tavily API key |
tavily_extract
Pull clean, LLM-ready text from one or more URLs with optional image and metadata extraction
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
TAVILY_API_KEY | yes | — | Tavily API key |
tavily_crawl
Crawl a website starting from a base URL, following links within depth and page limits
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
TAVILY_API_KEY | yes | — | Tavily API key |
tavily_map
Discover and map the link structure of a site from a starting URL before deeper crawling
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
TAVILY_API_KEY | yes | — | Tavily API key |
exa_search
Semantic web search that finds pages by meaning and relevance, not just keyword matching
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
EXA_API_KEY | yes | — | Exa API key |
exa_get_contents
Retrieve full page text and metadata for URLs — typically used after an Exa search
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
EXA_API_KEY | yes | — | Exa API key |
mcp_client
Connect to MCP servers at runtime and invoke their tools dynamically from inside the agent loop
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
ELSAI_MCP_TIMEOUT | optional | 30.0 | How long to wait when connecting to an MCP server (seconds) |
Examples
http_request
Requires OPENAI_API_KEY. For demos set BYPASS_TOOL_CONSENT=true (see Tool consent).
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents==0.3.1
pip install --extra-index-url https://core-packages.elsai.ai/root/ "elsai-model[openai]==2.1.0"
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents-tools==0.3.0python
import os
from elsai import Agent
from elsai.agent import AgentConfig
from elsai_model.openai import OpenAIModel
from elsai_tools.http_request import http_request
agent = Agent(
model=OpenAIModel(
model_id="gpt-4o-mini",
client_args={"api_key": os.environ["OPENAI_API_KEY"]},
),
tools=[http_request],
system_prompt=(
"Use http_request to fetch URLs when needed. "
"After using tools, answer the user clearly in plain text."
),
config=AgentConfig(name="web_assistant"),
)
result = agent(
"Fetch https://example.com and summarise what the page is about in two sentences."
)
print(result)tavily_search
Requires OPENAI_API_KEY and TAVILY_API_KEY.
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents==0.3.1
pip install --extra-index-url https://core-packages.elsai.ai/root/ "elsai-model[openai]==2.1.0"
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents-tools==0.3.0python
import os
from elsai import Agent
from elsai.agent import AgentConfig
from elsai_model.openai import OpenAIModel
from elsai_tools.tavily import tavily_search
agent = Agent(
model=OpenAIModel(
model_id="gpt-4o-mini",
client_args={"api_key": os.environ["OPENAI_API_KEY"]},
),
tools=[tavily_search],
system_prompt=(
"Use tavily_search for web research. "
"After using tools, answer the user clearly in plain text."
),
config=AgentConfig(name="search_assistant"),
)
result = agent("Search for the latest news about AI agents and give me three bullet points.")
print(result)API reference
See Web and network API for parameters and import paths.