MCP interface & badges.
Scovant exposes two ways for AI agents and other sites to consume compatibility data directly, without going through the dashboard.
MCP interface
Scovant runs an MCP (Model Context Protocol) server, so AI agents and MCP-aware tools can call the scanner directly.
- Endpoint:
https://scovant.com/mcp/(Streamable HTTP transport) - Discovery:
https://scovant.com/.well-known/mcp.json
Public tools (no authentication):
list_compatibility_rules— list Scovant's compatibility rules (code, category, severity, title).list_showcase_sites(limit)— top verified showcase sites.lookup_domain(domain)— same data as the public "Pre-flight any URL" lookup on the landing page, including the latest public score for a published/showcase domain.get_public_showcase(site_id)— the public showcase card for a published site.
Authenticated tools (require a scvt_ API token — the same credential used for CI):
list_sites(workspace_id?)— sites in a workspace you're a member of, cursor-paginated. Same contract asGET /api/sites. API-token callers may omitworkspace_id(it defaults to the token's workspace); JWT callers must pass it. Use it to discoversite_ids for CI instead of copying UUIDs from the dashboard.trigger_scan(site_id, targets)— trigger a scan for a site you're a member of. Same request shape and limits asPOST /api/scans.get_scan(scan_id)— full scan detail (score breakdown, issues summary) for a scan in your workspace.list_issues(scan_id, ...)— cursor-paginated issues for a scan.get_simulation(simulation_id)— simulation run detail (status, success flag, agent) for a simulation in your workspace. Same contract asGET /api/simulations/{simulation_id}.list_regressions(site_id, limit=20, cursor?)— CI regressions for a site you're a member of, newest first, cursor-paginated. An empty list means no regressions were detected.generate_fix_plan(site_id)— generate an Agent Fix Plan (costs 1 credit; requires a completed scan; one active plan per site).get_fix_plan(site_id)— the latest Fix Plan for a site: status, body, and thepublic_urlMarkdown download link once completed.
Send the token as a bearer header on the MCP connection:
Authorization: Bearer scvt_...
Create API tokens in Settings → API tokens (see Authentication). A token can only act on the workspace it was created in.
Calling from scripts
The server runs in stateless JSON mode — one plain POST per tool call, no initialize handshake, no session header, no SSE:
curl -s -X POST https://scovant.com/mcp/ \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer scvt_YOUR_API_TOKEN' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_scan","arguments":{"scan_id":"SCAN_UUID"}}}'The tool payload arrives as a JSON string in result.content[0].text — extract it with jq -r '.result.content[0].text' | jq ..
Public tools are rate-limited per IP; authenticated tools inherit your workspace's normal plan limits and throttles — the same limits that apply through the dashboard and API.
Embeddable badge
Publish a site to the public showcase with a score of 60 or higher and you get an embeddable badge:
GET /api/public/badge/{site_id}.svgDrop it in a <img> tag on your site:
<a href="https://scovant.com/showcase">
<img src="https://scovant.com/api/public/badge/{site_id}.svg" alt="Scovant compatibility badge" />
</a>Two tiers — Agent Ready (score ≥ 80) and Agent Compatible (score ≥ 60) — matching the thresholds shown throughout the product. Below 60, or if too few of the AI agents you run can complete the purchase, there's no badge to embed (a "not ready" badge would defeat the point). The badge is cached for 5 minutes and shows only your public score and tier — nothing else. Copy the embed snippet straight from Dashboard → your site → Showcase.