crewAIInc / crewAIInc/crewAI

[FEATURE] Add a Webz.io news search tool to crewai-tools

Open
#7,308 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

vendor-pitch
Dominant language
Python
Stars
58.8k
Forks
8.5k
Avg merge
1d 15h
Merged PRs (30d)
109

Description

Feature Area

Integration with external tools

Is your feature request related to a an existing bug? Please link it here.

NA — this is a new integration, not a bug.

Describe the solution you'd like

crewai-tools has broad web search coverage (Serper, Brave, Exa, Tavily, LinkUp, SerpApi), but no tool dedicated to news search. Agents doing media monitoring, PR analysis, or event tracking currently have to filter general web results down to news themselves, and they lose the metadata that makes news usable — publication date, source, language, country, sentiment.

I'd like a WebzioNewsSearchTool that searches Webz.io's news index, which crawls hundreds of thousands of news and blog sources across languages and countries. Results would come back with title, url, publication date, source, language and text, so an agent can cite what it found.

The natural implementation is on top of Webz.io's hosted News Search MCP server, using the MCPServerAdapter already in crewai_tools.adapters. That has a specific benefit over a hand-written schema: the tool can fetch its argument schema from the MCP server at construction time, so the server-side filters (currently about 26 of them — language, country, published date, sentiment, domain rank, category, entity filters, and so on) stay available to agents without a crewai-tools release every time Webz.io adds one.

Proposed usage, matching the shape of the existing search tools:

from crewai import Agent
from crewai_tools import WebzioNewsSearchTool

news_tool = WebzioNewsSearchTool()  # reads WEBZ_API_TOKEN

analyst = Agent(
    role="News Analyst",
    goal="Report what the press is saying about a topic",
    backstory="A media analyst who searches the news and summarizes coverage.",
    tools=[news_tool],
)
Describe alternatives you've considered
  • Attaching the MCP server to the agent directly with MCPServerHTTP(url="https://news-search-mcp.webz.io/mcp", ...). This works today and is worth documenting, but it attaches the whole server rather than one named tool, so it can't be composed into a tools=[...] list, doesn't appear in tool.specs.json, and doesn't get the EnvVar declarations that the rest of the tool catalog exposes.
  • Hand-writing the filter schema as a Pydantic model. Straightforward, but it freezes the filter list at release time and would need a crewai-tools release whenever Webz.io adds a filter.
  • A separate third-party package. I published one (crewai-webzio) as a first step, but a news tool belongs alongside the other search tools in the catalog so it is discoverable from the docs and the tool specs.
Additional context

Two design points worth flagging early, since they affect how the tool behaves in CI and at import time:

  1. MCPServerAdapter.__init__ connects eagerly and raises RuntimeError on failure. To keep tool construction safe at import time and under the repo's --block-network pytest setting, the tool would catch that, keep a query-only fallback schema, and retry the connection on the first search — which is where a missing token or unreachable server gets reported.
  2. ToolSpecExtractor reads class-level schemas, so tool.specs.json would record the query-only fallback rather than the live 26-field schema. That seems like the right trade for not hardcoding the filter list, but it's a deliberate choice rather than an oversight.
Willingness to Contribute

Yes, I'd be happy to submit a pull request

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading MCPServerAdapter in crewai_tools.adapters and ToolSpecExtractor, then inspect how existing search tools are exposed in the catalog. Run pytest with --block-network and verify that WebzioNewsSearchTool uses the fallback schema safely, retries on first search, and is available through the documented tools list and tool.specs.json.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.