Skip to content

Conversation

matyo91
Copy link
Contributor

@matyo91 matyo91 commented Sep 12, 2025

Q A
Bug fix? no
New feature? yes
Docs? no
Issues Fix #524
License MIT

👀 Lots of tools can be added from https://github.com/langchain-ai/langchain-community/tree/main/libs/community/langchain_community/tools

⚠️ Tools are not tested

🔍 Search & Discovery Tools

  • 🔍 GoogleSearch - Google search functionality
  • 🦆 DuckDuckGo - DuckDuckGo search engine
  • 🔎 BingSearch - Microsoft Bing search
  • 😍 GoogleTrends - Google Trends data analysis
  • 🎓 GoogleScholar - Google Scholar academic search
  • 📍 GooglePlaces - Google Places API integration
  • 🧳 GoogleJobs - Google Jobs search
  • 💰 GoogleFinance - Google Finance data
  • 🌐 JinaSearch - Jina AI search engine
  • 🔍 SearxSearch - SearX meta-search engine
  • 🔍 SearchApiClient - Search API client
  • 🔒 MojeekSearch - Mojeek privacy-focused search
  • 🎯 MetaphorSearch - Metaphor neural search
  • 📚 SemanticScholar - Semantic Scholar academic research
  • 🗃️ Wikidata - Wikidata structured knowledge
  • 🌍 You - You.com AI search

🤖 AI & Machine Learning Tools

  • 🤖 AzureAi - Azure AI Services
  • 🧠 AzureCognitive - Azure Cognitive Services
  • 🎤 GoogleCloudTts - Google Cloud Text-to-Speech
  • 🔊 HuggingFaceTts - HuggingFace Text-to-Speech
  • 🎨 SteamshipImage - Steamship Image Generation
  • 👁️ SceneExplain - Scene analysis and explanation
  • 🍎 PassioNutrition - Passio Nutrition AI
  • 🚀 Riza - Riza AI platform
  • 🔄 Cogniswitch - AI knowledge extraction
  • 🧪 EdenAi - Eden AI aggregation
  • 🧠 Memorize - AI memory management
  • 🎯 FewShot - Few-shot learning

💼 Business & Productivity Tools

  • 🐙 GitHub - GitHub repository management
  • 🔧 GitLab - GitLab DevOps platform
  • 🗂️ Bitbucket - Bitbucket code repository
  • GitHubActions - GitHub Actions CI/CD
  • 💬 Slack - Slack communication platform
  • 🎮 DiscordBot - Discord bot integration
  • 📅 GoogleCalendar - Google Calendar integration
  • 📁 GoogleDrive - Google Drive file management
  • 📊 Office365 - Microsoft Office 365
  • 📝 Notion - Notion workspace platform
  • 📋 Linear - Linear project management
  • 🛒 ClickUp - ClickUp project management
  • Asana - Asana task management
  • 📌 Trello - Trello project boards
  • 📌 Jira - Jira issue tracking

💰 Finance & Data Tools

  • 📈 YahooFinance - Yahoo Finance data
  • 📊 Polygon - Polygon.io financial data
  • 💹 FinancialDatasets - Financial modeling datasets
  • 💪 PowerBi - Microsoft Power BI
  • ☁️ Databricks - Databricks analytics platform
  • 🔬 E2bDataAnalysis - E2B data analysis sandbox
  • ↗️ VectorStore - Vector database operations
  • 🏆 GoldenQuery - Golden Query SQL optimization
  • 🕵️‍♀️ DataForSeo - DataForSeo SEO analytics
  • 🗣️ DataHerald - DataHerald NL to SQL

🌐 Social & Communication Tools

  • 🐦 Twitter - Twitter/X social platform
  • 📘 Facebook - Facebook social platform
  • 💼 LinkedIn - LinkedIn professional network
  • 📷 Instagram - Instagram social platform
  • 📱 WhatsApp - WhatsApp Business API
  • 🤖 TelegramBot - Telegram bot API
  • 📹 Zoom - Zoom video conferencing
  • 🎵 TikTok - TikTok social platform
  • 📌 Pinterest - Pinterest visual discovery
  • 📧 Mailchimp - Mailchimp email marketing
  • 🛍️ Shopify - Shopify e-commerce
  • 💳 Stripe - Stripe payment processing
  • 📞 TwilioSms - Twilio SMS communication
  • 📧 Gmail - Gmail email service
  • 📧 SendGrid - SendGrid email delivery

🔧 Development & Infrastructure Tools

  • 🐳 Docker - Docker containerization
  • ☸️ Kubernetes - Kubernetes orchestration
  • 🏗️ Terraform - Terraform Infrastructure as Code
  • ⚙️ Ansible - Ansible configuration management
  • ☁️ Aws - Amazon Web Services
  • 🔷 Azure - Microsoft Azure cloud
  • ☁️ GoogleCloud - Google Cloud Platform
  • 🔨 Jenkins - Jenkins CI/CD automation
  • 📊 Grafana - Grafana monitoring
  • 👽 Prometheus - Prometheus metrics
  • 🔍 Elasticsearch - Elasticsearch search engine
  • 📊 Kibana - Kibana data visualization
  • 👨‍💼 Consul - Consul service discovery
  • 🔒 Vault - Vault secret management
  • 📦 Packer - Packer infrastructure building
  • 🎯 Nomad - HashiCorp Nomad orchestration

