A collection of AI agent and assistant projects using various frameworks including CrewAI, LangChain, and OpenAI APIs. Contains multiple agents, assistants, demos, and educational projects focused on agentic AI workflows.
Two tools have placeholder names ('Name of my tool') indicating incomplete development or copy-paste errors. Tool names must be specific action verbs (verb_noun format) to help LLMs understand intent without reading descriptions.
Name of my tool (Financial Researcher)Name of my tool (AI Engineer Team)
Tool 'internet_search' has no visible input schema in source code. Tavily tool signature not shown. LLMs cannot determine what parameters this tool accepts.
Tool naming inconsistency: 'python_interperter' is misspelled (should be 'python_interpreter'). This ambiguity can cause LLMs to misroute or fail to invoke the tool reliably.
Tool 'Send a Push Notification' violates naming convention. Should use snake_case verb_noun format (e.g., 'send_push_notification'). Multi-word names with spaces are not standard MCP tool names.
Send a Push Notification
Recommendations
Replace both 'Name of my tool' placeholders with specific, action-verb names reflecting what the tools actually do (e.g., 'search_market_data', 'validate_system_config'). Follow verb_noun format strictly.
Fix spelling: rename 'python_interperter' to 'python_interpreter'. Test all tool names for typos and consistency.
Rename 'Send a Push Notification' to 'send_push_notification' to match MCP naming conventions (snake_case verb_noun).
Expand all descriptions to 50-200 characters. Include WHAT the tool does, WHEN to call it (vs similar tools), and any prerequisites. Example: 'internet_search: Search the web for current information about a topic. Use this when you need real-time data beyond your training knowledge. Returns top 5 results with titles, snippets, and URLs.'
Document output schemas for every tool. Specify return type (string, object, array), required fields, and data types. Example for save_market_insights: 'Returns {success: boolean, filepath: string, message: string}'.
Add parameter descriptions for tools missing them. For 'play_music', document: artist (string, required: name of artist), song (string, required: title of song). Include valid value ranges if applicable.
For 'python_interperter', add comprehensive safety documentation: list allowed imports, timeout (e.g., 30 seconds), available filesystem paths, and what's blocked (e.g., network calls, system() calls). Or remove this tool if unrestricted code execution is intended.
No output schemas documented for any tool. LLMs cannot know what fields to expect in responses, making chaining and data extraction error-prone. Responses appear to be free-form strings in most cases.
internet_searchpython_interperterset_thermostatturn_light_onplay_musicdefine_research_questionsanalyze_competitorsgenerate_product_reportSend a Push Notification
Tool 'python_interperter' allows arbitrary code execution with no constraints. Description mentions 'static sandbox' but provides no details on what's blocked, timeout policies, or available libraries. This is DESTRUCTIVE risk with no safety guardrails documented.
No error handling guidance. Tools return success strings but no documentation on failure modes, retry policies, or recovery actions. LLMs cannot determine if errors are transient or permanent.
set_thermostatturn_light_onplay_musicsave_market_insightsSend a Push Notification
No parameter descriptions for several tools. 'play_music' has parameters 'artist' and 'song' with no descriptions in source. LLMs cannot determine expected formats or constraints.
Not an MCP server. This is a repository of example LLM applications using CrewAI, LangChain, and custom decorators. No MCP server skeleton, no tool registry, no protocol handlers detected. Tools cannot be invoked via MCP protocol.
All tools
Implement the repository as an actual MCP server using the mcp Python SDK. Create a server.py that registers all 12 tools with proper schemas, descriptions, and error handling. Use HTTP or SSE transport for MCP client compatibility.
Add parameter validation constraints: numeric ranges (e.g., brightness 1-100), enums (e.g., room names), and formats (e.g., filename sanitization for save_market_insights). Reject invalid input with actionable error messages.
For discovery tools (define_research_questions, analyze_competitors), clarify how results should be used downstream. Example: 'Returns a list of questions as strings. Pass the complete list to generate_product_report for synthesis.'
Audit all tool dependencies. Document required API keys (SerperAPI, OpenAI, Tavily), and ensure they are injected server-side, not exposed as parameters.
Add pagination support to tools that could return large result sets (e.g., analyze_competitors, internet_search). Parameters: limit (default 20, max 100), offset. Return total_count for proper chaining.