Skip to content

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

VariableRequiredDefaultDescription
ELSAI_HTTP_ALLOW_INSECURE_SSLoptionalunsetSet 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

VariableRequiredDefaultDescription
SLACK_BOT_TOKENyesSlack bot token
SLACK_APP_TOKENyesSlack app-level token — needed for Socket Mode
ELSAI_SLACK_AUTO_REPLYoptionalfalseSet to true to auto-reply in Slack listener mode
ELSAI_SLACK_LISTEN_ONLY_TAGoptionalunsetOnly handle Slack messages that include this tag
SLACK_DEFAULT_EVENT_COUNToptional42Default 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

VariableRequiredDefaultDescription
SLACK_BOT_TOKENyesSlack 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

VariableRequiredDefaultDescription
ELSAI_BROWSER_HEADLESSoptionalfalseRun Chromium without a visible window
ELSAI_BROWSER_WIDTHoptional1280Browser window width
ELSAI_BROWSER_HEIGHToptional800Browser window height
ELSAI_BROWSER_USER_DATA_DIRoptionalautoChromium profile directory (standalone mode)
ELSAI_BROWSER_SCREENSHOTS_DIRoptionalscreenshotsFolder 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

VariableRequiredDefaultDescription
ELSAI_RSS_MAX_ENTRIESoptional100Max entries to fetch from a feed
ELSAI_RSS_UPDATE_INTERVALoptional60How often to refresh feeds (minutes)
ELSAI_RSS_STORAGE_PATHoptionalpackage defaultWhere feed subscriptions are stored on disk

bright_data

Scrape websites and run search queries through Bright Data's proxy and SERP APIs

Environment variables

VariableRequiredDefaultDescription
BRIGHTDATA_API_KEYyesBright Data API key
BRIGHTDATA_ZONEoptionalweb_unlocker1Bright Data zone name

AI-optimized web search with filtering, ranking, domain controls, and news or general topic modes

Environment variables

VariableRequiredDefaultDescription
TAVILY_API_KEYyesTavily API key

tavily_extract

Pull clean, LLM-ready text from one or more URLs with optional image and metadata extraction

Environment variables

VariableRequiredDefaultDescription
TAVILY_API_KEYyesTavily API key

tavily_crawl

Crawl a website starting from a base URL, following links within depth and page limits

Environment variables

VariableRequiredDefaultDescription
TAVILY_API_KEYyesTavily API key

tavily_map

Discover and map the link structure of a site from a starting URL before deeper crawling

Environment variables

VariableRequiredDefaultDescription
TAVILY_API_KEYyesTavily API key

Semantic web search that finds pages by meaning and relevance, not just keyword matching

Environment variables

VariableRequiredDefaultDescription
EXA_API_KEYyesExa API key

exa_get_contents

Retrieve full page text and metadata for URLs — typically used after an Exa search

Environment variables

VariableRequiredDefaultDescription
EXA_API_KEYyesExa API key

mcp_client

Connect to MCP servers at runtime and invoke their tools dynamically from inside the agent loop

Environment variables

VariableRequiredDefaultDescription
ELSAI_MCP_TIMEOUToptional30.0How 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.0
python
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.0
python
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.

See also

Copyright © 2026 elsai foundry.