langchain-nestdaddy
Give your AI today's internet. Live web search, real-time breaking news from around the world and full page reading for LangChain agents and RAG pipelines, from NestDaddy's own index.
pip install -U langchain-nestdaddy
export NESTDADDY_API_KEY="your-key" # free trial key: https://nestdaddy.com/mcp
| Class | What it does |
|---|---|
NestDaddySearch |
Web search on NestDaddy's own index (title, url, snippet, domain) |
NestDaddyNewsSearch |
Real-time news by key words, optional country and time window |
NestDaddyReadPage |
Clean main text of any page or article, no menus or ads |
NestDaddyNewsRetriever |
News as LangChain Documents for RAG, optionally with the full article text |
Give an agent live search and news
from langchain.agents import create_agent
from langchain_nestdaddy import NestDaddyNewsSearch, NestDaddyReadPage, NestDaddySearch
agent = create_agent(
"anthropic:claude-sonnet-5-5",
tools=[NestDaddySearch(max_results=5), NestDaddyNewsSearch(days=7), NestDaddyReadPage()],
system_prompt="Use news search for anything recent, web search for everything else. "
"Read a page in full before you explain its details.",
)
result = agent.invoke({"messages": [{"role": "user", "content": "What did the Fed decide this week?"}]})
print(result["messages"][-1].content)
Any chat model that supports tool calling works the same way.
Use the tools directly
from langchain_nestdaddy import NestDaddyNewsSearch, NestDaddySearch, NestDaddyReadPage
NestDaddySearch(max_results=3).invoke({"query": "model context protocol"})
# {'query': 'model context protocol', 'count': 3, 'results': [{'title': ..., 'url': ..., 'snippet': ...}]}
NestDaddyNewsSearch().invoke({"query": "interest rates", "country": "US", "days": 7})
# {'query': 'interest rates', 'count': 10, 'total': ..., 'results': [{'title': ..., 'source_domain': ...,
# 'published_timestamp': ..., 'summary': ...}]}
NestDaddyReadPage(max_chars=8000).invoke({"url": "https://example.com/some-article"})
# {'title': ..., 'final_url': ..., 'text': ...}
Local news works in the local language: NestDaddyNewsSearch().invoke({"query": "banjir Jakarta", "country": "ID"}).
RAG over today's news
from langchain_nestdaddy import NestDaddyNewsRetriever
retriever = NestDaddyNewsRetriever(k=5, days=3, full_text=True)
docs = retriever.invoke("chip export rules")
for d in docs:
print(d.metadata["title"], d.metadata["url"], d.metadata["published_timestamp"])
print(d.page_content[:300])
With full_text=True each article is read in full (one extra API call per article). If an article cannot be
read, its summary is kept so you still get k documents.
Async
Every tool and the retriever support ainvoke; the retriever reads full articles in parallel.
docs = await NestDaddyNewsRetriever(k=5, full_text=True).ainvoke("AI regulation")
Errors
API errors raise NestDaddyAPIError with the HTTP status and a hint (a bad key points to the dashboard, a plan
limit to the plans page). Your key is stored as a SecretStr and never printed.
Prefer MCP?
The same tools are available as a remote MCP server for Claude, Cursor, VS Code and n8n:
https://mcp.nestdaddy.com/mcp. Setup: nestdaddy.com/mcp.
Development
pip install -e ".[test]"
pytest tests/unit_tests --disable-socket --allow-unix-socket # offline
NESTDADDY_API_KEY=... pytest -m integration tests/integration_tests
MIT licensed.
Metadata
Release files for langchain-nestdaddy 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| langchain_nestdaddy-0.1.0.tar.gz | 10.4 kB | Without provenance | Details for langchain_nestdaddy-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| langchain_nestdaddy-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for langchain_nestdaddy-0.1.0-py3-none-any.whl |
Total release size: 20.7 kB
Release files / langchain_nestdaddy-0.1.0.tar.gz
| Download URL | langchain_nestdaddy-0.1.0.tar.gz |
|---|---|
| Size | 10.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
26c8ab48113963bb7303c1f5249768c919271f866f379ca1ddacf01770c3525f
|
|
BLAKE2b-256 checksum How to use checksums |
0c886617493c3801af1886228be3b9ee514efc61d4afc2c8172fde8e358ec8cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.2
|
Release files / langchain_nestdaddy-0.1.0-py3-none-any.whl
| Download URL | langchain_nestdaddy-0.1.0-py3-none-any.whl |
|---|---|
| Size | 10.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
28c5bcf919625c1e7670fa93c06a391e3d0b984e116615a0530c242363e271c9
|
|
BLAKE2b-256 checksum How to use checksums |
fadd4fd507b87a008637e57066352541e55d493ebcc9ad821f09c5db77948580
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.2
|
Security for langchain-nestdaddy 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.