- MCP server — connect the hosted Firecrawl MCP server for zero-code setup.
- Server webhook tool — point a custom tool at Firecrawl’s REST API for full control over requests.
Prerequisites
- An ElevenLabs account with access to ElevenAgents
- A Firecrawl API key from your firecrawl.dev dashboard
Option 1: Firecrawl MCP Server
The fastest way to give an agent web access. ElevenAgents supports remote MCP servers over SSE, and Firecrawl provides a hosted MCP endpoint.Add the MCP server
- Open the MCP server integrations dashboard in ElevenLabs and click Add Custom MCP Server.
- Fill in the following fields:
| Field | Value |
|---|---|
| Name | Firecrawl |
| Description | Search, scrape, crawl, and extract content from any website. |
| Server URL | https://mcp.firecrawl.dev/YOUR_FIRECRAWL_API_KEY/v2/mcp |
YOUR_FIRECRAWL_API_KEY with your actual key. Treat this URL as a secret — it
contains your API key.
- Click Add Integration. ElevenLabs will connect to the server and list the available tools (scrape, search, crawl, map, and more).
Attach it to an agent
- Create or open an agent in the ElevenAgents dashboard.
- In the Agent tab, scroll to Tools and click Add Tool.
- Select the Firecrawl MCP server you just created.
- Choose an approval mode. For read-only scraping, No Approval is fine. For tools that crawl large sites, consider Fine-Grained Tool Approval so the agent asks before kicking off expensive operations.
Update the system prompt
Add instructions so the agent knows when to use Firecrawl. For example:Test it
Press Test AI agent and try a prompt like:“What does firecrawl.dev do? Go to the site and summarize it for me.”The agent will call the Firecrawl MCP
scrape tool, receive the page markdown, and respond with a spoken summary.
Option 2: Server Webhook Tool
Use this approach when you need precise control over request parameters (formats, headers, timeouts, etc.) or want to call a specific Firecrawl endpoint without exposing the full MCP tool set.Scrape tool
Create a tool that scrapes a single URL and returns its content as markdown.- In your agent settings, click Add Tool and select Webhook.
- Configure the tool:
| Field | Value |
|---|---|
| Name | scrape_website |
| Description | Scrape content from a URL and return it as clean markdown. |
| Method | POST |
| URL | https://api.firecrawl.dev/v1/scrape |
- Add a header for authentication:
| Header | Type | Value |
|---|---|---|
Authorization | Secret | Bearer YOUR_FIRECRAWL_API_KEY |
- Add a body parameter:
| Parameter | Type | Description | Required |
|---|---|---|---|
url | string | The URL to scrape | Yes |
markdown field to answer questions.
Search tool
Create a tool that searches the web and returns results with scraped content.- Add another Webhook tool with:
| Field | Value |
|---|---|
| Name | search_web |
| Description | Search the web for a query and return relevant results with page content. |
| Method | POST |
| URL | https://api.firecrawl.dev/v1/search |
-
Add the same
Authorizationheader as above. - Add body parameters:
| Parameter | Type | Description | Required |
|---|---|---|---|
query | string | The search query | Yes |
limit | number | Maximum number of results to return (default 5) | No |
Update the system prompt
Test it
Try asking:“Search for the latest Next.js features and give me a summary.”The agent will call
search_web, receive results from Firecrawl, and respond with a spoken summary of the findings.
Tips
- Model selection — ElevenLabs recommends high-intelligence models (GPT-4o mini, Claude 3.5 Sonnet, or later) for reliable tool calling. Smaller models may struggle to extract the correct parameters.
- Keep prompts specific — Tell the agent exactly when to use each tool. Vague instructions lead to missed or incorrect tool calls.
- Limit response size — For voice agents, long scraped pages can overwhelm the LLM context. Use
onlyMainContent: truein scrape options (or instruct the agent to summarize aggressively) to keep responses concise. - Tool call sounds — ElevenLabs lets you add ambient audio while a tool runs. This is useful for scrape calls that take a moment — it signals to the user that the agent is working.

