SiteGuardian
Server Details
EU-hosted website monitoring + 17-framework compliance MCP. One anonymous tool, four authenticated.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- gweber/siteguardian-mcp-examples
- GitHub Stars
- 0
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.9/5 across 5 of 5 tools scored.
Each tool has a clearly distinct purpose: listing monitored domains, checking current status, reviewing drift history, getting fix recommendations, and scanning unmonitored domains. The descriptions explicitly cross-reference and warn against misuse, making selection unambiguous.
All tool names follow a predictable verb_noun pattern: get_domain_status, get_drift_events, get_fix_recommendations, list_monitored_domains, and scan_domain. The use of 'list_' for the collection and 'scan_' for the action is consistent and intuitive.
The five tools are well-scoped for a security monitoring API, covering inventory, current state, change history, remediation, and one-off scanning. Each tool earns its place without unnecessary bloat.
The tool set covers the primary read-side and scanning workflows, but lacks an explicit tool to add a domain to continuous monitoring, which is a natural next step from scan_domain. This is a minor lifecycle gap that agents can work around by directing users to the website.
Available Tools
5 toolsget_domain_statusARead-onlyIdempotentInspect
Returns 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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| grade | No | |
| domain | Yes | |
| last_scan_at | No | |
| active_issues | Yes | |
| dashboard_url | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds meaningful context: returns domain_not_monitored error for unmonitored domains, excludes compliance framework tags in v1, and requires a valid API key. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is slightly longer than necessary but every sentence adds value: return contents, use cases, error scenario, and version limitation. The most important information is front-loaded in the first sentence, with exclusions following. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema present) and strong annotations, the description covers essential operational context: when to use, when not to use, error behavior, API key requirement, and version limitations. It is fully complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a 'domain' string with no description (0% coverage). The description compensates by explaining the domain must be 'ALREADY under SiteGuardian monitoring by the authenticated account', which gives the parameter practical meaning beyond a bare string. It does not specify format details but is sufficient for a single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns security grade, last-scan timestamp, active issues, and a dashboard URL for a monitored domain. It distinguishes itself from siblings like list_monitored_domains and scan_domain by specifying 'specific monitored domain' and explicitly naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance: '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'. It also provides a clear exclusion with a specific error behavior and directs users to scan_domain for unmonitored domains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drift_eventsARead-onlyIdempotentInspect
Returns 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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No | ||
| domain | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| domain | Yes | |
| events | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false), the description adds practical behavior: the domain_not_monitored error, ISO-8601 and limit range constraints, and the API key requirement. It also explains severity classification logic and the sanitized detail payload, which are not available from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, then usage, then caveats, and avoids unrelated details. It is slightly long but each sentence carries useful information; the only minor issue is a likely typo repeating 'get_drift_events' where get_domain_status was intended, but overall structure is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description independently details event fields, severity levels, error behavior, parameter constraints, and authentication requirements. It is complete enough for an agent to decide when to invoke this tool and what to expect, without needing to inspect other documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains 'since (ISO-8601)' and 'limit (1..100)' for the optional parameters, and 'domain' is self-evident from the tool name and opening sentence. It doesn't provide exhaustive per-parameter schema details but covers the key constraints and formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Returns recent configuration drift events for a domain under monitoring by the authenticated account' and enumerates concrete types (TLS changes, DNSSEC, security headers, JS hosts, cookies), giving a specific verb+resource+scope. It explicitly distinguishes itself from the sibling tool get_domain_status by positioning itself as the history counterpart to the current-state tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'Use this when the user asks "what changed" on a domain, wants to audit recent posture shifts, or is diagnosing an unexpected issue' and pairs it with get_domain_status for current state. It also provides a 'Do NOT use' warning for unmonitored domains with the resulting domain_not_monitored error, covering both affirmative and negative usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fix_recommendationsARead-onlyIdempotentInspect
Returns 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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| issue_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| domain | Yes | |
| source | Yes | Which purchased product backed this response — 'monitor' for a subscription, 'report' for a one-off Report. |
| scanned_at | Yes | Timestamp of the underlying scan the fixes were computed from. |
| recommendations | Yes | Priority-sorted list of actionable fixes. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description adds critical behavioral context: it NEVER triggers a fresh scan and always computes from the most recent stored scan. It also mentions the API key requirement, adding value beyond structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long but well-structured: it leads with the core value proposition, then details usage, exclusions, and behavior. Each sentence carries useful information, and the length is appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers eligibility (paid coverage), usage context, exclusions, behavioral guarantees, and alternatives. With an output schema present, the lack of return-value detail is acceptable. It is complete for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining domain as the target and issue_id as an optional scoping parameter. It clarifies that issue_id scopes to a specific finding, which is meaningful. However, it doesn't specify domain format or constraints, leaving some gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns copy-paste-ready fix recommendations for specific issue types (nginx, Apache, DNS, shell) on a paid-for domain. This distinguishes it from siblings like scan_domain, which triggers scans, and get_domain_status, which reports status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (user asks how to fix an issue, wants config to apply, or needs to verify a fix) and when not to (unpaid domains, triggering scans). It names scan_domain as the alternative for anonymous checks, providing clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_monitored_domainsARead-onlyIdempotentInspect
Returns 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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| domains | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only/idempotent, but the description adds valuable context: API-key scoping, no filter parameter, and that it does not trigger scans. Also notes the auth requirement and return contents, going beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, focused paragraphs: function, when-to-use, and exclusions. Every sentence serves a purpose with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema, the description still explains the return fields, scope boundaries, and sibling-tool relationships. Offers complete guidance for correct invocation and interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the input schema is trivially covered. The description explicitly confirms there is no filter parameter, preventing the agent from imagining optional inputs. This adds meaningful semantic clarification beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it returns the full list of monitored domains for the authenticated account, with specific fields. Distinguishes itself from sibling tools by positioning them as separate actions (get_status, get_drift_events, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (inventory summary, exact spelling lookup) and when not to use (other people's domains, triggering scans), naming scan_domain as the alternative. Perfectly clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_domainARead-onlyIdempotentInspect
Runs 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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| grade | Yes | |
| score | Yes | |
| cached | Yes | True when the result was served from the 2-hour ScanLog cache. |
| domain | Yes | |
| report_url | Yes | Permalink to the full scan report on siteguardian.io. |
| scanned_at | Yes | |
| top_issues | Yes | Up to 3 top-priority issues found. Sorted high → medium → low. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, idempotent, and non-destructive hints. The description adds meaningful behavior beyond these: two-hour caching with cached=True flag, per-source-IP and per-target rate limits, and no authentication required. These are non-obvious traits that help the agent anticipate results and limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: action/results, when-to-use, caching behavior, explicit exclusions with alternatives. The most critical information is front-loaded, and no fluff or repetition exists. Despite being longer than two sentences, it is appropriately sized for the behavioral nuances it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple signature (one parameter), the description is complete: purpose, outputs, use cases, exclusions, alternative, caching, rate limits, auth requirement, and the output schema exists for return details. Sibling tool names in context also help disambiguation. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only one string parameter 'domain' with 0% description coverage. The description adds context by referring to 'the given domain' and clarifying it should be a non-monitored domain in the usage section. It doesn't specify format constraints (e.g., with/without scheme), but for a single obvious parameter, this is adequate and above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Runs a free one-off security scan of the given domain' and lists exact outputs (grade, timestamp, top issues, permalink). It also differentiates from siblings by explicitly noting when to use this versus get_domain_status, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use ('NOT yet under SiteGuardian monitoring', 'fresh assessment before subscribing') and when-not-to-use ('already under monitoring', 'batch-scan as competitive-intelligence tool'), naming the alternative tool get_domain_status. This is textbook-grade usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Flicense-qualityDmaintenanceFree hosted MCP server for EU compliance, enabling search across 8 frameworks, cross-framework mapping, policy generation, and gap assessment via natural language.

gridwork-privacyofficial
AlicenseAqualityDmaintenanceMCP server that audits websites for GDPR, CCPA, and ePrivacy compliance.4441MIT- Alicense-qualityBmaintenanceMCP server for Technical SEO DNS record auditing, SOA expiry health checks, SSL/TLS inspection, and HTTP security header analysis. Enables comprehensive security audits and scoring via 10 tools.MIT
- Alicense-qualityBmaintenanceProvides GDPR compliance scanning for websites via the MCP protocol, with pay-per-call using x402 micropayments.MIT