# How to connect Firecrawl to Hermes Agent (paste one key, 29 tools)

> Connect Firecrawl to Hermes with ClawLink: paste your Firecrawl key once and 29 tools work from chat. No MCP server to run, nothing stored on your machine.

Web version: https://claw-link.dev/hermes/firecrawl

Most guides for giving Hermes Agent Firecrawl access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical Firecrawl setup: pair once in the browser and your always-on Hermes agent can act on Firecrawl for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

**Start here — paste this into Hermes to set up ClawLink:**

> Set up ClawLink for Hermes and tell me when it's ready.
> 1. Install the plugin: `hermes plugins install ClawLink-HQ/hermes-plugin --enable`
> 2. Start pairing with `hermes clawlink begin`. It prints an approval link, so show me the link and stop, don't wait.
> 3. I'll approve it in my browser, then reply "approved".
> 4. When I say approved, finish setup: `hermes clawlink finish`
> 5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

## Setup

It takes three steps to connect Hermes to Firecrawl.

1. **Install ClawLink** — add the plugin to Hermes Agent once.
2. **Connect Firecrawl** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask Hermes Agent in plain English.

**Alternative for any agent (no plugin needed):** if the Hermes Agent plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect firecrawl  # connect Firecrawl (browser OAuth)
npx -y @useclawlink/cli actions firecrawl  # list available actions
npx -y @useclawlink/cli run firecrawl <action> --input '<json>'  # execute (add --confirm for writes)
```

### Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

```bash
hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test
```

Then connect Firecrawl in the [ClawLink dashboard](https://claw-link.dev/dashboard) — paste your Firecrawl API key once.

Verify the connection by asking Hermes:

> Run firecrawl_credit_usage_get first and tell me the team credit state, then scrape \<url> with firecrawl_scrape and summarize the main content in under 300 words.

### Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once Firecrawl is connected in the dashboard, that agent calls the same 29 Firecrawl tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## Firecrawl MCP for Hermes

Looking for a Firecrawl MCP server for Hermes Agent? ClawLink connects Firecrawl to Hermes Agent and exposes 29 Firecrawl tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using OpenClaw instead? The [OpenClaw Firecrawl integration](https://claw-link.dev/openclaw/firecrawl) works the same way.

Search results for connecting Firecrawl to Hermes mostly describe a different Hermes than this page. They mean Nous Research's Hermes Agent, configured with `FIRECRAWL_API_KEY` in `~/.hermes/.env` and `hermes setup tools`. This page is for Hermes Agent as the CLI agent from the OpenClaw family, the one that pairs through `hermes plugins install` and `hermes clawlink begin`, and it connects Firecrawl with one pasted key instead of an environment file. And that key has a new competitor: Firecrawl Keyless, Firecrawl's own no-key mode, which gives every account 1,000 free credits a month with agents self-onboarding. Keyless is real and it is free, but it is a capped tier: a monthly credit grant, a rate-limited surface, and features gated behind the paid product. The 29 tools here run on your own Firecrawl key and balance, so a scrape-heavy agent is not capped by the free grant, and the key lives server-side rather than in a file on your machine.

## What the Hermes Agent Firecrawl integration can do

29 Firecrawl tools are ready for Hermes Agent once the account is connected. The 28 below are the ones people reach for most; your agent can call all 29.

### 28 of 29 Firecrawl tools for Hermes

| Tool | What it does |
|---|---|
| **Batch scrape** `firecrawl_batch_scrape` | Scrape multiple URLs in batch with concurrent processing |
| **Batch scrape cancel** `firecrawl_batch_scrape_cancel` | Cancel a running batch scrape job |
| **Crawl** `firecrawl_crawl` | Initiate a web crawl from a given URL with filtering and extraction rules |
| **Crawl cancel** `firecrawl_crawl_cancel` | Cancel an active or queued web crawl job |
| **Crawl get** `firecrawl_crawl_get` | Retrieve the status and results of a crawl job |
| **Crawl v2** `firecrawl_crawl_v2` | Initiate a Firecrawl v2 web crawl with enhanced features and natural language configuration |
| **Credit usage get** `firecrawl_credit_usage_get` | Get current team credit usage information |
| **Extract** `firecrawl_extract` | Extract structured data from web pages using natural language or a JSON schema |
| **Extract get** `firecrawl_extract_get` | Retrieve the status and results of an extract job |
| **Get agent status** `firecrawl_get_agent_status` | Get the status and results of an agent job |
| **Llms txt generate** `firecrawl_llms_txt_generate` | Generate an LLMs.txt file for a website |
| **Map multiple URLS based on options** `firecrawl_map_multiple_urls_based_on_options` | Map a website by discovering URLs from a starting base URL |
| **Scrape** `firecrawl_scrape` | Scrape a publicly accessible URL and retrieve content in specified formats |
| **Search** `firecrawl_search` | Search the web and scrape content from top results |
| **Start agent** `firecrawl_start_agent` | Start an agent job for agentic web extraction with multi-page navigation |
| **Batch scrape get** `firecrawl_batch_scrape_get` | Retrieves the current status and results of a batch scrape job using the job ID |
| **Batch scrape get errors** `firecrawl_batch_scrape_get_errors` | Retrieve error details from a batch scrape job, including failed URLs and URLs blocked by |
| **Crawl get errors** `firecrawl_crawl_get_errors` | Retrieve errors from a Firecrawl crawl job |
| **Crawl list active** `firecrawl_crawl_list_active` | Retrieve all active crawl jobs for the authenticated team |
| **Crawl params preview** `firecrawl_crawl_params_preview` | Preview crawl parameters before starting a crawl by generating optimal configuration from |
| **Credit usage get historical** `firecrawl_credit_usage_get_historical` | Retrieve historical team credit usage on a monthly basis |
| **Get deep research status** `firecrawl_get_deep_research_status` | Retrieves the status and results of a deep research job by its ID |
| **Get the status of a crawl job** `firecrawl_get_the_status_of_a_crawl_job` | Retrieves the current status, progress, and details of a web crawl job, using the job ID |
| **Llms txt get** `firecrawl_llms_txt_get` | Get the status and results of an LLMs.txt generation job |
| **Queue get** `firecrawl_queue_get` | Retrieve metrics about the team's scrape queue |
| **Token usage get** `firecrawl_token_usage_get` | Retrieve the current team's token usage and balance information for Firecrawl's Extract feature |
| **Token usage get historical** `firecrawl_token_usage_get_historical` | Retrieve historical team token usage on a monthly basis |
| **Agent cancel** `firecrawl_agent_cancel` | Cancel an in-progress agent job by its ID |

## Example prompts

**Check the budget first**

> Run firecrawl_credit_usage_get first and tell me the team credit state, then scrape \<url> with firecrawl_scrape and summarize the main content in under 300 words.

**Search and extract**

> Use firecrawl_search for \<query> with a max_results of 10, then summarize what the top results say and give me the URLs so I can follow up.

**Structured extraction**

> Use firecrawl_extract on \<url> with a schema for product name, price, and availability. If the extraction fails, quote the error and which field broke it.

**Crawl a site map**

> Run firecrawl_map_multiple_urls_based_on_options on \<domain> with maxUrls 50 and show me the URL tree grouped by path. Do not start a crawl yet.

## How the Firecrawl tools behave

Details that decide whether a Firecrawl prompt is a cheap answer or a credit-burning job.

- **Credits are the currency, and the agent can read its own balance.** `firecrawl_credit_usage_get` reports the team's remaining credits, and `firecrawl_token_usage_get` reports the Extract token balance. Put a credit check before any large job in the prompt.
- **Crawl and batch are job-shaped, not request-shaped.** `firecrawl_crawl`, `firecrawl_crawl_v2`, and `firecrawl_batch_scrape` return job ids; results are fetched with `firecrawl_crawl_get` and `firecrawl_batch_scrape_get`. An agent that waits synchronously for a big crawl will stall.
- **Job errors are readable.** `firecrawl_crawl_get_errors` and `firecrawl_batch_scrape_get_errors` return which URLs failed and why, which turns "the crawl failed" into a list.
- **Extract takes a schema or natural language.** `firecrawl_extract` accepts a JSON schema or a natural-language description of the data; a schema returns consistent fields, plain language returns whatever the model decides, so the schema is the reliable shape for structured data.
- **Cancellation exists.** `firecrawl_crawl_cancel` and `firecrawl_batch_scrape_cancel` stop running jobs, which is the correct response to an agent that started a job too big, not waiting for it to finish.
- **The agent surface exists in the tool set.** `firecrawl_start_agent` and `firecrawl_get_agent_status` run multi-page agentic extraction; `firecrawl_get_deep_research_status` monitors deep research jobs. These are the credit-heavy tools, so they want explicit permission in the prompt.

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual API key setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Firecrawl working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Credential handling** | Collect, validate, store, and rotate the Firecrawl API key yourself, then make sure every tool call uses the right account. | Users complete the hosted ClawLink setup once and the connected Firecrawl account becomes available to the agent without you building credential management. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for Firecrawl. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right Firecrawl actions to the runtime in a format your agent can reliably use. | 29 tools for Firecrawl are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes Firecrawl to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect Firecrawl in the browser, and the 29 tools above work from chat. There is no SDK and no config file, and the Firecrawl key you paste at setup is stored server-side rather than kept in your environment. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### Hermes paired but still can't use Firecrawl
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

### Connection succeeds but no tools appear
Reconnect Firecrawl from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling Firecrawl tools
Firecrawl tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Firecrawl call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### Firecrawl returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### Firecrawl returns 403 or "insufficient permissions" although the account shows as connected
Search results teach three causes for this provider, and they are all real against a hosted connection. The first is the key itself: Firecrawl expects it as a Bearer token, and a key that is invalid, missing, or regenerated after setup fails everything from that moment, so re-paste the current key from the dashboard. The second is the account's credit or plan state: out of monthly credits, or a request that needs an endpoint the current plan does not include, both surface as a permissions-shaped error. The third is the target site: Firecrawl being blocked by the site it is trying to scrape reads as a 403 from the outside. The hosted-flow causes remain on top of those: a placeholder argument such as YOUR_ID reaching the API literally, and a stale connected account. The agent should quote the full error and which URL it was scraping before you change anything.

Ask the agent to diagnose it:

```text
Run firecrawl_credit_usage_get and tell me the team credit state, then quote the exact error from the failed call including which URL was involved. Do not retry it yet.
```

### Firecrawl calls start failing or the agent reports being rate-limited
Firecrawl rate-limits its API and the limit interacts with the account's credit tier, and an agent that crawls aggressively is exactly the traffic shape that meets it. Keyless connections hit the capped tier fastest, which is the practical limit of the no-key route. The response is to change the shape of the work: one crawl job with clear filtering instead of many scrape calls, `firecrawl_batch_scrape` instead of a loop of single scrapes, and a check of `firecrawl_credit_usage_get` before a large job. Waiting a few minutes and retrying the same shape usually produces the same result.

Ask the agent to diagnose it:

```text
Tell me how many Firecrawl calls you made in the last few minutes and what the crawl pattern was. Quote the exact error text. Do not call Firecrawl again until I reply.
```

### Firecrawl tools are missing, or one tool name is not found
Two failures share this symptom. If no Firecrawl tools appear at all, the connection or pairing is incomplete: confirm the plugin was installed with --enable, that `hermes clawlink begin` and `hermes clawlink finish` both ran, and that Firecrawl shows as connected in the dashboard. If most tools work and one name fails, the name is wrong rather than missing, and the error lists the closest real ones. There is also a first-call timing case: schemas load on demand, so the opening Firecrawl call in a fresh session can arrive before the catalog and needs one retry. The frame search results teach for this symptom, an MCP init failure in a client's `mcpServers` JSON, does not apply to a hosted setup with no local server.

Ask the agent to diagnose it:

```text
List the Firecrawl tools you actually have access to. If there are none, say so plainly and tell me whether Firecrawl shows as connected. Do not guess tool names.
```

### API key setup works but results look incomplete
Double-check that the API key for Firecrawl has the right scopes or account access. A valid key can still be too limited for some reads or writes.

### Is there a Hermes Agent Firecrawl integration?
Yes. ClawLink is the fastest way to connect Hermes to Firecrawl: link your Firecrawl account once in the browser and Hermes Agent can call the Firecrawl API through 29 ready-made tools — no custom code or token handling.

### How do I connect Firecrawl to Hermes with ClawLink?
Install the plugin with `hermes plugins install ClawLink-HQ/hermes-plugin --enable`, then pair once: run `hermes clawlink begin`, approve the link in your browser, and run `hermes clawlink finish`. Connect Firecrawl in the dashboard and Hermes can use it from the next message — no config files, and the Firecrawl key you paste is stored server-side instead of in your environment.

### How long does it take to connect Firecrawl to Hermes Agent?
About two minutes. Sign in, click Connect next to Firecrawl in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

### Why use ClawLink instead of wiring Firecrawl up myself?
The alternative to ClawLink is usually manual API key setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Firecrawl working from chat.

### Why paste a key when Firecrawl Keyless exists?
Keyless is Firecrawl's no-key mode: 1,000 free credits a month, agents self-onboard, no key to copy. It is a real option and Google now teaches it as the answer to the no-key query. The tradeoffs are the tier itself: the credit grant is monthly, the mode is rate-limited, and advanced features are gated behind the paid product, which is why the free tier is not the shape for a standing agent that scrapes daily. A pasted key through ClawLink runs on your own Firecrawl balance and plan, so the monthly grant is not the ceiling, and the key is stored server-side rather than sitting in an environment file on a machine. Start with Keyless if the volume is light; connect the key when the agent outgrows it.

### Which key does this need?
A Firecrawl API key from your Firecrawl dashboard, pasted once on the hosted setup page and held server-side. It is the same key you would put in `~/.hermes/.env` in the env-file route; the difference is where it lives afterwards. Because it is server-side, rotating it in Firecrawl means updating one place, and disconnecting from the dashboard revokes the agent's use of it immediately.

### Can the agent check how many credits it has left?
Yes, which is the useful part for this provider. `firecrawl_credit_usage_get` and `firecrawl_credit_usage_get_historical` read the team's credit usage, and `firecrawl_token_usage_get` reads the token balance for the Extract feature, so the agent can report its own budget instead of guessing. That is worth putting in a prompt before any large crawl.

### What can the agent do in Firecrawl?
Scrape single pages and batches, crawl sites with filtering, extract structured data with a schema, search the web and scrape the top results, map a site's URLs, generate llms.txt files, and run agentic extraction jobs with status tracking. The crawl and batch tools are the power surface and the credit surface at once: `firecrawl_crawl` and `firecrawl_batch_scrape` are where a big job spends credits, so the credit-check tools above are the right preamble.

### Hermes paired but still can't use Firecrawl
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

## Related

- [Hermes PostHog integration](https://claw-link.dev/hermes/posthog) — Track user behavior and feature flags
- [DataforSEO tools](https://claw-link.dev/hermes/dataforseo) — SEO data APIs for keywords, SERP, and site audits
- [Metabase](https://claw-link.dev/hermes/metabase) — Metabase is an open-source business intelligence tool that lets you ask questions about your data and visualize answers as charts, graphs, and dashboards.