🎨 Creative & Media Tools

  • 🎨 OpenAiDalle - OpenAI DALL-E image generation
  • 🚀 ElevenLabs - ElevenLabs voice synthesis
  • 🎵 Spotify - Spotify music platform
  • 📺 YouTubeSearch - YouTube search
  • 📚 GoogleBooks - Google Books search
  • 📖 MerriamWebster - Merriam-Webster dictionary
  • 🚀 Nasa - NASA API data access
  • 🎨 Figma - Figma design platform
  • 🎮 Steam - Steam gaming platform

🔐 Security & Workflow Tools

  • 💳 PayPal - PayPal payment processing
  • 📊 HubSpot - HubSpot CRM
  • 💰 Salesforce - Salesforce CRM
  • 📋 Airtable - Airtable database
  • 💾 Dropbox - Dropbox file storage
  • ☁️ OneDrive - OneDrive file storage
  • 🛡️ ZenGuard - ZenGuard cybersecurity
  • 👆 Interaction - User interaction tracking
  • 🔄 Connery - Workflow automation
  • 🔄 Zapier - Zapier workflow automation
  • 🔄 IFTTT - IFTTT automation

📱 Specialized Services

  • 👤 HumanInput - Human input collection
  • 📁 FileManagement - File system operations
  • 💻 Shell - Shell command execution
  • 🌐 HttpRequests - HTTP request handling
  • ⚙️ JsonTools - JSON data manipulation
  • 🗄️ SqlDatabase - SQL database operations
  • 🎭 PlaywrightBrowser - Browser automation
  • 📄 ArXiv - ArXiv paper search
  • 🛜 PubMed - PubMed medical research
  • 🔍 RedditSearch - Reddit search
  • 💬 StackExchange - StackExchange Q&A
  • 💡 GoogleSerper - Google Search via Serper
  • 📰 AskNews - AskNews news aggregation
  • 🐻 Bearly - Bearly AI content analysis
  • 🗃️ Nuclia - Nuclia knowledge base
  • 📋 OpenApiClient - OpenAPI specification client
  • 🎨 GoogleLens - Google Lens image analysis
  • ☁️ OpenWeatherMap - OpenWeatherMap weather data
  • 🛫 AmadeusTravel - Amadeus travel booking API

📊 Analytics & Monitoring Tools

  • 🐶 Datadog - Datadog monitoring
  • 📈 NewRelic - New Relic APM
  • 🚨 Sentry - Sentry error tracking
  • 🎨 Render - Render deployment platform

