Skip to main content
Glama

ShallowCodeResearch_agent_web_search

Perform web searches to retrieve results with summaries and URLs for research purposes within the MCP Hub research assistant workflow.

Instructions

Wrapper for WebSearchAgent to perform web searches. Returns: Web search results with summaries and URLs

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryNoThe search query to execute

Implementation Reference

  • app.py:738-748 (handler)
    Handler function exposed as MCP tool that delegates to WebSearchAgent.search for performing web searches via Tavily API.
    def agent_web_search(query: str) -> dict:
        """
        Wrapper for WebSearchAgent to perform web searches.
    
        Args:
            query (str): The search query to execute
    
        Returns:
            dict: Web search results with summaries and URLs
        """
        return web_search.search(query)
  • app.py:979-987 (registration)
    Gradio Interface that registers the agent_web_search handler as an MCP tool with api_name 'agent_web_search_service', likely prefixed to 'ShallowCodeResearch_agent_web_search' in the HF space.
    with gr.Tab("Agent: Web Search", scale=1):
        gr.Interface(
            fn=agent_web_search,
            inputs=[gr.Textbox(label="Search Query", placeholder="Enter search term…", lines=12)],
            outputs=gr.JSON(label="Web Search Results (Tavily)", height=305),
            title="Web Search Agent",
            description="Perform a Tavily web search with configurable result limits.",
            api_name="agent_web_search_service",
        )
  • The core WebSearchAgent.search method implementing the Tavily web search logic with decorators for performance tracking, retry, rate limiting, circuit breaking, and caching.
    @track_performance(operation_name="web_search")
    @retry_sync(**RetryConfig.SEARCH_API)
    @rate_limited("tavily")
    @circuit_protected("tavily")
    @cached(ttl=600)  # Cache for 10 minutes
    def search(self, query: str) -> Dict[str, Any]:
        """
        Perform a web search using the Tavily API to gather internet information.
    
        Executes a synchronous web search with the specified query and returns
        structured results including search summaries, URLs, and content snippets.
        Results are cached for performance optimization.
    
        Args:
            query (str): The search query string to look up on the web
    
        Returns:
            Dict[str, Any]: A dictionary containing search results, summaries, and metadata
                           or error information if the search fails
        """
        try:
            validate_non_empty_string(query, "Search query")
            logger.info(f"Performing web search: {query}")
    
            response = self.client.search(
                query=query,
                search_depth="basic",
                max_results=app_config.max_search_results,
                include_answer=True
            )
    
            logger.info(f"Search completed, found {len(response.get('results', []))} results")
            return {
                "query": response.get("query", query),
                "tavily_answer": response.get("answer"),
                "results": response.get("results", []),
                "data_source": "Tavily Search API",
            }
    
        except ValidationError as e:
            logger.error(f"Web search validation failed: {str(e)}")
            return {"error": str(e), "query": query, "results": []}
        except Exception as e:
            logger.error(f"Web search failed: {str(e)}")
            return {"error": f"Tavily API Error: {str(e)}", "query": query, "results": []}
  • Instantiation of the WebSearchAgent instance used by the handler.
    question_enhancer = QuestionEnhancerAgent()
    web_search = WebSearchAgent()
    llm_processor = LLMProcessorAgent()
    citation_formatter = CitationFormatterAgent()
    code_generator = CodeGeneratorAgent()
    code_runner = CodeRunnerAgent()
  • app.py:1234-1240 (registration)
    Gradio app launch with mcp_server=True, enabling MCP protocol exposure of all registered tools including the web search agent.
    hub.launch(
        mcp_server=True,
        server_name="0.0.0.0",
        server_port=7860,
        show_error=True,
        share=True
    )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CodeHalwell/gradio-mcp-agent-hack'

If you have feedback or need assistance with the MCP directory API, please join our Discord server