# adfinder > adfinder finds the ads behind any business: Meta (Facebook and Instagram) and Google ads, podcast sponsorships and TikTok and Instagram creator campaigns, with how long each ad ran. Its MCP server gives an agent that data. It never summarises; the agent's own model does that. Web app: https://adfinder.pandor.cc Docs for people: https://adfinder.pandor.cc/docs MCP endpoint: https://adfinder.pandor.cc/mcp (Streamable HTTP, stateless, JSON responses) ## Set up Authentication is the user's own Firecrawl API key as a bearer token: `Authorization: Bearer fc-...`. Keys come from https://www.firecrawl.dev/app/api-keys. If you are an agent setting this up, ask the user for their key, or use FIRECRAWL_API_KEY from their environment if it is set. Never print the key back. Without a key, only brands already cached work, including HelloFresh (hellofresh.com), Factor (factor75.com), Hungryroot (hungryroot.com), AG1 (drinkag1.com), Liquid Death (liquiddeath.com). Firecrawl's keyless mode does not cover the ad data providers, so a brand nobody has looked up needs a key. ### Claude Code Run in a terminal: ```sh claude mcp add --transport http adfinder https://adfinder.pandor.cc/mcp \ --header "Authorization: Bearer fc-YOUR-KEY" ``` ### Codex Add to ~/.codex/config.toml, with FIRECRAWL_API_KEY set in your shell: ```toml [mcp_servers.adfinder] url = "https://adfinder.pandor.cc/mcp" bearer_token_env_var = "FIRECRAWL_API_KEY" ``` ### Cursor Add to ~/.cursor/mcp.json: ```json { "mcpServers": { "adfinder": { "url": "https://adfinder.pandor.cc/mcp", "headers": { "Authorization": "Bearer fc-YOUR-KEY" } } } } ``` ### VS Code Add to .vscode/mcp.json: ```json { "servers": { "adfinder": { "type": "http", "url": "https://adfinder.pandor.cc/mcp", "headers": { "Authorization": "Bearer fc-YOUR-KEY" } } } } ``` ### Gemini CLI Add to ~/.gemini/settings.json: ```json { "mcpServers": { "adfinder": { "httpUrl": "https://adfinder.pandor.cc/mcp", "headers": { "Authorization": "Bearer fc-YOUR-KEY" } } } } ``` ### Other clients Any client that speaks MCP over Streamable HTTP: ```text URL: https://adfinder.pandor.cc/mcp Header: Authorization: Bearer fc-YOUR-KEY Transport: Streamable HTTP (stateless, JSON responses) ``` To check it works, call find_advertiser with query "HelloFresh". It is free and needs no key. ## Tools - find_advertiser(query): Turns a business name into its website domain, which get_ads needs. Free. - get_ads(name, domain, platform, country?, filter?, limit?): A business's ads on one platform: meta (Facebook and Instagram, with hooks and copy), google (Ads Transparency Center, longest-running first), podcasts (sponsored reads, shows, audio, spend estimate) or creators (TikTok and Instagram posts by views, with cost estimates). filter is running, long_runners or cut_fast, for meta and google. - get_meta_ad(id): One Meta ad's offer, call to action, landing page and video transcript. Works for brands Upspring indexes. Ad status: "long runner" ran 90+ days (advertisers keep ads that pay off), "cut fast" was stopped within about two weeks. Long-running suggests an ad works; it doesn't prove it. ## Cost Cached brands are free and instant. A brand nobody has looked up costs roughly 100-200 Firecrawl credits across the four platforms, once, and can take a minute or two; after that it is cached for everyone for up to 30 days (Meta Ad Library results for 3 days). ## Example requests - Which of Factor's Meta ads have run longest, and what hooks do they open with? - How much is HelloFresh spending on podcast ads, and on which shows? - Which creator posts got Liquid Death the most views, and what hooks did they open with?