protogrid

Search / io.github.gweber/siteguardian

SiteGuardian

R0· no sign-in

EU-hosted website monitoring + 17-framework compliance MCP. One anonymous tool, four authenticated.

v1.0.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality88good
Trust90of 100
Uptime, 30 days99%
Latency p50650 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "siteguardian": {
      "type": "http",
      "url": "https://mcp.siteguardian.io",
      "headers": {
        "Authorization": "Bearer ${SITEGUARDIAN_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http siteguardian https://mcp.siteguardian.io --header "Authorization: Bearer ${SITEGUARDIAN_TOKEN}"
[mcp_servers.siteguardian]
url = "https://mcp.siteguardian.io"
bearer_token_env_var = "SITEGUARDIAN_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "siteguardian": {
      "type": "remote",
      "url": "https://mcp.siteguardian.io",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:SITEGUARDIAN_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "siteguardian": {
      "type": "http",
      "url": "https://mcp.siteguardian.io",
      "headers": {
        "Authorization": "Bearer ${SITEGUARDIAN_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=siteguardian&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLnNpdGVndWFyZGlhbi5pbyIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciAke1NJVEVHVUFSRElBTl9UT0tFTn0ifX0%3D"
}
{
  "servers": {
    "siteguardian": {
      "type": "http",
      "url": "https://mcp.siteguardian.io",
      "headers": {
        "Authorization": "Bearer ${SITEGUARDIAN_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "siteguardian": {
      "httpUrl": "https://mcp.siteguardian.io",
      "headers": {
        "Authorization": "Bearer ${SITEGUARDIAN_TOKEN}"
      }
    }
  }
}
extensions:
  "siteguardian":
    enabled: true
    name: "siteguardian"
    type: streamable_http
    uri: "https://mcp.siteguardian.io"
    headers:
      "Authorization": "Bearer ${SITEGUARDIAN_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${SITEGUARDIAN_TOKEN}. The registry never accepts secret values.

Quality 88 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations5 of 5 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 1,429 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

5 tools, about 1,429 tokens to load them all · tool set 98132e53096e · checked 2026-10-20 22:23 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 90 / 100

provenance90
liveness100
freshness65
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-99% ~updated-178d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.siteguardian.io streamable-httpnoneyes99%650 ms2025-11-252026-10-20

Tools (5)

get_domain_statusread-onlyReturns the current security grade (A–F), last-scan timestamp, and list of active issues for a domain that is ALREADY under SiteGuardian monitoring by the authenticated account. Each issue carries a stable id, a severity, a short title, and an impact description. The response also includes a relative dashboard URL. Use this when the user asks about the current state of a specific monitored domain, wants to confirm a recent change landed, or needs issue ids to call get_fix_recommendations with a specific issue_id. Do NOT use this for domains not yet under monitoring — it will return a domain_not_monitored error; call scan_domain for one-off checks instead. Compliance framework tags (NIS2 / GDPR / DORA) are NOT included in v1; framework tagging on the monitored-domain path is tracked as a follow-up. Requires a valid API key.
get_drift_eventsread-onlyReturns recent configuration drift events for a domain under monitoring by the authenticated account — TLS changes, DNSSEC state changes, new or removed security headers, shifts in third-party JS hosts, new cookies. Each event carries its observed-at timestamp, a kind (tls/dnssec/cookies/js_hosts/headers), a severity classified centrally (high for tls/dnssec/headers, medium for cookies/js_hosts, otherwise low), a short summary, and a sanitised detail payload. Use this when the user asks 'what changed' on a domain, wants to audit recent posture shifts, or is diagnosing an unexpected issue. Pair it with get_domain_status to see the current state and get_drift_events to see how it got there. Do NOT use this for a domain that is not under monitoring — you'll get a domain_not_monitored error; monitoring has to be active for the drift history to accumulate. Optional since (ISO-8601) and limit (1..100) params narrow the window. Requires a valid API key.
get_fix_recommendationsread-onlyReturns copy-paste-ready fix recommendations (nginx, Apache, DNS, shell) for the issues found on a domain the caller has already paid for — either an active Monitor/Compliance subscription covering the domain, OR a purchased one-off Report for the domain. Each recommendation carries a stable issue_id, a priority (high/medium/low), a title, prose instructions, one or more config snippets with the target domain already interpolated, a verify command, and a category tag. Use this when the user asks how to fix an issue, wants the exact config to apply, or needs to verify a fix worked. Pass the optional issue_id to scope the response to one specific finding. The response is read-only — this tool NEVER triggers a fresh scan; fixes are computed from the most recent stored scan (including the Report-included re-scan if that was used). Do NOT use this for domains the caller hasn't purchased coverage for — you'll get an upgrade_required error that links to the pricing page. Do NOT use this to run or trigger a scan; call scan_domain for anonymous checks. Requires a valid API key.
list_monitored_domainsread-onlyReturns the full list of domains under continuous SiteGuardian monitoring for the authenticated account. Each entry includes the domain, current security grade (A–F), timestamp of the last completed scan, and a relative dashboard URL. Use this when the user asks what they are monitoring, wants an inventory summary, or needs to look up a specific domain's exact spelling before calling get_domain_status / get_drift_events / get_fix_recommendations. The list is scoped entirely by the API key — there is no filter parameter to widen or narrow the result. Do NOT use this to enumerate domains the user does not own or monitor — it only returns their own inventory. Do NOT call it to trigger a scan (it does not); use scan_domain for one-off checks. Requires a valid API key.
scan_domainread-onlyRuns a free one-off security scan of the given domain and returns its grade (A–F), scan timestamp, and up to three top-priority issues with a permalink to the full report on siteguardian.io. Use this when the user asks for a quick security check of a domain that is NOT yet under SiteGuardian monitoring, or when they want a fresh assessment before subscribing. Results are cached for two hours, so repeated calls about the same domain return the same snapshot and mark it with cached=True. Do NOT use this for domains already under monitoring by the user — call get_domain_status instead for the account-scoped view with framework tags. Do NOT use this to batch-scan many domains as a competitive-intelligence tool; per-source-IP and per-target rate limits bound usage. This tool does not require authentication.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.gweber/siteguardian",
  "title": "SiteGuardian",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.siteguardian.io",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "description": "Bearer <api-key> — required for the four authenticated tools (list_monitored_domains, get_domain_status, get_drift_events, get_fix_recommendations). The scan_domain tool works anonymously without this header. Get a key at https://siteguardian.io/settings"
        }
      ]
    }
  ],
  "version": "1.0.0",
  "repository": {
    "url": "https://github.com/gweber/siteguardian-mcp-examples",
    "source": "github"
  },
  "websiteUrl": "https://siteguardian.io/docs/mcp",
  "description": "EU-hosted website monitoring + 17-framework compliance MCP. One anonymous tool, four authenticated."
}