Skip to main content
Glama
SyteCheck MCP Server

SyteCheck MCP Server

SyteCheck MCP Server

SyteCheck MCP server

Run website audits from Claude, Cursor, or any other MCP client, and get the findings back as text you can act on.

SyteCheck scans a page across ten dimensions — HTML validity, SEO, broken links, accessibility (WCAG 2.2 AA via axe-core), performance (a real Lighthouse run), security headers, responsive layout, AI visibility, content freshness, and an AI critique of the visual design — and returns a scored, plain-language report.

A free account works. No card, no trial clock: the free tier includes three scans a month across three categories, which is enough to wire this up and see a real report before deciding whether to pay for more.

Quickstart

  1. Create an account at sytecheck.app and verify your email.

  2. Mint a key at Account → API keys. Choose scans:read only if you want the model to read existing scans but never spend quota. The secret is shown once.

  3. Add the server to your client, using one of the recipes below.

Claude Code

claude mcp add sytecheck --env SYTECHECK_API_KEY=sck_your_key_here \
  -- npx -y @ascentws/sytecheck-mcp

Claude Desktop

Edit claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "sytecheck": {
      "command": "npx",
      "args": ["-y", "@ascentws/sytecheck-mcp"],
      "env": { "SYTECHECK_API_KEY": "sck_your_key_here" }
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project, or the global equivalent:

{
  "mcpServers": {
    "sytecheck": {
      "command": "npx",
      "args": ["-y", "@ascentws/sytecheck-mcp"],
      "env": { "SYTECHECK_API_KEY": "sck_your_key_here" }
    }
  }
}

Gemini CLI / Antigravity CLI

Add to ~/.gemini/settings.json (or the Antigravity equivalent):

{
  "mcpServers": {
    "sytecheck": {
      "command": "npx",
      "args": ["-y", "@ascentws/sytecheck-mcp"],
      "env": { "SYTECHECK_API_KEY": "sck_your_key_here" }
    }
  }
}

OpenAI Agents SDK

from agents import Agent
from agents.mcp import MCPServerStdio

sytecheck = MCPServerStdio(
    params={
        "command": "npx",
        "args": ["-y", "@ascentws/sytecheck-mcp"],
        "env": {"SYTECHECK_API_KEY": "sck_your_key_here"},
    }
)

agent = Agent(
    name="Site auditor",
    instructions="Audit sites with SyteCheck and explain what to fix.",
    mcp_servers=[sytecheck],
)

Then ask: "Scan https://example.com and tell me what to fix first."

Related MCP server: Keytomic

Tools

Tool

What it does

run_scan

Submit a URL and wait for the report. Spends quota.

get_scan_report

Full findings for a scan id — the way to collect a scan run_scan left running

list_scans

Scan history, newest first, with filters

get_scan_trends

Score history per URL across repeat scans

list_categories

What SyteCheck can check, and what your plan includes

get_account_usage

Scans remaining this month, and when the quota resets

There is also a scan-and-remediate prompt that scans a URL and turns the findings into a prioritized fix plan.

A note on cost

run_scan is the only tool that spends anything, and it spends real money: a scan opens a browser, runs Lighthouse, and calls a vision model. It is marked non-read-only so your client asks before running it, and its description tells the model to check remaining quota first and not to re-scan an unchanged page. On a free account you have three scans a month — an agent looping over run_scan would exhaust that in one turn.

If you are handing a key to something unattended, mint a scans:read key. It cannot create scans at all.

Configuration

Variable

Default

Purpose

SYTECHECK_API_KEY

(required)

Your sck_ API key

SYTECHECK_API_URL

https://api.sytecheck.app

API base URL

SYTECHECK_WAIT_TIMEOUT_MS

60000

How long run_scan waits before returning a scan id

SYTECHECK_POLL_INTERVAL_MS

3000

Gap between status checks while waiting

Note the API host is api.sytecheck.app, not sytecheck.app — the latter serves the web app and answers API paths with its "page not found" screen.

Using the API directly

The MCP server is a thin client over a plain HTTP API you can call yourself.

  • docs/API.md — the full developer guide: authentication, submitting scans, polling, webhooks and their signature verification, rate limits, and versioning.

  • public-openapi.json — the OpenAPI 3.1 spec, for generating a client.

  • examples/ — runnable clients in curl, Python, Node, Java, and C#, plus a webhook receiver that verifies the delivery signature.

  • Interactive docs: Swagger UI · ReDoc

Development

npm install
npm run build
npm test
npm run lint

To run against a local SyteCheck instance:

SYTECHECK_API_KEY=sck_… SYTECHECK_API_URL=http://localhost:8000 node dist/index.js

The server speaks JSON-RPC over stdin and stdout, so nothing may be written to stdout except protocol messages — a stray console.log corrupts the stream and the client disconnects with an unhelpful parse error. Diagnostics go to stderr.

Security

See SECURITY.md for how the key is handled, what a leaked key can and cannot do, and how to report a vulnerability.

License

MIT — see LICENSE. The licence covers this code; the SyteCheck name and mark are trademarks of Ascent Web Solutions, and use of the service is governed by its Terms of Service. See TRADEMARK.md for the full terms.

Available Tools

6 tools
get_account_usageGet account usage and quotaA
Read-only

How many scans this account has left this month, its plan, and which categories it may run. Check this before running scans in bulk — quota is per calendar month and does not roll over.

Inputs: no named parameters.

get_scan_reportGet a scan reportA
Read-only

Fetch the full findings for a scan by id, including the executive summary and per-category results. Use this to collect a scan that run_scan left running, or to re-read an earlier scan without spending quota.

Inputs: scan_id (required), lang.

list_categoriesList scan categoriesA
Read-only

The analysis categories SyteCheck can run, and which of them this account's plan includes. Check this before passing categories to run_scan — requesting one the plan withholds is refused outright rather than skipped.

Inputs: no named parameters.

list_scansList past scansA
Read-only

List this account's scans, newest first. Use it to find a scan id, or to check whether a site has been scanned before starting a new one.

Inputs: page, query, status, page_size.

run_scanRun a website scanA

Submit a URL to SyteCheck and wait for the report. Scans ten dimensions of site quality: HTML validity, SEO, broken links, accessibility (WCAG 2.2 AA), performance (Lighthouse), security headers, responsive design, AI visibility, content freshness, and an AI visual critique of the design.

IMPORTANT: each scan consumes one of the account's monthly scans and costs real money. Free accounts get three per month. Check get_account_usage first if you are unsure of the remaining quota, and confirm with the user before scanning the same URL more than once — repeat scans of an unchanged page rarely tell you anything new.

A scan usually takes a few minutes. If it is still running when this returns, you get the scan id — pass it to get_scan_report to collect the result rather than scanning again.

Inputs: url (required), label, categories.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.3/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool targets a distinct object and action: run_scan creates, get_scan_report reads one scan's findings, get_scan_trends reads history per URL, list_scans indexes scans, list_categories describes analyzers, get_account_usage reports quota. The report/trends/list distinction is spelled out in the descriptions, so misselection is unlikely.

    Naming Consistency5/5

    All six names follow a strict verb_noun snake_case pattern (get_*, list_*, run_*). Verbs are used consistently: get_ for single-resource fetches, list_ for collections, run_ for the mutating action.

    Tool Count5/5

    Six tools covering quota, categories, submission, retrieval, listing, and trends is well-matched to a single-purpose scanning service with no redundant entries. Nothing feels padded or missing at the count level.

    Completeness4/5

    The core lifecycle (check quota/categories, submit scan, collect report, review trends, list history) is fully covered. Minor gaps exist, such as no way to cancel or delete a scan, but these are workable and scans are likely immutable.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables running comprehensive SEO audits on websites, checking meta tags, sitemaps, robots.txt, broken links, headings, duplicate titles, and keyword density through MCP tools.
      12 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Remote MCP server for Keytomic, the AI SEO agent: SEO audits, Search Console and GA4 data, keyword research, articles, CMS publishing, indexing, backlinks, Reddit and AI visibility. You sign in with your Keytomic account.
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Exposes website auditing, finding retrieval, and safe fix application as MCP tools so AI agents can diagnose and remediate SEO, accessibility, and technical web issues.
      6
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents and CI systems to run deterministic website QA audits over MCP, with every finding backed by evidence and every result hashed and signed. It checks HTTP, TLS, security headers, SEO, links, accessibility, and robots.txt, with configurable pass/fail verdicts.
      MIT