Skip to content

feat(tools): add rss tool to Strands tools repository #155

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

jimbrub
Copy link
Contributor

@jimbrub jimbrub commented Jul 18, 2025

Description

This PR introduces an RSS feed management tool, enabling agents to interact with RSS feeds for information gathering, content monitoring, and data integration tasks.

This tool provides comprehensive RSS feed management capabilities:

  • Fetch: Retrieve feed content from URLs without subscribing
  • Subscribe: Add feeds to a subscription list
  • Unsubscribe: Remove feed subscriptions
  • List: Display all subscribed feeds
  • Read: Access entries from subscribed feeds
  • Update: Refresh feeds with new content
  • Search: Find entries matching specific queries
  • Categories: List all categories/tags across feeds

Use cases:

  • Automated content aggregation and curation
  • Real-time monitoring of news and updates
  • Integration of RSS data into other agent workflows
  • Content analysis and trend tracking
  • This tool can be paired with other tools like HTTP Client for comprehensive web data gathering, or with NLP tools for advanced content analysis

The tool handles RSS-specific operations, reverting to the LLM's capabilities for tasks like summarization or content generation based on feed data

Related Issues

[Link to related issues using #issue-number format]

Documentation PR

[Link to related associated PR in the agent-docs repo]

Type of Change

  • Bug fix
  • New Tool
  • Breaking change
  • Other (please describe):

Testing

[How have you tested the change?]

  • hatch fmt --linter
  • hatch fmt --formatter
  • hatch test --all

Checklist

  • I have read the CONTRIBUTING document

  • I have added tests that prove my fix is effective or my feature works

  • I have updated the documentation accordingly

  • I have added an appropriate example to the documentation to outline the feature

  • My changes generate no new warnings

  • Any dependent changes have been merged and published

  • By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@jimbrub jimbrub changed the title Rss feat(tools): add rss tool to Strands tools repository Jul 21, 2025
@jimbrub jimbrub force-pushed the rss branch 2 times, most recently from b5a5c7a to 4f0b21e Compare July 21, 2025 21:07
@jimbrub jimbrub marked this pull request as ready for review July 21, 2025 21:13
@jimbrub jimbrub requested a review from a team as a code owner July 21, 2025 21:13

# Configure logging and defaults
logger = logging.getLogger(__name__)
DEFAULT_STORAGE_PATH = os.path.expanduser("~/.strands/rss_feeds")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we use tempdir instead of ~ since not all environments have write access for

def fetch_feed(self, url: str, auth: Optional[Dict] = None, user_agent: Optional[str] = None) -> Dict:
if auth and auth.get("type") == "basic":
headers = {"User-Agent": user_agent} if user_agent else {}
response = requests.get(url, headers=headers, auth=(auth.get("username", ""), auth.get("password", "")))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we accept headers from users so they can use their own headers to gather the RSS?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants