Skip to main content
Glama

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.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.9/5 across 5 of 5 tools scored.

Server CoherenceA
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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 tools
get_domain_statusA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
gradeNo
domainYes
last_scan_atNo
active_issuesYes
dashboard_urlYes
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_eventsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo
domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
domainYes
eventsYes
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_recommendationsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
issue_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
domainYes
sourceYesWhich purchased product backed this response — 'monitor' for a subscription, 'report' for a one-off Report.
scanned_atYesTimestamp of the underlying scan the fixes were computed from.
recommendationsYesPriority-sorted list of actionable fixes.
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_domainsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
domainsYes
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_domainA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
gradeYes
scoreYes
cachedYesTrue when the result was served from the 2-hour ScanLog cache.
domainYes
report_urlYesPermalink to the full scan report on siteguardian.io.
scanned_atYes
top_issuesYesUp to 3 top-priority issues found. Sorted high → medium → low.
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.