API & MCP docs

Run the three Advantage scans from your own code, your CI, or from inside your AI editor. Get Found measures how AI assistants read a live URL. Convert measures whether a first-time visitor would sign up. Ship Verifiedchecks what the page shipped that it shouldn't have. Every result is an observed measurement at scan time — never a verdict, certification, or guarantee.

The API is free to try without a key at a per-IP rate. An API key raises the rate to your plan's tier and returns live model output on a paid plan. The machine-readable spec is at /api/openapi.json.

Authentication

Create a key at /app/api-keys (shown once — store it as an environment secret, never commit it). Send it as a Bearer token on any request:

curl "https://getadvantage.app/api/analyze?url=https://yourapp.com" \
  -H "Authorization: Bearer adv_live_…"

Without the header you get the keyless free tier (per-IP rate, sampled output). With a key, the rate follows your plan and a paid plan returns live model output. Over the limit returns HTTP 429 with a retry-after header; an invalid key returns 401.

Rate limits

Limits are observed per key (or per IP, keyless) at request time:

  • Keyless: 5/min · 30/day, sampled output
  • Starter: 60/min · 1,000/day, live output
  • Pro: 120/min · 5,000/day, live output
  • Agency: 240/min · 20,000/day (fair use), live output

The combined endpoint counts as one tick at the same per-engine rate (it never charges three times for one call).

Endpoints

GET/api/analyze?url=

Get Found — AI-readability scan (9 signals)

Scores how legible the page is to AI engines across nine signals (title, meta description, structured data, headings, llms.txt, content-to-markup ratio, Open Graph, canonical, robots). Returns a per-signal breakdown, paste-ready fixes, and a generated starter llms.txt.

curl "https://getadvantage.app/api/analyze?url=https://yourapp.com"
GET/api/verify-convert?url=

Convert — conversion readiness + 5-second cold-read

Scores the signals that decide whether a first-time visitor understands the app and signs up. On a paid key it also runs an agentic 5-second first-impression test. Returns checks, fixes, a benchmark percentile, and a shareable /v report.

curl "https://getadvantage.app/api/verify-convert?url=https://yourapp.com"
GET/api/verify-safety?url=

Ship Verified — shipped-safety checks + badge

Runs deterministic checks for common vibe-coded exposures (secrets in the client bundle, backend config, exposed files, security headers, CORS, transport, source maps). A passing check means we did not find that specific issue — never that the app is secure or certified. Returns checks, fixes, a benchmark percentile, a /vreport, and a “Checked by Advantage” badge.

curl "https://getadvantage.app/api/verify-safety?url=https://yourapp.com"
POST/api/v1/scan/combined

Combined — all three engines, one call

Runs all three engines over one URL and returns one payload: three independent score blocks (never averaged), an intersection summary naming the weakest dimension and the single biggest next move, and one permalink. The fastest way to get the whole picture in a single request.

curl -X POST "https://getadvantage.app/api/v1/scan/combined" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer adv_live_…" \
  -d '{"url":"https://yourapp.com"}'

MCP server — scan from inside your editor

Advantage is also a Model Context Protocol server, so you can add it once to Claude Code, Cursor, Claude Desktop, or Windsurf and just type “scan my app with getadvantage”. It speaks remote Streamable HTTP (the current official remote transport) — zero install, the scans run on our servers. It exposes four tools: get_found, convert_check, ship_verified, and combined_scan. Each leads with the score and the single biggest paste-ready fix, and includes the report link.

Add it (Cursor / Claude Desktop / Claude Code)

Drop this into your MCP client config:

{
  "mcpServers": {
    "getadvantage": {
      "url": "https://getadvantage.app/api/mcp"
    }
  }
}

With an API key (higher rate, live output), add the header:

{
  "mcpServers": {
    "getadvantage": {
      "url": "https://getadvantage.app/api/mcp",
      "headers": { "Authorization": "Bearer adv_live_…" }
    }
  }
}

Or, in Claude Code, one line:

claude mcp add --transport http getadvantage https://getadvantage.app/api/mcp

The MCP server is free to try without a key at the keyless rate; a key raises the rate and returns live output, exactly like the HTTP API.

Want to track sites, see history, and auto-apply fixes via the embed? Create an account — or scan one app free first.