validoria-mcp
Server Details
Continuous website testing by Validoria — monitor security, SEO, performance, and accessibility.
- Status
- Healthy
- Uptime
- 99.8% over 78 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
The guest_start_scan/guest_get_scan pair is clearly split by action (start vs. poll), and discover_tools is a distinct meta-tool. However, discover_tools references call_read_tool and call_tool (plus a hidden mass of area tools) that are not part of this surface, so an agent cannot tell whether to use the dispatcher, the named tool, or a tool it cannot see.
All names are snake_case and follow a verb_noun shape (discover_tools, guest_start_scan, guest_get_scan), with a clean guest_ family prefix for the scan pair. The only oddity is that discover_tools is a generic meta-tool while the other two are domain-specific, but that is a minor deviation.
Only three tools are exposed, yet the description of discover_tools reveals a very large domain (automation rules, journeys, load tests, notifications, reports, secrets, SLA, admin, etc.) accessed through a generic dispatcher. That mismatch makes the surface both too thin and opaque relative to the server's apparent scope.
The guest flow is complete for a start/poll lifecycle, but there is no cancel/stop, no authenticated scan or target-creation tool (create_target is referenced but absent), and the many tool areas mentioned by discover_tools are not actually represented. Notable gaps remain for anything beyond a one-off anonymous scan.
Available Tools
3 toolsdiscover_toolsDiscover ToolsARead-onlyInspect
Only everyday tools are listed; the rest (automation rules, journeys, load tests, maintenance, notifications, reports, secrets, keywords, SLA, settings, admin …) are found here. No arguments: every tool you can run, by area. query: matching tools with a summary, effect and parameters. tools: their full input schemas. Run one with call_read_tool (reads) or call_tool (changes), or by its own name.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | What you want to do, e.g. "maintenance window" or "mute alerts" | |
| tools | No | Tool names whose full input schema to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only (readOnlyHint=true). The description adds useful behavioral detail: query returns matching tools with summaries, effects, and parameters; tools returns full input schemas. It also indicates how to invoke discovered tools, which is helpful context beyond 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 front-loads the distinction between everyday and other tools, but the long parenthetical list of areas is somewhat cluttered. The parameter explanations and invocation guidance are useful but could be more tightly structured.
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?
For a discovery meta-tool with no output schema, the description does a good job explaining the output for each parameter mode and how to proceed after discovery. It does not mention limits like maxItems (e.g., 10 tools) or pagination, but those are covered by the schema.
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 100%, but the description goes further by explaining what the query parameter yields (matching tools with summary, effect, and parameters) and what the tools parameter returns (full input schemas). This adds semantic value beyond the schema's brief descriptions.
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 identifies this as a discovery tool for tools not in the everyday list, and explains what query and tools return. The opening sentence is a bit ambiguous about where tools are 'listed', but the overall purpose is clear enough for an agent to understand it as a tool search.
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?
It states that no arguments returns every tool by area, and explains how to run a discovered tool via call_read_tool, call_tool, or by name. This gives clear usage context, though it doesn't explicitly contrast with just calling tools directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guest_get_scanGet guest scan resultsARead-onlyInspect
Poll results for a guest_start_scan. Pass the scanId and guestSessionId from the start response. No API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| scanId | Yes | Scan workflow id from guest_start_scan | |
| guestSessionId | No | Guest session id returned by guest_start_scan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint=false, so the description is not carrying the safety burden. It does add genuinely non-obvious context beyond the annotations: that no API key is required and that the two ids come from the start response. It stops short of saying what a poll returns or whether an incomplete result is possible.
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 sentences, front-loaded with the action, then the inputs, then the auth note. Every sentence carries distinct information and nothing is padded.
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?
There is no output schema, so the description should indicate what a poll returns (status field, completion indicator, partial results). It says only "poll results," leaving the return shape and polling-termination semantics to inference — a meaningful gap for a polling tool.
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 100% — both scanId and guestSessionId are documented in the schema, including that they come from guest_start_scan. The description repeats that provenance but adds no new detail such as format, lifetime, or whether guestSessionId is optional in practice.
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?
States a specific verb and resource ("Poll results") and ties it directly to guest_start_scan, so the agent understands this is the retrieval counterpart to the start tool. It is not an explicit contrast with siblings (discover_tools is unmentioned), but the start/get pairing is clear enough to route correctly.
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?
"Poll results for a guest_start_scan" implies the tool is called after starting a scan and may be called repeatedly, but there is no explicit guidance on retry cadence, when to stop polling, or what to do if results are not yet ready. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guest_start_scanGuest quick scan (no account)AInspect
Run a free 6-test HTTP scan against a public URL without an API key. Rate-limited (5/IP/hour, 3/session/day). Returns scanId — poll with guest_get_scan. For continuous monitoring, sign up free and use create_target. See teste-no://docs/quickstart.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) URL to scan, e.g. https://example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: annotations only say it is non-read-only, open-world, non-idempotent and non-destructive, while the description discloses concrete rate limits (5/IP/hour, 3/session/day), the absence of an API key requirement, the fact that it is asynchronous, and that it returns a scanId requiring polling. Those are exactly the operational facts an agent needs before calling.
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 tight sentences, front-loaded with purpose, then limits, then the return/polling contract, then the upgrade path, and finally a docs pointer. No sentence is filler; each carries a distinct decision-relevant fact.
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?
There is no output schema, and the description compensates by stating the return value (scanId) and the follow-up call needed to retrieve results. Combined with the rate limits and the anonymous-access condition, nothing material is missing for correct 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?
Only one parameter and schema coverage is 100%, so the schema already documents 'url' with format and an example. The description's phrase 'against a public URL' reinforces the constraint but adds no format, syntax, or validation detail beyond what the schema provides.
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?
States a specific verb and resource ('Run a free 6-test HTTP scan against a public URL') with the qualifying constraint 'without an API key'. It also distinguishes itself from siblings by naming guest_get_scan for polling and create_target for monitoring, so an agent can route correctly without opening any schema.
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 gives the when (free, anonymous, one-off scan of a public URL), the alternative (create_target for continuous monitoring), and the follow-up path (poll with guest_get_scan). It also states the exclusion implied by 'public URL' plus the rate-limit ceiling, which tells the agent when this tool will fail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
77 tool updates
- Removed
accept_visual_baseline - Removed
acknowledge_incident - Removed
active_runs - Removed
add_keyword - Removed
analyze_target - Removed
cancel_load_test - Removed
create_automation_rule - Removed
create_journey - Removed
create_maintenance_window - Removed
create_muting_rule - Removed
create_notification_rule - Removed
create_page_fragment - Removed
create_scheduled_report - Removed
create_target - Removed
daily_trends - Removed
delete_automation_rule - Removed
delete_journey - Removed
delete_maintenance_window - Removed
delete_notification_rule - Removed
delete_page_fragment - Removed
delete_scheduled_report - Removed
delete_secret - Removed
delete_target - Removed
disable_all_tests - Added
discover_tools - Removed
enable_all_tests - Removed
get_automation_rule - Removed
get_finding - Removed
get_incident - Removed
get_journey - Removed
get_load_test - Removed
get_run - Removed
get_site_map - Removed
get_target - Removed
get_target_scores - Removed
get_target_sla - Removed
get_team_settings - Removed
import_targets - Removed
list_automation_rules - Removed
list_findings - Removed
list_incidents - Removed
list_journeys - Removed
list_keywords - Removed
list_load_tests - Removed
list_maintenance_windows - Removed
list_notification_channels - Removed
list_notification_rules - Removed
list_page_fragments - Removed
list_runs - Removed
list_scheduled_reports - Removed
list_secrets - Removed
list_targets - Removed
list_tests - Removed
list_visual_baselines - Removed
mute_finding - Removed
recompute_scores - Removed
record_deployment - Removed
remove_keyword - Removed
resolve_incident - Removed
rotate_secret - Removed
set_target_test - Removed
start_load_test - Removed
store_secret - Removed
system_health - Removed
target_stats - Removed
team_stats - Removed
trigger_all_tests - Removed
trigger_journey - Removed
trigger_test - Removed
update_automation_rule - Removed
update_journey - Removed
update_notification_rule - Removed
update_page_fragment - Removed
update_scheduled_report - Removed
update_target - Removed
update_team_settings - Removed
update_test
2 tool updates
- Added
accept_visual_baseline - Added
list_visual_baselines
2 tool updates
- Changed
update_target1 field changed- changed
Input schema / properties / uptimeKeyword / descriptionPrevious value: -"Keyword to verify in response body during uptime checks. When set, every uptime ping GETs the page and verifies this text appears (case-insensitive). If missing, the site is treated as DOWN even on HTTP 200. Set to null to disable keyword verification."New value: +"Keyword to verify in response body during uptime checks. When set, every uptime ping GETs the page and verifies this text appears (case-insensitive). If missing, the site is treated as DOWN even on HTTP 200 (reported as \"keyword not found\"). Saving a keyword fetches the page once and is refused when the keyword is not on it. Set to null to disable keyword verification."
- Changed
update_team_settings1 field changed- changed
Input schema / properties / maxDailyRunsPerTarget / descriptionPrevious value: -"Max test runs per target per day (0=unlimited). Prevents overwhelming hosted sites with limited request budgets."New value: +"Max scheduled and adaptive test runs per target per UTC day (0=unlimited). Runs started by hand (app, MCP, API) are not counted or stopped. Prevents overwhelming hosted sites with limited request budgets."
4 tool updates
- Changed
create_notification_rule1 field changed- changed
Input schema / properties / eventTypes / items / enumPrevious value: -[ - "INCIDENT_OPENED", - "INCIDENT_RESOLVED", - "INCIDENT_ACKNOWLEDGED", - "FINDING_CREATED", - "FINDING_RESOLVED", - "FINDING_ESCALATED", - "TARGET_DOWN", - "TARGET_RECOVERED", - "TEST_FAILED", - "TEST_RECOVERED", - "SCAN_COMPLETED", - "BILLING_LIMIT_REACHED", - "ACTION_REQUIRED" -]New value: +[ + "INCIDENT_OPENED", + "INCIDENT_RESOLVED", + "INCIDENT_ACKNOWLEDGED", + "FINDING_CREATED", + "FINDING_RESOLVED", + "FINDING_ESCALATED", + "TARGET_DOWN", + "TARGET_RECOVERED", + "TEST_FAILED", + "TEST_RECOVERED", + "SCAN_COMPLETED", + "BILLING_LIMIT_REACHED", + "ACTION_REQUIRED", + "SLA_BUDGET" +]
- Added
get_target_sla - Changed
update_notification_rule1 field changed- changed
Input schema / properties / eventTypes / items / enumPrevious value: -[ - "INCIDENT_OPENED", - "INCIDENT_RESOLVED", - "INCIDENT_ACKNOWLEDGED", - "FINDING_CREATED", - "FINDING_RESOLVED", - "FINDING_ESCALATED", - "TARGET_DOWN", - "TARGET_RECOVERED", - "TEST_FAILED", - "TEST_RECOVERED", - "SCAN_COMPLETED", - "BILLING_LIMIT_REACHED", - "ACTION_REQUIRED" -]New value: +[ + "INCIDENT_OPENED", + "INCIDENT_RESOLVED", + "INCIDENT_ACKNOWLEDGED", + "FINDING_CREATED", + "FINDING_RESOLVED", + "FINDING_ESCALATED", + "TARGET_DOWN", + "TARGET_RECOVERED", + "TEST_FAILED", + "TEST_RECOVERED", + "SCAN_COMPLETED", + "BILLING_LIMIT_REACHED", + "ACTION_REQUIRED", + "SLA_BUDGET" +]
- Changed
update_team_settings4 fields changed- added
Input schema / properties / aiVisibilityMonthlyCapUsdAdded value: +{ + "description": "AI visibility: monthly USD cap for all probes of the team (default 25)", + "maximum": 10000, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / aiVisibilityOpperModelAdded value: +{ + "description": "AI visibility: Perplexity model through Opper (default sonar)", + "enum": [ + "sonar", + "sonar-pro", + "sonar-reasoning-pro" + ], + "type": "string" +} - added
Input schema / properties / aiVisibilityOpperMonthlyCapUsdAdded value: +{ + "description": "AI visibility: monthly USD cap for Perplexity through Opper, on top of the AI visibility cap (default 5)", + "maximum": 1000, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / aiVisibilityOpperScheduledAdded value: +{ + "description": "AI visibility: include Perplexity through Opper (US-routed, no zero-data-retention; probes send only public brand questions) in scheduled and full runs. Off (default) = asked only on demand with \"Ask Perplexity now\"", + "type": "boolean" +}
1 tool update
- Changed
update_team_settings2 fields changed- added
Input schema / properties / scoreGradedCoveragePctAdded value: +{ + "description": "Composite scores: % of a category's test weight that must be freshly measured for the score to be GRADED (default 80)", + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / scoreProvisionalCoveragePctAdded value: +{ + "description": "Composite scores: below this % of fresh evidence a category is INSUFFICIENT and shows no number (default 60)", + "maximum": 100, + "minimum": 0, + "type": "integer" +}
1 tool update
- Added
set_target_test
1 tool update
- Changed
add_keyword1 field changed- added
Input schema / properties / pageUrlAdded value: +{ + "description": "The page this keyword is written for (absolute URL on the site)", + "format": "uri", + "maxLength": 2048, + "type": "string" +}
1 tool update
- Changed
update_team_settings1 field changed- changed
Input schema / properties / aiModel / descriptionPrevious value: -"OpenAI model for finding enrichment (e.g. gpt-4o-mini)"New value: +"Model id on the AI gateway for finding enrichment (e.g. mistral/mistral-small-2603, an EU route)"
1 tool update
- Changed
update_team_settings1 field changed- added
Input schema / properties / maxDailyRunsPerTargetAdded value: +{ + "description": "Max test runs per target per day (0=unlimited). Prevents overwhelming hosted sites with limited request budgets.", + "maximum": 1000, + "minimum": 0, + "type": "number" +}
74 tool updates
- First observed
acknowledge_incident - First observed
active_runs - First observed
add_keyword - First observed
analyze_target - First observed
cancel_load_test - First observed
create_automation_rule - First observed
create_journey - First observed
create_maintenance_window - First observed
create_muting_rule - First observed
create_notification_rule - First observed
create_page_fragment - First observed
create_scheduled_report - First observed
create_target - First observed
daily_trends - First observed
delete_automation_rule - First observed
delete_journey - First observed
delete_maintenance_window - First observed
delete_notification_rule - First observed
delete_page_fragment - First observed
delete_scheduled_report - First observed
delete_secret - First observed
delete_target - First observed
disable_all_tests - First observed
enable_all_tests - First observed
get_automation_rule - First observed
get_finding - First observed
get_incident - First observed
get_journey - First observed
get_load_test - First observed
get_run - First observed
get_site_map - First observed
get_target - First observed
get_target_scores - First observed
get_team_settings - First observed
guest_get_scan - First observed
guest_start_scan - First observed
import_targets - First observed
list_automation_rules - First observed
list_findings - First observed
list_incidents - First observed
list_journeys - First observed
list_keywords - First observed
list_load_tests - First observed
list_maintenance_windows - First observed
list_notification_channels - First observed
list_notification_rules - First observed
list_page_fragments - First observed
list_runs - First observed
list_scheduled_reports - First observed
list_secrets - First observed
list_targets - First observed
list_tests - First observed
mute_finding - First observed
recompute_scores - First observed
record_deployment - First observed
remove_keyword - First observed
resolve_incident - First observed
rotate_secret - First observed
start_load_test - First observed
store_secret - First observed
system_health - First observed
target_stats - First observed
team_stats - First observed
trigger_all_tests - First observed
trigger_journey - First observed
trigger_test - First observed
update_automation_rule - First observed
update_journey - First observed
update_notification_rule - First observed
update_page_fragment - First observed
update_scheduled_report - First observed
update_target - First observed
update_team_settings - First observed
update_test
Related MCP Connectors
Website performance monitoring: scans, Core Web Vitals, RUM data and alerts.
Website monitoring: uptime, checkout, SEO (Search Console, Bing), security, speed, DNS, compliance.
Security, SEO and AI-visibility scanner for web apps · free scans and focused checks via MCP.
Scan and monitor websites for leaked keys, exposed files, security headers, SEO issues and uptime.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceProvides comprehensive website validation across performance, accessibility, SEO, and security dimensions using multiple testing services including WebPageTest, Google PageSpeed Insights, Axe DevTools, Mozilla Observatory, and SSL Labs. Enables automated website health assessments through browser automation and API integrations.2123 npm1-

SEO Score APIofficial
AlicenseNot gradedqualityCmaintenanceAutomated SEO, AEO, ADA auditing for your website or project.76 npmMIT- AlicenseAqualityCmaintenanceRelease gate agents call before they tell users a public website is ready to ship. Scans public websites across security, SEO, accessibility, legal compliance, and sustainability.9MIT
- AlicenseAqualityDmaintenanceAudit any website for privacy, security, accessibility, and performance issues — with scores, grades, and actionable fix instructions. No account required.39 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.