AdSwipeFile
Bibliothèque de publicités Facebook et Instagram performantes pour les agents IA : découvrez les publicités diffusées par vos concurrents, trouvez des publicités par niche et par format, et consultez leurs accroches et leurs angles.
Serveur MCP hébergé
npx add-mcp 'https://adswipefile.com/api/mcp'S’installe dans Claude Code, Codex, Cursor et plus
Documentation
Use AdSwipeFile from your AI assistant (MCP)
Connect the AdSwipeFile MCP server to Claude, ChatGPT or Cursor: your agent searches winning ads, reads their copy (Starter and Growth) and lists your saved ads. Read-only, free, and you sign in with your AdSwipeFile account: there is no API key.
Server URL
https://adswipefile.com/api/mcp
Streamable HTTP. OAuth 2.1 with dynamic client registration: your client registers itself, then you sign in once (email link or code, or Google) and approve read access. Discovery documents: https://adswipefile.com/.well-known/oauth-protected-resource and https://adswipefile.com/.well-known/oauth-authorization-server. Server card: https://adswipefile.com/.well-known/mcp.json.
Add it
- Claude: Open Settings → Connectors → Add custom connector. Name it AdSwipeFile, paste the server URL and click Add. Click Connect, sign in with your account and approve.
- ChatGPT: Open Settings → Apps & Connectors → Advanced settings and turn on Developer mode. Back in Apps & Connectors, click Create, paste the server URL and choose OAuth. Sign in with your account and approve.
- Claude Code: Run in your terminal:
claude mcp add --transport http adswipefile https://adswipefile.com/api/mcp. Then run /mcp in Claude Code and sign in. - Cursor: Add to ~/.cursor/mcp.json (or your client's MCP config):
{ "mcpServers": { "adswipefile": { "url": "https://adswipefile.com/api/mcp" } } }. Then sign in when Cursor prompts you. - Codex: Run in your terminal:
codex mcp add adswipefile --url https://adswipefile.com/api/mcp. Then run codex mcp login adswipefile and sign in. - Gemini CLI: Add to ~/.gemini/settings.json:
{ "mcpServers": { "adswipefile": { "httpUrl": "https://adswipefile.com/api/mcp" } } }. Then run /mcp auth adswipefile and sign in. - Hermes: Add to ~/.hermes/config.yaml:
mcp_servers: { adswipefile: { url: https://adswipefile.com/api/mcp, auth: oauth } }. Then sign in in the browser window Hermes opens on first connect (or run hermes mcp login adswipefile). - OpenClaw: Add to ~/.openclaw/openclaw.json, so every channel gets the tools:
{ "mcp": { "servers": { "adswipefile": { "url": "https://adswipefile.com/api/mcp", "transport": "streamable-http" } } } }. AdSwipeFile signs in through OAuth in a browser and issues no API keys, so an OpenClaw gateway that runs without a browser cannot connect yet.
Allowance and ad copy
Every MCP tool call (except list_niches, list_formats, list_visual_formats and list_hooks) and every /api/v1 request counts against the account's allowance (UTC): 50 a day on Free, 10,000 a month on Starter, 50,000 a month on Growth. Past it, the API answers 429 with the code quota_exceeded and Retry-After set to the reset (UTC: the next midnight on Free, the first of next month on Starter and Growth), and MCP tools answer with a message instead of results; both say when the allowance resets and how to raise it, with the link. On Free, get_ad returns the ad without its copy, plus a line saying the plan does not include it. See pricing.
Rate limit
120 tool calls a minute per account, over a sliding window, apart from the allowance. A response to a tool call carries the RateLimit headers; past the limit the answer is HTTP 429 with a JSON-RPC error and Retry-After in seconds.
Tools
search_library(Search the library): Find real Meta (Facebook and Instagram) ads for ad inspiration, hooks, angles, competitor research or a swipe file. Keyword search across ads, brands, niches and formats. Matches whole words in each ad's copy and in a description of its visual (so "screenshot" or "before after" work); only ads holding every word come back when there are any, else ads holding some (matchsays "all", "partial" or "none", with ahint). Use 1–3 English product or format words; long phrases match little. Returns each hit's type, slug or id, and page URL. Start here when you have a product, brand or idea rather than an exact slug; whenmatchis "none", follow thehint: it names a matching niche or format, or says the library has nothing on it.list_ads(List ads): Browse real ads, newest first, optionally filtered by brand (a competitor's ads), niche and format slug, or by the standard tags:visual_format(list_visual_formats),hook(the hook tactic, list_hooks),seasonandoffer_type. Ads the library has not tagged yet never match a tag filter. Without a brand filter a page keeps a few ads per brand so one advertiser cannot fill it; filter by brand for all of one brand's ads. Ads tracked on Meta carryrun(started, last_seen, running, days_running, landing_page);sort: "longest_running"lists those by the longest run, the usual proxy for an ad worth studying (it is not performance data). Paginate with the returnednextCursor.get_ad(Get an ad): One ad in full: copy (on plans without ad copy, a line saying it is not included), audiences, brand, niche, formats, its standard tags (visual formats, hook tactic, hook line, asset type, offer type, season, talent; null when not tagged yet), image URL, page URL, andrun(Meta start date, last day seen, running, days running, landing page) when the ad is tracked on Meta.list_brands(List brands): Every brand in the library, optionally only one niche's. Each brand comes with updated: the day (YYYY-MM-DD) its Meta ads were last checked for new ones, or null when they have not been.list_niches(List niches): Every niche (industry) ads are filed under.list_formats(List formats): Every ad format (UGC, before/after, testimonial, …) ads are tagged with: the values of list_adsformat. The standard visual formats are in list_visual_formats.list_visual_formats(List visual formats): Every standard visual format (testimonial, screen recording, us vs them, …) that ads in the library carry, with a one-line description. An ad has up to three. Pass a slug to list_ads asvisual_format.list_hooks(List hook tactics): Every hook tactic (curiosity, social proof, myth busting, …) that ads in the library carry, with a one-line description: the device the first frame or the headline uses to earn attention. Pass a slug to list_ads ashook.list_saved_ads(List my saved ads): The ads you saved on the site, newest first.list_followed_ads(List new ads from brands I follow): The brands and Facebook pages you follow on the site, and their newest Meta ads, newest launch first: competitor ads as they go live. Each followed brand comes with its library slug when it has one (use it with list_ads for its filed ads) and its tracking page URL. Empty when the account follows nothing; the result then says where following is set up.
Starter prompts
Ready-made prompts (MCP prompts/list; in Claude, the + menu of a chat):
ads-for-my-niche(Winning ads in my niche): What's working in a niche right now: its newest ads, optionally in one format, with the hooks and angles they share.swipe-a-brand(What ads is this brand running?): A competitor's ads in the library: the formats, hooks and angles it repeats, with links.hooks-for-my-product(Hooks for my product from winning ads): Hooks for your product, each learned from a real winning ad in the library.map-competitors(Compare my competitors' ads): Several competitors' ads side by side: formats, offers, hooks and angles, and the angles nobody runs yet.