# Claude, Firecrawl and Copilot Studio: I Built a Web Scraping Agent

> A Copilot Studio agent running Claude, with a Firecrawl connector and an email MCP server, scraped six FDA alerts and emailed a formatted report in my test.

- URL: https://www.danielanderson.io/articles/claude-firecrawl-copilot-web-scraping/
- Author: Daniel Anderson, Microsoft MVP (https://www.danielanderson.io/)
- Published: 2025-10-20
- Updated: 2026-10-25
- Video: https://www.youtube.com/watch?v=95ikj8VisoU

## Key takeaways

- A Copilot Studio agent can scrape web pages through a custom connector built on the Firecrawl API and send the results through the Email Management MCP server, the Outlook MCP server that includes a send email tool.
- In my test, three lines of instructions were enough: the agent scraped an FDA safety alerts page, followed the links to the six alerts from the past six months and emailed an HTML report with a summary of each.
- A follow-up prompt turned one alert into an HTML table of its 10 affected products, emailed straight away, with brand, location, manufacturer, distributor, date and status columns.
- The agent added sections I hadn't asked for, such as health risks and immediate actions, so anything safety-related needs checking against the source page before it goes to anyone.
- Verdict: a quick way to build a research and reporting agent over public web pages, as long as you decide who receives the email and who checks the content before others use it.

A Copilot Studio agent running a Claude model can scrape a website, follow its links and email you a formatted report, using a Firecrawl custom connector for the scraping and the Email Management MCP server for the sending. In my test, three lines of instructions got it to pull six months of FDA safety alerts, read each alert page and send me an HTML email with a summary of every one. It worked well. It also added content I hadn't asked for, and that extra content is what I'd want a person checking.

I recorded this in October 2025 with the agent set to Claude Sonnet 4.5, Anthropic's newest Sonnet model at the time. Sonnet 4.5 has since been retired in Copilot Studio, so you'd pick one of the newer Claude models today (the FAQ below lists them).

## What did I build, and how was it set up?

The agent was partway through a bigger build, with two tools and a very short set of instructions.

- **The model.** I changed the agent's model to Claude Sonnet 4.5 in the model section of its settings. Today you'll find it under **Model** on the agent's **Overview** page.
- **A Firecrawl custom connector.** Firecrawl is a web scraping service with an API that takes a URL and returns the page content. I built a custom connector against that API so the agent could call it as a tool, passing in whatever URL the user gave it.
- **The Email Management MCP server.** This is one of the Microsoft MCP servers you can pick when you add a tool and choose **Model Context Protocol**. It brings six tools: send, reply, get, list, flag and forward email. I only needed send.
- **Three instructions.** Use the URL and prompt the user provides to scrape the page. Return the data the user asks for. Send an HTML formatted email with appropriate headings and styling.

When you add a tool, Copilot Studio offers MCP, prompts, agent flows, custom connectors and REST API. I used a custom connector for Firecrawl because its API made that quick, and an existing MCP server for email because one was already sitting in the list.

## Did it scrape and follow the links?

Yes. I gave it the FDA's safety alerts page, which lists alerts with links out to a page for each one, and asked it to get the alerts from the past six months, go to each page and return the title, the category, the date the alert was current as of, and a summary.

Claude's reasoning showed in the test pane as it went: it reported scraping the main page, worked out it needed to visit each alert page, then called the Firecrawl connector once per alert, with the time for each action shown alongside. It found six alerts in the six month window, wrote the summaries and called the MCP server to send the email. The roles split cleanly. Firecrawl fetched the pages and Claude wrote the summaries and the layout before handing the result to the MCP server to send.

The email arrived formatted, with headings, the six alerts, links back to each source page, and a key takeaways and recommendations section I hadn't asked for. I'd given it no styling guidance beyond "HTML formatted with appropriate headings and stylings".

## Could it go back and build a table from one alert?

It could. My follow-up asked for a table of all the affected products for alert number three, an alert about imported cookware. The agent went back to that page and came back with all 10 products in an HTML table, with columns for brand, location, manufacturer, distributor, date and current status, and emailed it to me.

Again it added more than I asked for: characteristics to look for, immediate actions required, health risks, important notes and where to go if you have concerns. In the video I showed the alert page and the table side by side. I didn't check every value in the extra sections against the FDA page, so I'd treat those as Claude's own write-up of the scraped content until someone has compared them with the source.

## Where I'd tighten it before anyone else uses it

Two tools and three instructions got this working in my test. These are the changes I'd make before handing an agent like this to a team.

1. **Fix who receives the email.** My instructions let the agent send an email with no confirmation step, and it went to me. Before others use it, I'd either lock the recipient to the person asking or add an instruction to show the draft and wait for a yes. The email goes out from the account behind the MCP connection, so decide whose mailbox that is.
2. **Separate the facts from the write-up.** For safety alerts, product recalls or anything regulatory, the extra sections are the risk. I'd tell the agent to quote the source for the fields that matter, keep its own commentary under a clearly labelled heading, and link every item back to its page so the reader can check.
3. **Decide which sites it may scrape.** I used a public government page. Firecrawl is a third-party service that fetches the page for you, so I'd keep this to public sites and check each site's terms before pointing it at them. For anything internal, the content is already in Microsoft 365 and Copilot can reach it without a scraper.
4. **Check the model is allowed.** Anthropic models in Copilot Studio are governed in two places. In the Microsoft 365 admin center, Anthropic is listed under **AI providers operating as Microsoft subprocessors**, on by default for most commercial tenants but off by default in the EU, EFTA and UK. Power Platform also has a setting to allow external models for generative responses. If Claude doesn't appear in the model list, check those two settings first.

If you'd rather keep this kind of job inside SharePoint, I used the Apify plugin to scrape a conference attendee page into Markdown files and a site skill in [connecting Xero and Apify to Copilot in SharePoint with plugins and MCP](https://www.danielanderson.io/articles/copilot-sharepoint-plugins-mcp-xero/). That version keeps a history of every run in a library, which suits a page you check repeatedly. The Copilot Studio agent suits a one-off research request that ends in an email.

## Frequently asked questions

**Which Claude models can I use in Copilot Studio now?**
Claude Sonnet 4.6, Claude Opus 4.6 and Claude Opus 4.7 are listed as generally available, and Sonnet 4.5, the model I used, is retired. Some Claude models are tagged cross-geo, which means data may be processed outside your region, and an admin has to allow cross-region data movement in the environment for those.

**Do I need to write code to connect Firecrawl to Copilot Studio?**
No code in the agent itself. A custom connector is defined against Firecrawl's API, with your Firecrawl API key for authentication, and then added to the agent as a tool. You do need a Firecrawl account, and each scrape counts against your Firecrawl plan, separately from anything Copilot Studio charges.

**Where do I find the Email Management MCP server?**
On the agent's **Tools** page, select **Add a tool**, then **Model Context Protocol**, and pick it from the list of available MCP connectors. Adding it brings all six of its email tools, and you authorise the connection when you select **Add and configure**.