@carsonbot carsonbot changed the title feat(agent): add various tools for enhanced functionality feat(agent): add various tools for enhanced functionality Sep 12, 2025
@matyo91 matyo91 force-pushed the agent/add-tools branch 2 times, most recently from 1f306fa to f9872b4 Compare September 12, 2025 11:54
public function __invoke(
#[With(maximum: 500)]
string $query,
int $maxResults = 10,
Copy link
Contributor

Choose a reason for hiding this comment

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

minimum 1?

* }>
*/
public function __invoke(
#[With(maximum: 500)]
Copy link
Contributor

Choose a reason for hiding this comment

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

maximum length? in this case maximum is not right

@OskarStark
Copy link
Contributor

We need tests, but before I would like to discuss with @chr-hertel how to proceed with so many new tools

@matyo91 matyo91 force-pushed the agent/add-tools branch 3 times, most recently from 00968a5 to 0f17e4a Compare September 12, 2025 12:04
@chr-hertel
Copy link
Member

chr-hertel commented Sep 12, 2025

oh wow, @matyo91, this scares me :D i mean it's great, but how did you ensure all of the implementations work or is it just vibe coded?

Edit: Oh, you wrote "Tools are not tested" ... sorry

@chr-hertel chr-hertel added the Hackathon 2025 This issue or pull request was part of the Symfony AI Hackathon 2025 label Sep 12, 2025
@matyo91
Copy link
Contributor Author

matyo91 commented Sep 12, 2025

oh wow, @matyo91, this scares me :D i mean it's great, but how did you ensure all of the implementations work or is it just vibe coded?

Edit: Oh, you wrote "Tools are not tested" ... sorry

Sure, it's vibe coding implemented : transliterated from Typescript to Symfony

@matyo91 matyo91 force-pushed the agent/add-tools branch 2 times, most recently from afd74ce to 4de8d4f Compare September 12, 2025 12:11
Comment on lines 59 to 63
file_put_contents($scriptPath, $script);

// Execute the Playwright script using exec
$command = "npx playwright test " . escapeshellarg($scriptPath) . " 2>&1";
$output = [];
$returnCode = 0;
exec($command, $output, $returnCode);

// Clean up
unlink($scriptPath);
Copy link
Member

Choose a reason for hiding this comment

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

This is not really the Symfony's standard when it comes to run an external process.
If same code exist among other added tools, I think it would be better to rethink the way we should to provide tools (and/or necessary code (boilerplate, helpers…) to let users create their own tools).

WDYT @OskarStark @chr-hertel?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Copy link
Member

Choose a reason for hiding this comment

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

And probably many other ones. But, unfortunately, we don't have the human bandwidth to review such a PR with ~20k changes.

@matyo91 matyo91 force-pushed the agent/add-tools branch 2 times, most recently from dd1f6ed to 6218e58 Compare September 12, 2025 12:21
@welcoMattic
Copy link
Member

By putting a little aside, I would like brainstorm about what Symfony AI could provide to users to built their own tools easily.
Tools are mainly about:

  • Make external HTTP requests
  • Call external binaries
  • Trigger PHP code execution (or more precisely Symfony Commands)
  • ?

Based on this list, I'm convinced that it would worth it to provide useful helpers, abstract class, or starter kit, call it whatever you want, instead of providing an endless list of tools that will quickly become unmaintainable and uncoverable with tests.

For these reasons, I would close this PR in favor of an RFC issue to discuss how improve the DX of building Tools.

@matyo91
Copy link
Contributor Author

matyo91 commented Sep 12, 2025

Ok @welcoMattic the PR could last for history and adapted in the futur to the new setup structure

*/
public function __invoke(
string $pageId,
#[With(maximum: 63206)]
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we ned to use public ?int $maxLength = null, here same for other length checks

@matyo91 matyo91 force-pushed the agent/add-tools branch 4 times, most recently from f4f9370 to e12faef Compare September 12, 2025 12:42
@matyo91 matyo91 force-pushed the agent/add-tools branch 7 times, most recently from ce45c4c to 72f5146 Compare September 12, 2025 13:26
@OskarStark OskarStark changed the title feat(agent): add various tools for enhanced functionality [Agent] Add various tools for enhanced functionality Sep 12, 2025
@matyo91 matyo91 force-pushed the agent/add-tools branch 2 times, most recently from 350d348 to ebb01c9 Compare September 12, 2025 14:16
@matyo91 matyo91 force-pushed the agent/add-tools branch 5 times, most recently from 7228f92 to a78c09d Compare September 12, 2025 15:31
@VincentLanglet
Copy link
Contributor

We need tests, but before I would like to discuss with @chr-hertel how to proceed with so many new tools

This PR gives a great overview ; but I assume, if accepted, tool should be added one by one in separated PR for easier review/tests (?)

@OskarStark
Copy link
Contributor

Yes only one by one with example, tests and correct response fixtures from these apis

@aszenz
Copy link

aszenz commented Sep 13, 2025

Just an opinion from my side.

A lot of these tools are already exposed as MCP servers (either official/community), for the discovery and registration of these tools, MCP registries are popping up everywhere so I'm a bit sceptical of adding / maintaining code based tools here.

Not sure how good MCP integration is on the agent , can it already use MCP tools if not that might be a better idea than redefining tools already defined elsewhere.

@chr-hertel
Copy link
Member

My point of view is that I wouldn't integrate tools without real tests and a working example.
I see value in this PR and having a lot of integrations out of the box. From a infra/runtime point of view, integrating a MCP client into the Agent is not the same. Besides the fact, that we don't have a MCP client integration for the Agent yet.

So thanks @matyo91 for your impulse and work here - i guess we can use it as reference/blue print/starting point for dedicated PRs per tool and integration.

I'm fine with keeping this as a draft for now, or closing it. your call.

@aszenz
Copy link

aszenz commented Sep 13, 2025

From a infra/runtime point of view, integrating a MCP client into the Agent is not the same.

You're right about stdio-based MCP servers requiring different runtime infrastructure. However, the landscape is shifting toward remote HTTP-based MCP servers.

So from a runtime perspective, both are just HTTP calls from your agent - no additional processes to manage.

Major SaaS companies are already providing hosted MCP servers: GitHub, Stripe, Linear, Asana, Atlassian, PayPal, Intercom, and others have launched remote servers.

Manual tools still have their place for services without MCP servers (Wikipedia, internal APIs, etc.) or when you need maximum control over the integration.

The infrastructure argument against MCP made sense when it meant managing separate processes, but with hosted servers, it's becoming the easier path for major SaaS integrations.

@matyo91
Copy link
Contributor Author

matyo91 commented Sep 14, 2025

However, the landscape is shifting toward remote HTTP-based MCP servers.

Interesting, If there is a way to make mcp tools auto discoverable then there is a way to implement plenty of them just by providing a url.

I did an example to dynamically generate tools. This time it was provided by an api that list endpoints calls https://github.com/matyo91/composio-mcp

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature New feature Hackathon 2025 This issue or pull request was part of the Symfony AI Hackathon 2025 Status: Needs Review
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Agent] Add tools for 3rd party integration
7 participants