Muze AI
PlatformMuze MCPLiteResultsPricingTalk to SalesStart free trial

Feature

See what your competitors are running, without the scrolling.

Ad Library research is a job people do by scrolling until their eyes glaze over. Muze turns it into a tool call, stores the result, and lets your assistant read it next to your own account data.

In short

Muze competitor ad research pulls the ads a competitor is currently running from the Meta Ad Library and stores them so an AI assistant can read them. From ChatGPT, Claude or any MCP client you list tracked competitors with list_competitors, start a scrape with scrape_competitor_ads, poll it with get_scrape_status, and read the results with get_competitor_ads. The scrape is classed as a write because it starts a job, but it changes nothing in any ad account.

What it actually does

Competitor research usually decays into a browser tab that someone opens on a Monday, screenshots twice, and never opens again. The information is public. The problem is that it lives somewhere you are not working, in a format nothing can read.

Muze fixes the format problem. It tracks a set of competitors against your account, scrapes the ads they are running from the Meta Ad Library, and stores them as structured rows. Once they are stored, your assistant can read them in the same conversation where it is reading your own performance data. That is the part that changes the job: instead of comparing your ads to a competitor gallery by eye, you can ask one question and get both sides in one answer.

You are not limited to a snapshot either. Each scrape is a run, so the ads accumulate over time. An ad that has been live for months is telling you something an ad that ran for four days is not.

How it works, call by call

The flow is deliberately boring, which is what you want from something touching a live account.

Your assistant calls get_my_accounts first, because Muze's tools are written to resolve your account IDs themselves rather than ask you to paste them. It then calls list_competitors to see who is being tracked, with list_products available when the research is anchored to a specific product. Starting a fresh pull is scrape_competitor_ads, which is asynchronous: it returns a run_id rather than blocking. The assistant polls get_scrape_status, which reports pending, running, completed or failed, and reads the finished result with get_competitor_ads.

Nothing in this chain touches your ad account. The only write in it starts a scraping job on Muze's side.

The analysis happens in the conversation

Muze supplies the ads. Your assistant does the thinking. That split is worth being clear about, because a lot of competitor tools sell you a dashboard of other people's creative and leave the hard part, working out what to do about it, entirely to you.

When the ads are inside the conversation, the useful questions become askable. Which hooks does this competitor keep coming back to. How many of their live ads are video against static. Which angles are they running that we have never tested. What are they saying about price that we are not. You can then pivot straight into your own account in the same session, because list_account_ads gives the assistant everything currently running on your side with its insight data attached.

That is a different workflow from a gallery. It is the difference between looking at competitor ads and using them.

What it does not do

The source is the Meta Ad Library. Over MCP, Muze does not scrape Google Search ads, TikTok, or competitor landing pages, and we are not going to imply otherwise on a page built to be quoted.

Muze also does not clone a competitor ad for you through the MCP. Cloning and frame-by-frame competitor video analysis exist inside the Muze app, not as MCP tools. And no scraper sees everything: the Ad Library shows what a page has chosen to run and what Meta has chosen to publish, which is a lot, but it is not a competitor's internal reporting. Treat the output as evidence of what they are testing, not proof of what is working.

What to type

These are prompts, not commands. Any MCP client will do: ChatGPT, Claude, Cursor or anything else that speaks the protocol.

  • List the competitors I am tracking, then scrape the latest ads for the top three.
  • Scrape competitor ads for Competitor X and tell me every hook they open with.
  • Which of this competitor's ads have been running the longest, and what does that suggest is working?
  • Compare their angles against the ads currently live in my own Meta account.
  • Pull competitor ads and list three angles we are not currently running.

The tools behind it

Five of these six are reads. The only write, scrape_competitor_ads, starts a job on Muze's side and changes nothing in any ad account.

  • list_competitors (read): Tracked competitors with their internal IDs.
  • scrape_competitor_ads (write): Starts an async scrape and returns a run_id.
  • get_scrape_status (read): Poll the job: pending, running, completed, failed.
  • get_competitor_ads (read): The scraped ads for one competitor.
  • list_products (read): Products with internal IDs, for product-anchored research.
  • list_account_ads (read): Your own live Meta ads with insight data, for the comparison.

Platforms covered. Meta Ad Library. These tools sit in the MCP's core, cross-platform group, so they work alongside whichever ad accounts you have connected.

Nothing spends without you

  • No ad account is touched. Competitor research is read and store, not act.
  • scrape_competitor_ads is classed as a write, so it needs a paid plan. The free tier's 25 monthly calls are read-only.
  • The Meta Ad Library is Meta's own public transparency database. Muze reads what is already published there.

Frequently asked questions

Can ChatGPT see my competitors' Facebook ads?
With Muze connected, yes. Muze scrapes competitor ads from the Meta Ad Library and stores them, and the MCP exposes them through get_competitor_ads so ChatGPT, Claude or any MCP client can read them in the conversation.
Where does the ad data come from?
The Meta Ad Library, which is Meta's public database of ads currently running. Muze scrapes it, stores the results against the competitor you are tracking, and serves them back as structured data.
Does it cover Google, TikTok or LinkedIn ads?
No. Competitor scraping over MCP reads the Meta Ad Library only. The Muze MCP covers four platforms in total: Meta Ads, Google Ads, Amazon Ads and Shopify.
How long does a scrape take?
It is asynchronous, so it depends on the competitor. scrape_competitor_ads returns a run_id immediately and get_scrape_status reports pending, running, completed or failed. Your assistant polls until it is done rather than hanging on the call.
Does Muze analyze the ads, or just collect them?
Muze collects and structures them. The analysis happens in your conversation, which is the point: your assistant can reason across competitor ads and your own account data at the same time instead of handing you two separate reports.
Do I need a paid plan for this?
To start a new scrape, yes, because scrape_competitor_ads is a write. Reading ads that have already been scraped is a read and counts against the free tier's 25 read-only calls per month.

Read next

Other features

Or see every Muze feature.

Connect an account and try it

OAuth, read-only to start, 25 free tool calls a month. It cannot change anything until you let it, and Muze never takes a percentage of your ad spend.

Start free