Eyepatch

Free library of 1,010 long-running nutrition ads, tagged by angle, avatar, offer and format.

Hosted MCP Server

npx add-mcp 'https://eyepatchads.com/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Ask your AI which proven ads you're not running.

Eyepatch runs a read-only MCP server. Connect it to Claude, ChatGPT, Grok Bot, Cursor or any MCP client and ask things like "Run a gap report for brand.com", "Which angles run longest for magnesium?" or "Give me 3 proven BOF ads for creatine". It can't post, buy or change anything.

Endpoint: https://eyepatchads.com/api/mcp (Streamable HTTP)
Auth: an Eyepatch API key as Authorization: Bearer YOUR_KEY, or OAuth sign-in for apps that support it (claude.ai, ChatGPT).
Get a key: email us, or use the OAuth sign-in, which gives you free access with just your email.

Tools

ToolWhat it does
check_my_ads(brand_or_url or pasted_ads, product?)One call for your ads vs every other brand in the library: angle gaps by funnel stage, buyer personas you're not talking to, offers you don't use (and whether you lean on discounts more than the long-running market), formats you don't run, plus what to test first. Each gap comes with example ads.
find_gaps(lens, product, brand_or_url?)Every gap on one lens: angle (by funnel stage), avatar (buyer personas), offer, format or video (pace, voiceover, length). Without a brand: the market ranking for the product.
examples_for(product, gap)The longest-running ads that fill one gap, one per brand, with days live, why each works and how to adapt it.
search_adsSearch the library by angle, product, brand, format, hook type, awareness, funnel stage, desire, pain, objection, who it's for (avatar, life stage, gender skew), offer (e.g. offer_strength=none for ads that sell without one) and video pace. Compact by default; detail="full" adds every tag with its quote.
get_ad(id)One ad in full: copy, every tag with its evidence quote and, for videos, the transcript, pace and timeline.
resolve_tags · list_tagsPlain words to filters ("creatine for women over 40") and the full tag vocabulary.

Access

Everything is open: every tool, every filter, every product and the full gap list, with the quote from each ad. There is no paid tier right now. Fair-use limits per key: 20 gap reports and 500 tool calls a day (ask us if you need more). You can also get the report on the site.

Connect

Grok Bot

Ask Grok Bot to add a custom MCP server (Streamable HTTP) with the URL https://eyepatchads.com/api/mcp and the header Authorization: Bearer YOUR_KEY. Then ask: "Use Eyepatch to run a brand gap report for brand.com."

Claude (claude.ai, Claude Desktop, mobile)

  1. Go to Settings → Connectors → Add custom connector.
  2. Name it Eyepatch and paste the URL https://eyepatchads.com/api/mcp. Leave the advanced OAuth fields empty.
  3. Click Connect. On the Eyepatch page, paste your API key, or enter your email for free access.

Custom connectors depend on your Claude plan and your workspace settings.

Claude Code

claude mcp add --transport http eyepatch https://eyepatchads.com/api/mcp \
  --header "Authorization: Bearer YOUR_KEY"

If you leave out the header, Claude Code signs you in with OAuth instead (run /mcp to authenticate).

Claude Desktop (config file, API key)

{
  "mcpServers": {
    "eyepatch": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://eyepatchads.com/api/mcp",
               "--header", "Authorization: Bearer ${EYEPATCH_KEY}"],
      "env": { "EYEPATCH_KEY": "YOUR_KEY" }
    }
  }
}

ChatGPT

  1. On ChatGPT web, open Plugins, click + and choose Add custom MCP server.
  2. Name it Eyepatch, enter the URL https://eyepatchads.com/api/mcp, choose OAuth authentication, and accept the risk notice.
  3. Click Create as a plugin and install it. Sign in on the Eyepatch page, then type @Eyepatch in a chat.

Custom MCP servers depend on your ChatGPT plan and your workspace permissions.

Cursor

// .cursor/mcp.json
{
  "mcpServers": {
    "eyepatch": {
      "url": "https://eyepatchads.com/api/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}

OAuth details (for developers)

  • Protected resource metadata: /.well-known/oauth-protected-resource. An unauthenticated call returns 401 with WWW-Authenticate: Bearer resource_metadata="…".
  • Authorization server metadata: /.well-known/oauth-authorization-server.
  • Endpoints: /oauth/register (dynamic client registration), /oauth/authorize and /oauth/token. Client ID Metadata Documents also work.
  • Authorization code flow with PKCE S256 for public clients. Access tokens last 1 hour; refresh tokens last 30 days.
  • Loopback redirects match on any port. The authorize step answers with a 302 redirect.

Plain HTTP

No MCP? The same data is available as JSON: /api/gap?u=brand.com, /api/ads, /api/angles and /api/taxonomy. The summary for LLMs is at llms.txt.

Days live is a proxy for performance, inferred from the public Meta Ad Library, not verified ROAS. Treat every gap as a test. Ads with disease claims are flagged and never suggested.