LangChain Tool wrapper for AgentFetch — token-budgeted web fetch for AI agents.
Project description
langchain-agentfetch
Drop-in LangChain Tool wrappers for AgentFetch — token-budgeted web fetch for AI agents.
Stop building your own web fetch / token-truncation / cache layer for every LangChain agent. AgentFetch handles routing (Trafilatura → Jina → FireCrawl → PDF), caching (6h Redis), and token budgeting in one tool.
Install
pip install langchain-agentfetch
Quick start
Get a free API key (500 fetches/mo, no credit card) at agentfetch.dev.
import os
from langchain_agentfetch import AgentFetchTool
os.environ["AGENTFETCH_API_KEY"] = "af_xxx"
tool = AgentFetchTool()
result = tool.run({"url": "https://news.ycombinator.com", "max_tokens": 2000})
print(result)
All four tools
| Tool | When to use |
|---|---|
AgentFetchTool (fetch_url) |
You have a specific URL to fetch |
EstimateTokensTool |
You want to know if a URL fits your context window before fetching |
FetchMultipleTool |
You have multiple URLs (search results, link lists) |
SearchAndFetchTool |
You have a research question, not specific URLs |
Use the toolkit (recommended for agents)
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
from langchain_agentfetch import AgentFetchToolkit
toolkit = AgentFetchToolkit(api_key="af_xxx")
tools = toolkit.get_tools()
prompt = ChatPromptTemplate.from_messages([
("system", "You are a research assistant. Use AgentFetch tools to read web pages "
"and answer questions. Always estimate tokens before fetching long URLs."),
("user", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
llm = ChatOpenAI(model="gpt-4o-mini")
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools)
executor.invoke({"input": "What's on the Hacker News front page right now?"})
The agent will:
- Use
agentfetch_search_and_fetchoragentfetch_fetch_urlto get the page - Get clean Markdown back, already token-truncated
- Reason over it without blowing the context window
Configuration
| Env var | Default | Notes |
|---|---|---|
AGENTFETCH_API_KEY |
required | Get one free at agentfetch.dev |
AGENTFETCH_BASE_URL |
https://api.agentfetch.dev |
Override only if self-hosting |
You can also pass api_key= and base_url= directly to any Tool / Toolkit constructor.
Why a token-aware fetch tool
LangChain's default tools (like requests_get) return raw HTML/JSON with no truncation, no awareness of your context budget, and no caching. That works at toy scale; it falls over the moment your agent fetches a 50KB news article into a 4K context window.
AgentFetch was built for that case:
- Pre-fetch token estimation so the agent can skip a URL it can't afford
- Server-side
max_tokenstruncation before the response leaves the API - 6-hour cache for repeat fetches (~$0.0001 each)
- Auto-routing so the agent doesn't pick between Jina, FireCrawl, and pypdf manually
Pricing
Same pay-per-call pricing as the AgentFetch API: from $0.001/fetch, 500 free on signup. No subscription required. See agentfetch.dev/pricing.
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_agentfetch-0.1.0.tar.gz.
File metadata
- Download URL: langchain_agentfetch-0.1.0.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
506438863c66c1d29ae9836395ce4093111a736dd9af621a6870e6252e9202bc
|
|
| MD5 |
2c2463af4dac7dfdc428c64f62ec4faa
|
|
| BLAKE2b-256 |
9c8dbdfc57fd87083649f83aed96ddc43028012ef0585e36bd32a888973fa98a
|
File details
Details for the file langchain_agentfetch-0.1.0-py3-none-any.whl.
File metadata
- Download URL: langchain_agentfetch-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e400a3dd568a3f5237268f2606a91a5ea451be58c8636c3ac739de1b2b53b23
|
|
| MD5 |
fc59646550b7ddaee411763f4163f914
|
|
| BLAKE2b-256 |
682a5774b562982a3e11649721ec480c322c043235326e150bf6f905119fd844
|