Chat with your data over MCP
Connect Brandsearch to Claude, ChatGPT, Cursor, and any other AI tool that speaks MCP — then just ask, in plain English, anything about your competitors and your market. No dashboards, no exports, no code.
Show me Gymshark’s top-spending Meta ads this year
Gymshark has about 1,600 active Meta ads. The top spender is a video campaign at €25k EU spend — here are the top 10, with creatives and links.
Connect your AI
It takes about two minutes, and it works the same way everywhere: paste one URL, sign in once.
https://api.brandsearch.co/v1/mcp
That single URL works in every tool. You sign in with OAuth from inside the AI — once — and stay connected for 30 days, with no API keys to manage. Pick your tool below to see the exact steps.
Other MCP clients
Any client that supports remote MCP servers over HTTPS will work. Point it at the MCP URL above and follow the OAuth prompt.
The server speaks both the 2025 protocol revision and the newer 2026-07-28 one. Existing integrations keep working exactly as before; clients on the newer revision get stateless requests, so there is no handshake to keep alive and no need to pin a connection.
For Claude Desktop, Cursor, Gemini, and any CLI that takes a JSON config, the entry looks like:
mcp config
{
"mcpServers": {
"brandsearch": {
"url": "https://api.brandsearch.co/v1/mcp"
}
}
}
What you can ask
Once connected, just talk to your AI normally. The AI picks the right tool and arguments automatically.
“Find DTC beauty brands with 1M+ monthly visits and active Meta ads”
“Show me Gymshark's top 10 highest-spending Meta ads from 2025”
“Compare Allbirds and Gymshark — give me a summary of each brand”
“Discover trending TikTok posts in the Pet Supplies niche”
“Get the dashboard for Glow Recipe's Meta ads — funnel, CTAs, top countries”
“List the bestsellers for allbirds.com — title, price, and URL”
“How many requests do I have left today?”
“Is today's Meta ads data ready yet?”
Image, video, and thumbnail URLs come back with every MCP tool, just like over HTTP — so your AI can show or link to ad creatives, product images, and brand logos directly. And with download_ad, the AI can pull an ad's picture into the conversation and actually look at it, instead of just linking to it. Every brand, ad, and post the AI finds also comes with its link in the Brandsearch app, so you can jump straight to the full page.
Available tools
The MCP server exposes 60+ tools. They map 1:1 to the API endpoints documented elsewhere in this site, with sensible defaults so the AI doesn't have to know every parameter.
Every tool is labelled as read-only or as a write, so your AI client can let the read-only ones run freely and ask before the eight that change your folders or your mobile feed, or spend AI credits: create_folder, add_to_folder, rename_folder, delete_folder, remove_from_folder, remove_from_mobile_feed, analyze_ad and transcribe_ad.
Brands
- Name
search_brands- Type
- tool
- Description
Filter brands by niche, monthly visits, Meta or Google ad activity, storefront status, e-commerce platform, product count, apps, payment methods, or technologies.
- Name
discover_brands- Type
- tool
- Description
Random sample of trending brands. The right tool for "show me brands" / "give me examples".
- Name
get_brand- Type
- tool
- Description
Full details for a brand by domain (e.g.,
gymshark.com).
- Name
get_brand_by_url- Type
- tool
- Description
Full details for a brand by full website URL.
- Name
get_brands_by_ids- Type
- tool
- Description
Batch fetch up to 100 brands by ID.
- Name
lookup_brand- Type
- tool
- Description
Free-form search by brand name, domain, or social handle.
- Name
lookup_brands_batch- Type
- tool
- Description
Batch look up to 50 identifiers in one call.
- Name
query_brands- Type
- tool
- Description
Same as
search_brandsbut takes a JSON filter body. Use when filters get long.
- Name
get_brand_summary- Type
- tool
- Description
Profile + active Meta ads + products in a single call. Best for "tell me about X".
- Name
get_brand_advertisers- Type
- tool
- Description
The Facebook/Meta pages running ads for a brand.
Ads & posts
- Name
get_brand_ads- Type
- tool
- Description
Ads or posts for a specific brand on
meta,tiktok, orinstagram.
- Name
search_meta_ads- Type
- tool
- Description
Search every Meta ad we track by copy, spend, reach, targeting, dates.
- Name
search_tiktok_ads- Type
- tool
- Description
Search every TikTok post by description, engagement, duration.
- Name
search_instagram_posts- Type
- tool
- Description
Search every Instagram post by caption, hashtags, engagement.
- Name
query_meta_ads- Type
- tool
- Description
JSON-body counterpart of
search_meta_ads.
- Name
query_tiktok_ads- Type
- tool
- Description
JSON-body counterpart of
search_tiktok_ads.
- Name
query_instagram_posts- Type
- tool
- Description
JSON-body counterpart of
search_instagram_posts.
- Name
get_meta_ad- Type
- tool
- Description
Single Meta ad by ID.
- Name
get_tiktok_ad- Type
- tool
- Description
Single TikTok post by ID.
- Name
get_instagram_post- Type
- tool
- Description
Single Instagram post by ID.
- Name
get_meta_ad_by_meta_id- Type
- tool
- Description
Lookup a Meta ad by its Meta Ads Library numeric ID — the one in
facebook.com/ads/library/?id=...URLs.
- Name
get_ad_by_url- Type
- tool
- Description
Cross-platform resolver: paste any Meta Ads Library, TikTok video, or Instagram post/reel URL — or a Brandsearch share link (
app.brandsearch.co/ad/…) — and get back the matching ad/post (with aplatformfield for routing).
- Name
download_ad- Type
- tool
- Description
The ad's creative, inlined as a picture the model can actually see — so it can describe, compare, and critique creatives rather than just link to them. Takes
platform(meta/tiktok/instagram/email),id, andmedia. A video ad comes back as its cover frame;media="video"instead reports the video's type, size, and a download URL. Withplatform="email"it returns the email's screenshot, so the AI can read the whole email.
- Name
analyze_ad- Type
- tool
- Description
AI creative breakdown of one ad or email — concept, angle, hook, audience, funnel stage, suggested tests. Costs AI credits (19 for a video, 14 for an image or an email); a previously generated analysis comes back free.
- Name
transcribe_ad- Type
- tool
- Description
What is said in a Meta video ad — timed speech segments, the opening hook line, the spoken language, and the duration. An existing transcript comes back straight away; otherwise one is produced, which can take a minute or more. Costs 1 credit per transcript returned. Image ads are refused with
ad_not_video. See transcribe a video ad.
- Name
discover_meta_ads- Type
- tool
- Description
Random high-quality Meta ads.
- Name
discover_tiktok_ads- Type
- tool
- Description
Random viral TikTok posts.
- Name
discover_instagram_posts- Type
- tool
- Description
Random viral Instagram posts.
Emails
The newsletters, abandoned-cart flows, and sign-up emails brands send. See Emails.
- Name
discover_emails- Type
- tool
- Description
Random sample of marketing emails from trending brands — the default for open-ended requests like "show me email inspiration".
- Name
search_emails- Type
- tool
- Description
Search every email we track by subject and preview text, type, send date, and brand.
- Name
query_emails- Type
- tool
- Description
JSON-body counterpart of
search_emails.
- Name
get_brand_emails- Type
- tool
- Description
One brand's emails, newest first.
- Name
get_email- Type
- tool
- Description
Single email by ID. Pair it with
download_ad(platform="email")to see the email itself.
- Name
get_emails_aggregates- Type
- tool
- Description
Email count, type mix, the 50 brands sending the most, and emails per day and per weekday, over any slice.
Aggregates (dashboards)
- Name
get_brand_ads_aggregates- Type
- tool
- Description
Six-dimension Meta ads dashboard for a single brand (media mix, funnel, CTAs, demography, spend).
- Name
get_brand_posts_aggregates- Type
- tool
- Description
TikTok or Instagram dashboard for a single brand.
- Name
get_meta_ads_aggregates- Type
- tool
- Description
Meta ads dashboard across all brands matching a filter slice.
- Name
get_tiktok_ads_aggregates- Type
- tool
- Description
TikTok dashboard across all brands.
- Name
get_instagram_posts_aggregates- Type
- tool
- Description
Instagram dashboard across all brands.
Folders & boards
The user's Swipe folders (Saved Ads, Saved Advertisers, Tracked Brands) and boards are accessible from the AI. Every folder tool takes a folder_type of ads, brands, or spectre. All of them except get_folder_ads and get_folder_brands also take mobile_feed for the folders of the mobile feed; a mobile feed folder's posts are listed with get_mobile_feed and its folder_id. The AI can browse a user's saved collections, resolve them to full ad/brand records, create and rename folders, save and remove items, and delete folders — all without leaving the chat.
- Name
list_folders- Type
- tool
- Description
Paginated list of the user's folders for a given
folder_type.
- Name
get_folder- Type
- tool
- Description
One folder's metadata and the IDs of its saved items. Ads folder items leave out the REST route's
is_valid/scraped_at, which say nothing about whether an ad can be fetched: an item needs no processing first, andget_folder_adslooks each one up by itsad_idor, failing that, by its saved link. Formobile_feed, the folder alone; its posts come fromget_mobile_feedwithfolder_id.
- Name
get_folder_ads- Type
- tool
- Description
Resolve an
adsorspectrefolder to full ad records (Meta / TikTok / Instagram, and emails saved to anadsfolder).spectrefolders also acceptmax_ads_per_brand,status,is_video,is_image,sort_by,sort_order.
- Name
get_folder_brands- Type
- tool
- Description
Resolve a
brandsorspectrefolder to full brand records. Every saved item comes back as one row; the ones we can't match to a brand are flagged with_swipe.resolved: falseinstead of being dropped.
- Name
get_board- Type
- tool
- Description
Get a board and its linked directories by ID.
- Name
create_folder- Type
- tool
- Description
Create a new folder for the user. Takes
folder_typeand aname(1-100 chars; 1-50 formobile_feed, which also takes aplatform:instagramby default, orfacebook).
- Name
add_to_folder- Type
- tool
- Description
Save an item to a folder. Per kind: ads →
ad_id+type(one ofmeta/tiktok/instagram) for an ad found through any other tool, orurl+typefor one that isn't in our catalogue; brands →brand_id(a domain; a Meta page ID also works); spectre →brand_idor the brand'surlon its own, orurl+page_idfor Meta Ads Library mode. mobile_feed →post_id, a post fromget_mobile_feed. Idempotent: re-saving the same item just attaches it to the additional folder and returnsalready_in_folder: true.
- Name
rename_folder- Type
- tool
- Description
Rename a folder. Takes
folder_type,folder_id, and a newname(1-100 chars; 1-50 formobile_feed). Works on a folder the user owns or haseditaccess to; a duplicate name returnsswipe_folder_name_taken.
- Name
delete_folder- Type
- tool
- Description
Delete a folder (owner only). Takes
folder_typeandfolder_id. Removes the folder and its item links; the saved ads/advertisers/brands themselves are kept, and amobile_feedfolder's posts stay in the feed.
- Name
remove_from_folder- Type
- tool
- Description
Remove a saved item from a folder without deleting the item itself. Takes
folder_type,folder_id, anditem_id(thesaved_ad_id/saved_advertiser_id/tracked_brand_idfromget_folder, or a post'sidformobile_feed). Idempotent: removing an absent item returnsalready_removed: true.
Mobile feed
The posts the user forwarded to Brandsearch from the Instagram or Facebook app (see Mobile feed), so the AI can read them and sort them into folders. Reading and removing posts works on any plan; the feed's folders and filing need a paid plan, as in the app.
- Name
get_mobile_feed- Type
- tool
- Description
The user's posts, newest received first, with the same filters as the API:
platform,type(reel/post),media_format,folder_id,q,received_from,received_to,received_after,sort_by,sort_order. Free.
- Name
remove_from_mobile_feed- Type
- tool
- Description
Take a post out of the user's feed, like Remove from feed in the app. Takes
post_id.
Products & metadata
- Name
search_products- Type
- tool
- Description
Search the Product Library across every brand: one card per market (all the stores selling the same product count once). Filter by text (
q),niche,product_type,source(shopify= has ads,tiktok_shop), price, stock, ad counts, first/last advertised dates,est_revenue_min_usd,sellers_min/sellers_maxandmarket_country(EU and UK only). Sort byest_revenue(the default),relevance(the default whenqis given),newest,ads,active_ads,ads_30d,daily_spend,sellers,price_asc/price_descortiktok_shop_plays. Each card's revenue is a monthly band, andrevenue.scopesays whether it is the store's or the whole market's. 1 credit per product returned.
- Name
get_product- Type
- tool
- Description
One product in full by the
idof a product card: price, ads, market, the revenue band, plus its audience, the top 5 stores selling it, its TikTok Shop footprint and whether a supplier match exists. 1 credit.
- Name
get_product_by_url- Type
- tool
- Description
The same, from a storefront product URL pasted as copied (query string,
www., collection or locale prefix all resolved), including a Meta ad's landing page (creative.link_url, shown asLanding page:in the ad's summary). 1 credit.
- Name
get_products_by_urls- Type
- tool
- Description
Up to 20 product URLs at once:
foundproduct cards in the order of the URLs,not_foundthe misses. 1 credit per product found.
- Name
get_product_ads- Type
- tool
- Description
The Meta ads promoting a product and the stores we matched as selling it (as on its Ads tab in the dashboard), newest first, 10 per page (5 pages at most). Each ad's
idworks withget_meta_adanddownload_ad. 1 credit per ad returned.
- Name
get_product_sellers- Type
- tool
- Description
Every store selling a product, most active ads first, at most 50: price in USD (none for a store whose listing we cannot read), ads, and which row is the product's own store. 25 per page; 1 credit per store returned.
- Name
get_product_trend- Type
- tool
- Description
A product's ad activity day by day over the last
daysdays (1-90, default 30): the store's ads (total, active, started in the last 30 days, estimated daily spend) and its market's (stores advertising, estimated daily spend). Shows whether its advertising is growing or slowing, not its sales. 1 credit; a product with no recorded activity returns an empty list, free.
- Name
get_product_sourcing- Type
- tool
- Description
The 1688 supplier matched to a product and its unit economics: unit and bulk cost, MOQ, estimated shipping, gross margin (before shipping and payment fees), markup, break-even ROAS and CPA (which take them into account), a verdict and up to 3 alternative listings. Only for products whose
sourcing_availableis true. 1 credit; a product with no match costs none.
- Name
get_product_creative_insights- Type
- tool
- Description
How a product's market advertises it, from the AI analysis of its Meta ads: per facet (hook, angle, funnel stage, awareness level, pain, audience, motivation, tone, strategy pattern), the five most common values and their shares. 1 credit; a product none of whose market's ads has been analysed (most of the library), or whose analyses show nothing, costs none.
- Name
get_product_audience- Type
- tool
- Description
Who a product's market reaches with its EU/UK Meta ads, as shares: women and men, each age band by gender, and the 15 leading countries. 1 credit; a product whose market disclosed no reach (about half the library) costs none.
- Name
get_similar_products- Type
- tool
- Description
Products that look like a given one (image similarity), from other markets, closest first;
limit1-20 (default 10). 1 credit per product returned.
- Name
download_product_image- Type
- tool
- Description
The product's picture itself, inline, so the AI can look at it — fetching
image_urldirectly usually fails.sizeiscompact(default, at most 800 px wide) orfull. 1 credit; a product whose image we do not hold costs none.
- Name
get_market- Type
- tool
- Description
Every store selling one product — its market — best first, 50 per page with a cursor. Pass a product card's
market.id.history=trueadds the market's daily series (advertisers, estimated spend). 1 credit per seller returned.
- Name
get_products- Type
- tool
- Description
One brand's own catalogue (to find products across brands, use
search_products).product_typecan beall,bestsellers(ranked, best first) orlatest(newest first).created_from/created_tokeep only products added to the store in that window — handy for "what has this brand launched lately?".
- Name
get_facet- Type
- tool
- Description
Canonical reference values (e.g.,
apps,technologies,niches,country-codes). Use when you need to know the valid values for a filter.
- Name
get_usage- Type
- tool
- Description
Current API usage + remaining daily/monthly quota.
- Name
get_ai_credits- Type
- tool
- Description
The account's AI-credit balance — what
analyze_adspends from.
- Name
whoami- Type
- tool
- Description
Which account the connection is bound to — user, email, the API key in use, team leader, quota ceilings, the permissions granted to the session, and how many folders of each type it can see. The first thing to ask when the AI sees different folders than the dashboard does. If it reports
account_link_broken, your folders are safe but unreachable: disconnect and reconnect the Brandsearch connector to fix it. Unmetered.
- Name
get_system_freshness- Type
- tool
- Description
Latest timestamps for brands, Meta ads, TikTok posts, and Instagram posts. "How up to date is the data?"
Rate limits
The MCP endpoint has its own rate limits separate from the REST API. If your AI hits them, it will get a 429 too_many_requests response with a Retry-After header — the AI will typically retry after the suggested wait. Underlying tool calls still count against your normal API quota; check it any time with the get_usage tool.
Inactive accounts
If your Brandsearch account is no longer active, for example because its subscription has ended, every tool call fails with an error saying so. For a team account, the same happens while the team leader's account is inactive. There is nothing to reconnect: as soon as the account is reactivated, the same connection works again.
Tips for getting good results
- Use
discover_brandsfor vague prompts. "Show me some cool DTC brands" should hitdiscover_brands, notsearch_brandswith no filters. - Use
get_brand_summaryover chained calls. It bundles profile + ads + products in one round trip. - Use
get_facetto validate values before filtering. If the AI is unsure whetherKlaviyois the canonical app name, it can callget_facet("apps")first. - Use
query_*oversearch_*for long filter sets. JSON body avoids querystring length limits and keeps arrays clean. - Use
search_productsto find products,get_productsfor one brand's catalogue. "Best-selling supplements under $40" is asearch_productscall withnicheandprice_max_usd. - Use
download_adto actually look at a creative. Asking the AI to fetch animage_urlitself usually fails — media hosts are often blocked on the AI's side.download_adhands it the picture directly.