Skip to main content
Glama

firecrawl_deep_research

Conduct deep web research on any query using crawling, search, and AI analysis to gather comprehensive information from multiple sources.

Instructions

Conduct deep research on a query using web crawling, search, and AI analysis.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesThe query to research
maxDepthNoMaximum depth of research iterations (1-10)
timeLimitNoTime limit in seconds (30-300)
maxUrlsNoMaximum number of URLs to analyze (1-1000)

Implementation Reference

  • Handler for firecrawl_deep_research tool. Validates input, calls client.deepResearch with query and options, logs activities and sources, returns final analysis.
    case 'firecrawl_deep_research': { if (!args || typeof args !== 'object' || !('query' in args)) { throw new Error('Invalid arguments for firecrawl_deep_research'); } try { const researchStartTime = Date.now(); server.sendLoggingMessage({ level: 'info', data: `Starting deep research for query: ${args.query}`, }); const response = await client.deepResearch( args.query as string, { maxDepth: args.maxDepth as number, timeLimit: args.timeLimit as number, maxUrls: args.maxUrls as number, }, // Activity callback (activity) => { server.sendLoggingMessage({ level: 'info', data: `Research activity: ${activity.message} (Depth: ${activity.depth})`, }); }, // Source callback (source) => { server.sendLoggingMessage({ level: 'info', data: `Research source found: ${source.url}${source.title ? ` - ${source.title}` : ''}`, }); } ); // Log performance metrics server.sendLoggingMessage({ level: 'info', data: `Deep research completed in ${Date.now() - researchStartTime}ms`, }); if (!response.success) { throw new Error(response.error || 'Deep research failed'); } // Format the results const formattedResponse = { finalAnalysis: response.data.finalAnalysis, activities: response.data.activities, sources: response.data.sources, }; return { content: [{ type: 'text', text: formattedResponse.finalAnalysis }], isError: false, }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); return { content: [{ type: 'text', text: errorMessage }], isError: true, }; } }
  • Input schema definition for the firecrawl_deep_research tool, defining parameters like query, maxDepth, timeLimit, and maxUrls.
    const DEEP_RESEARCH_TOOL: Tool = { name: 'firecrawl_deep_research', description: 'Conduct deep research on a query using web crawling, search, and AI analysis.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'The query to research', }, maxDepth: { type: 'number', description: 'Maximum depth of research iterations (1-10)', }, timeLimit: { type: 'number', description: 'Time limit in seconds (30-300)', }, maxUrls: { type: 'number', description: 'Maximum number of URLs to analyze (1-1000)', } }, required: ['query'], }, };
  • src/index.ts:862-874 (registration)
    Registration of the firecrawl_deep_research tool in the list of available tools returned by ListToolsRequestHandler.
    server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ SCRAPE_TOOL, MAP_TOOL, CRAWL_TOOL, BATCH_SCRAPE_TOOL, CHECK_BATCH_STATUS_TOOL, CHECK_CRAWL_STATUS_TOOL, SEARCH_TOOL, EXTRACT_TOOL, DEEP_RESEARCH_TOOL, ], }));

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/mcma123/firecrawl-mcp-server'

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