diff --git a/developer-guides/llm-sdks-and-frameworks/elevenagents.mdx b/developer-guides/llm-sdks-and-frameworks/elevenagents.mdx new file mode 100644 index 00000000..213e7f35 --- /dev/null +++ b/developer-guides/llm-sdks-and-frameworks/elevenagents.mdx @@ -0,0 +1,157 @@ +--- +title: "ElevenAgents" +description: "Give ElevenLabs voice and chat agents real-time web access with Firecrawl" +og:title: "ElevenAgents | Firecrawl" +og:description: "Give ElevenLabs voice and chat agents real-time web access with Firecrawl" +--- + +Give your [ElevenAgents](https://elevenlabs.io/agents) voice and chat agents the ability to scrape, search, and crawl the web in real time using Firecrawl. This guide covers two integration paths: + +1. **MCP server** — connect the hosted Firecrawl MCP server for zero-code setup. +2. **Server webhook tool** — point a custom tool at Firecrawl's REST API for full control over requests. + +## Prerequisites + +- An [ElevenLabs](https://elevenlabs.io) account with access to ElevenAgents +- A Firecrawl API key from your [firecrawl.dev dashboard](https://firecrawl.dev) + +## 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 + +1. Open the [MCP server integrations dashboard](https://elevenlabs.io/app/agents/integrations) in ElevenLabs and click **Add Custom MCP Server**. +2. 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` | + +Replace `YOUR_FIRECRAWL_API_KEY` with your actual key. Treat this URL as a secret — it +contains your API key. + +3. 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 + +1. Create or open an agent in the [ElevenAgents dashboard](https://elevenlabs.io/app/agents). +2. In the **Agent** tab, scroll to **Tools** and click **Add Tool**. +3. Select the **Firecrawl** MCP server you just created. +4. 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: + +```text +You are a helpful research assistant. When the user asks about a website, +a company, or any topic that requires up-to-date information, use the +Firecrawl tools to search the web or scrape the relevant page, then +summarize the results. +``` + +### 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. + +1. In your agent settings, click **Add Tool** and select **Webhook**. +2. 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` | + +3. Add a **header** for authentication: + +| Header | Type | Value | +| --- | --- | --- | +| `Authorization` | Secret | `Bearer YOUR_FIRECRAWL_API_KEY` | + +Store the API key as a workspace secret for security. + +4. Add a **body parameter**: + +| Parameter | Type | Description | Required | +| --- | --- | --- | --- | +| `url` | string | The URL to scrape | Yes | + +The Firecrawl API returns the page content as markdown by default. The agent receives the JSON response and can use the `markdown` field to answer questions. + +### Search tool + +Create a tool that searches the web and returns results with scraped content. + +1. 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` | + +2. Add the same `Authorization` header as above. + +3. 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 + +```text +You are a knowledgeable assistant with access to web tools. + +- Use `scrape_website` when the user gives you a specific URL to read. +- Use `search_web` when the user asks a general question that requires + finding information online. + +Always summarize the information concisely and cite the source URL. +``` + +### 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: true` in 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. + +## Resources + +- [ElevenAgents documentation](https://elevenlabs.io/docs/eleven-agents/overview) +- [ElevenAgents tools overview](https://elevenlabs.io/docs/eleven-agents/customization/tools) +- [ElevenAgents MCP integration](https://elevenlabs.io/docs/eleven-agents/customization/tools/mcp) +- [Firecrawl API reference](https://docs.firecrawl.dev/api-reference/v2-introduction) +- [Firecrawl MCP server](https://docs.firecrawl.dev/mcp-server) diff --git a/docs.json b/docs.json index 626845a7..9dca670e 100755 --- a/docs.json +++ b/docs.json @@ -112,7 +112,8 @@ "developer-guides/llm-sdks-and-frameworks/langchain", "developer-guides/llm-sdks-and-frameworks/langgraph", "developer-guides/llm-sdks-and-frameworks/llamaindex", - "developer-guides/llm-sdks-and-frameworks/mastra" + "developer-guides/llm-sdks-and-frameworks/mastra", + "developer-guides/llm-sdks-and-frameworks/elevenagents" ] }, {