{
  "data": {
    "tool": {
      "category": "observability",
      "endpoint": "https://api.teste.no/api/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/validoria-mcp.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/validoria-mcp.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/validoria-mcp.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 14014,
          "counts": {
            "error": 0,
            "note": 1,
            "warn": 78
          },
          "findings": [
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "update_notification_rule",
              "message": "7 parameters without a description: channelTypes, enabled, eventTypes, name, quietHoursEnd, quietHoursStart and 1 more",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "update_page_fragment",
              "message": "1 parameter without a description: description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "acknowledge_incident",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "active_runs",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "add_keyword",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "analyze_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"analyze\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "cancel_load_test",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_automation_rule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_journey",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_maintenance_window",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_muting_rule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_notification_rule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_page_fragment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_scheduled_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "daily_trends",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_automation_rule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_journey",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_maintenance_window",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_notification_rule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_page_fragment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_scheduled_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_secret",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "disable_all_tests",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "enable_all_tests",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_automation_rule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_finding",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_incident",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_journey",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_load_test",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_run",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_site_map",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_target_scores",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_team_settings",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "guest_get_scan",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "guest_start_scan",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "import_targets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_automation_rules",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_findings",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_incidents",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_journeys",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_keywords",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_load_tests",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_maintenance_windows",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_notification_channels",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_notification_rules",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_page_fragments",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_runs",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_scheduled_reports",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_secrets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_targets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_tests",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "mute_finding",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "recompute_scores",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "record_deployment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "remove_keyword",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "resolve_incident",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"resolve\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "rotate_secret",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "start_load_test",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "store_secret",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "system_health",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "target_stats",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "team_stats",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "trigger_all_tests",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "trigger_journey",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "trigger_test",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_automation_rule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_journey",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_notification_rule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_page_fragment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_scheduled_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_team_settings",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_test",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC21",
              "severity": "warn",
              "tool": "enable_all_tests",
              "message": "described almost the same as disable_all_tests (85% of the same words)",
              "fix": "Say in each description when to use it instead of the other."
            },
            {
              "rule": "TC23",
              "severity": "warn",
              "message": "74 tools",
              "fix": "Offer a smaller default toolset and let clients opt into the rest."
            },
            {
              "rule": "TC24",
              "severity": "note",
              "message": "74 of 74 tools have no outputSchema",
              "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:24:15Z",
        "count": 74,
        "schemaTokens": 14014,
        "status": "ok",
        "tools": [
          {
            "name": "guest_start_scan",
            "title": "Guest quick scan (no account)",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "url": {
                  "description": "Public http(s) URL to scan, e.g. https://example.com",
                  "format": "uri",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object"
            }
          },
          {
            "name": "guest_get_scan",
            "title": "Get guest scan results",
            "description": "Poll results for a guest_start_scan. Pass the scanId and guestSessionId from the start response. No API key required.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "guestSessionId": {
                  "description": "Guest session id returned by guest_start_scan",
                  "minLength": 1,
                  "type": "string"
                },
                "scanId": {
                  "description": "Scan workflow id from guest_start_scan",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "scanId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_targets",
            "title": "List Targets",
            "description": "List all monitoring targets for your team. Returns name, URL, type, status, and uptime info for each target.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "default": 50,
                  "description": "Max number of targets to return",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "number"
                },
                "status": {
                  "description": "Filter by target status",
                  "enum": [
                    "HEALTHY",
                    "WARNING",
                    "CRITICAL",
                    "UNKNOWN"
                  ],
                  "type": "string"
                },
                "type": {
                  "description": "Filter by target type",
                  "enum": [
                    "WEBSITE",
                    "API",
                    "WEBSHOP"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_target",
            "title": "Get Target Details",
            "description": "Get detailed information about a specific target including status, uptime, fingerprint, and composite scores.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "The target ID to look up",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_target_scores",
            "title": "Get Target Composite Scores",
            "description": "Get composite scores (Security, SEO, Performance, Accessibility, AI-search readiness) for a target. Each score is 0-100 with a status rating.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_findings",
            "title": "List Findings",
            "description": "List findings (discovered issues) across your targets. Filter by status, severity, or target. Returns title, severity, status, test name, and AI enrichment if available.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "default": 50,
                  "description": "Max number of findings to return",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "number"
                },
                "severity": {
                  "description": "Filter by severity",
                  "enum": [
                    "CRITICAL",
                    "WARNING",
                    "INFO"
                  ],
                  "type": "string"
                },
                "status": {
                  "description": "Filter by finding status (default: OPEN)",
                  "enum": [
                    "OPEN",
                    "MUTED",
                    "RESOLVED"
                  ],
                  "type": "string"
                },
                "targetId": {
                  "description": "Filter by target ID",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_finding",
            "title": "Get Finding Details",
            "description": "Get full details of a specific finding, including evidence, AI analysis, and recommended fix.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "findingId": {
                  "description": "The finding ID",
                  "type": "string"
                }
              },
              "required": [
                "findingId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_incidents",
            "title": "List Incidents",
            "description": "List incidents (grouped operational issues) across your targets. Filter by status. Returns title, severity, status, findings count, and deployment correlation.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "default": 50,
                  "description": "Max number of incidents to return",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "number"
                },
                "status": {
                  "description": "Filter by incident status",
                  "enum": [
                    "OPEN",
                    "ACKNOWLEDGED",
                    "RESOLVED"
                  ],
                  "type": "string"
                },
                "targetId": {
                  "description": "Filter by target ID",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_incident",
            "title": "Get Incident Details",
            "description": "Get full details of a specific incident including linked findings, AI analysis, and deployment correlation.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "incidentId": {
                  "description": "The incident ID",
                  "type": "string"
                }
              },
              "required": [
                "incidentId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_runs",
            "title": "List Runs",
            "description": "List recent test runs. Filter by target, status, or test slug. Returns run status, score, summary, duration, and finding count.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "default": 25,
                  "description": "Max number of runs to return",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "number"
                },
                "status": {
                  "description": "Filter by run status",
                  "enum": [
                    "QUEUED",
                    "RUNNING",
                    "PASSED",
                    "WARNING",
                    "FAILED",
                    "CANCELED"
                  ],
                  "type": "string"
                },
                "targetId": {
                  "description": "Filter by target ID",
                  "type": "string"
                },
                "testSlug": {
                  "description": "Filter by test definition slug (e.g. \"security-headers\")",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_run",
            "title": "Get Run Details",
            "description": "Get full details of a specific test run including metrics, score, summary, errors, and associated findings.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "runId": {
                  "description": "The run ID",
                  "type": "string"
                }
              },
              "required": [
                "runId"
              ],
              "type": "object"
            }
          },
          {
            "name": "active_runs",
            "title": "Active Runs",
            "description": "Get currently running and queued tests across all targets. Useful for checking what tests are in progress right now.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "Filter by target ID",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "team_stats",
            "title": "Team Statistics",
            "description": "Get team-wide overview statistics: total runs, pass rate, open findings, open incidents, average duration. Supports lifetime, monthly, or weekly periods.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "period": {
                  "description": "Period filter: \"lifetime\", \"2026-04\" (monthly), or \"2026-W14\" (weekly). Defaults to lifetime.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "target_stats",
            "title": "Target Statistics",
            "description": "Get statistics for a specific target: runs, pass rate, findings, duration. Supports lifetime, monthly, or weekly periods.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "period": {
                  "description": "Period filter: \"lifetime\", \"2026-04\" (monthly), or \"2026-W14\" (weekly). Defaults to lifetime.",
                  "type": "string"
                },
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "daily_trends",
            "title": "Daily Trends",
            "description": "Get daily time-series data for runs, findings, and average duration. Useful for identifying trends over time. Returns up to 90 days of data.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "days": {
                  "default": 14,
                  "description": "Number of days of history to return",
                  "maximum": 90,
                  "minimum": 1,
                  "type": "number"
                },
                "targetId": {
                  "description": "Filter by target ID (omit for team-wide)",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_site_map",
            "title": "Get Site Map",
            "description": "Get the latest crawl snapshot for a target. Returns page inventory stats, SEO issues, broken pages/assets, response times, and a diff against the previous crawl. Optionally include page-level details.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "includePages": {
                  "default": false,
                  "description": "Include individual page data (can be large). Default: false.",
                  "type": "boolean"
                },
                "pageLimit": {
                  "default": 50,
                  "description": "Max pages to return when includePages is true",
                  "maximum": 200,
                  "minimum": 1,
                  "type": "number"
                },
                "pageStatus": {
                  "description": "Filter pages by status",
                  "enum": [
                    "HEALTHY",
                    "BROKEN",
                    "REDIRECT",
                    "SLOW"
                  ],
                  "type": "string"
                },
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_maintenance_windows",
            "title": "List Maintenance Windows",
            "description": "List maintenance windows for a target. Shows scheduled and recurring maintenance periods that suppress alerts.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_tests",
            "title": "List Test Definitions",
            "description": "List all available test definitions (plugins). Shows slug, name, category, runner type, weight class, schedule, and enablement status. Useful for knowing which tests can be triggered.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "category": {
                  "description": "Filter by test category",
                  "enum": [
                    "SEO",
                    "SECURITY",
                    "PERFORMANCE",
                    "MOBILE",
                    "ACCESSIBILITY",
                    "ECOMMERCE",
                    "API_HEALTH"
                  ],
                  "type": "string"
                },
                "enabledOnly": {
                  "default": true,
                  "description": "Only show enabled tests. Default: true.",
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "trigger_test",
            "title": "Trigger Test",
            "description": "Run a specific test against a target. Specify either the test definition ID or slug. The test is queued and executed asynchronously — use get_run to check status.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "The target ID to test",
                  "type": "string"
                },
                "testId": {
                  "description": "Test definition ID (use this or testSlug)",
                  "type": "string"
                },
                "testSlug": {
                  "description": "Test slug e.g. \"security-headers\" (use this or testId)",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "trigger_all_tests",
            "title": "Trigger All Tests",
            "description": "Run all enabled tests against a target as a scan workflow. All tests in the target's test profile are queued. Returns the workflow ID and list of queued runs.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "The target ID to scan",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "acknowledge_incident",
            "title": "Acknowledge Incident",
            "description": "Acknowledge an open incident to signal that someone is looking at it. Changes status from OPEN to ACKNOWLEDGED.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "incidentId": {
                  "description": "The incident ID to acknowledge",
                  "type": "string"
                }
              },
              "required": [
                "incidentId"
              ],
              "type": "object"
            }
          },
          {
            "name": "resolve_incident",
            "title": "Resolve Incident",
            "description": "Resolve an incident to mark it as handled. Changes status to RESOLVED and sets the closed timestamp.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "incidentId": {
                  "description": "The incident ID to resolve",
                  "type": "string"
                }
              },
              "required": [
                "incidentId"
              ],
              "type": "object"
            }
          },
          {
            "name": "mute_finding",
            "title": "Mute Finding",
            "description": "Mute an open finding to suppress it from dashboards and alerts. Status changes from OPEN to MUTED.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "findingId": {
                  "description": "The finding ID to mute",
                  "type": "string"
                }
              },
              "required": [
                "findingId"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_maintenance_window",
            "title": "Create Maintenance Window",
            "description": "Schedule a maintenance window for a target. During maintenance, alerts and notifications are suppressed. Supports one-time, daily, and weekly recurring windows.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Optional description",
                  "type": "string"
                },
                "endsAt": {
                  "description": "End time as ISO 8601 string, e.g. \"2026-04-05T04:00:00Z\"",
                  "type": "string"
                },
                "isRecurring": {
                  "default": false,
                  "description": "Whether this window repeats",
                  "type": "boolean"
                },
                "name": {
                  "description": "Name for the window, e.g. \"Weekly deploy\"",
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "recurrence": {
                  "description": "Recurrence pattern (required if isRecurring is true)",
                  "enum": [
                    "DAILY",
                    "WEEKLY"
                  ],
                  "type": "string"
                },
                "startsAt": {
                  "description": "Start time as ISO 8601 string, e.g. \"2026-04-05T02:00:00Z\"",
                  "type": "string"
                },
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                }
              },
              "required": [
                "targetId",
                "name",
                "startsAt",
                "endsAt"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_maintenance_window",
            "title": "Delete Maintenance Window",
            "description": "Remove a scheduled maintenance window.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "The target ID (for access verification)",
                  "type": "string"
                },
                "windowId": {
                  "description": "The maintenance window ID to delete",
                  "type": "string"
                }
              },
              "required": [
                "windowId",
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "record_deployment",
            "title": "Record Deployment",
            "description": "Record a deployment event for a target. Deployments are auto-correlated with incidents created within 20 minutes. Useful for tracking releases and root-cause analysis.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "commitSha": {
                  "description": "Git commit SHA",
                  "type": "string"
                },
                "deployedBy": {
                  "description": "Who deployed (name, email, or system)",
                  "type": "string"
                },
                "description": {
                  "description": "Deployment description or changelog",
                  "type": "string"
                },
                "environment": {
                  "description": "Environment, e.g. \"production\", \"staging\"",
                  "type": "string"
                },
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                },
                "version": {
                  "description": "Version string, e.g. \"v2.4.1\"",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "recompute_scores",
            "title": "Recompute Composite Scores",
            "description": "Force recompute all composite scores (Security, SEO, Performance, Accessibility) for a target. Useful after manual changes or when scores seem stale.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "The target ID to recompute scores for",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_automation_rules",
            "title": "List Automation Rules",
            "description": "List all automation rules for the team. Rules automatically react to events (test failures, incidents, downtime) with configurable actions (escalate severity, suppress, rerun, webhook, notify).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "enabled": {
                  "description": "Filter by enabled/disabled status",
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_automation_rule",
            "title": "Get Automation Rule",
            "description": "Get full details of a specific automation rule.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ruleId": {
                  "description": "The automation rule ID",
                  "type": "string"
                }
              },
              "required": [
                "ruleId"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_automation_rule",
            "title": "Create Automation Rule",
            "description": "Create an automation rule that reacts to events. Triggers: TEST_FAILED, TEST_RECOVERED, INCIDENT_CREATED, INCIDENT_RESOLVED, TARGET_DOWN, TARGET_RECOVERED. Actions: escalate (change severity), suppress (mute), rerun (schedule retry), notify, webhook, add_note.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "actions": {
                  "description": "Actions to execute when triggered",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "delayMs": {
                        "description": "Delay in ms before executing (for rerun action)",
                        "maximum": 600000,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "note": {
                        "description": "Note text (for add_note action)",
                        "maxLength": 1000,
                        "type": "string"
                      },
                      "severity": {
                        "description": "Target severity (for escalate action)",
                        "enum": [
                          "CRITICAL",
                          "WARNING",
                          "INFO"
                        ],
                        "type": "string"
                      },
                      "type": {
                        "description": "Action type",
                        "enum": [
                          "escalate",
                          "suppress",
                          "rerun",
                          "notify",
                          "webhook",
                          "add_note"
                        ],
                        "type": "string"
                      },
                      "webhookUrl": {
                        "description": "Webhook URL (for webhook action)",
                        "format": "uri",
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "conditions": {
                  "additionalProperties": false,
                  "description": "Optional conditions that must be met",
                  "properties": {
                    "minRecurrence": {
                      "description": "Minimum finding recurrence count to trigger",
                      "minimum": 1,
                      "type": "integer"
                    },
                    "severities": {
                      "description": "Only trigger for these severity levels",
                      "items": {
                        "enum": [
                          "CRITICAL",
                          "WARNING",
                          "INFO"
                        ],
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "targetIds": {
                      "description": "Only trigger for these target IDs",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "testSlugs": {
                      "description": "Only trigger for these test slugs",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "name": {
                  "description": "Rule name",
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "priorityOrder": {
                  "default": 0,
                  "description": "Priority order (lower = evaluated first)",
                  "type": "integer"
                },
                "targetId": {
                  "description": "Optional target ID to scope rule to a specific target",
                  "type": "string"
                },
                "trigger": {
                  "description": "Event that triggers the rule",
                  "enum": [
                    "TEST_FAILED",
                    "TEST_RECOVERED",
                    "INCIDENT_CREATED",
                    "INCIDENT_RESOLVED",
                    "TARGET_DOWN",
                    "TARGET_RECOVERED"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "trigger",
                "actions"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_automation_rule",
            "title": "Update Automation Rule",
            "description": "Update an existing automation rule. Any field not provided will remain unchanged.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "actions": {
                  "description": "Updated actions",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "delayMs": {
                        "maximum": 600000,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "note": {
                        "maxLength": 1000,
                        "type": "string"
                      },
                      "severity": {
                        "enum": [
                          "CRITICAL",
                          "WARNING",
                          "INFO"
                        ],
                        "type": "string"
                      },
                      "type": {
                        "enum": [
                          "escalate",
                          "suppress",
                          "rerun",
                          "notify",
                          "webhook",
                          "add_note"
                        ],
                        "type": "string"
                      },
                      "webhookUrl": {
                        "format": "uri",
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "conditions": {
                  "additionalProperties": false,
                  "description": "Updated conditions",
                  "properties": {
                    "minRecurrence": {
                      "minimum": 1,
                      "type": "integer"
                    },
                    "severities": {
                      "items": {
                        "enum": [
                          "CRITICAL",
                          "WARNING",
                          "INFO"
                        ],
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "targetIds": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "testSlugs": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "isEnabled": {
                  "description": "Enable or disable the rule",
                  "type": "boolean"
                },
                "name": {
                  "description": "Updated rule name",
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "priorityOrder": {
                  "description": "Updated priority order",
                  "type": "integer"
                },
                "ruleId": {
                  "description": "The automation rule ID to update",
                  "type": "string"
                },
                "targetId": {
                  "description": "Updated target scope (null to remove target scoping)",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "trigger": {
                  "description": "Updated trigger event",
                  "enum": [
                    "TEST_FAILED",
                    "TEST_RECOVERED",
                    "INCIDENT_CREATED",
                    "INCIDENT_RESOLVED",
                    "TARGET_DOWN",
                    "TARGET_RECOVERED"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "ruleId"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_automation_rule",
            "title": "Delete Automation Rule",
            "description": "Permanently delete an automation rule.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ruleId": {
                  "description": "The automation rule ID to delete",
                  "type": "string"
                }
              },
              "required": [
                "ruleId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_journeys",
            "title": "List Journeys",
            "description": "List custom browser test flows (journeys) for a target or all team targets. Journeys are multi-step Playwright tests that verify user flows like checkout, login, and search.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "Filter by target ID. If omitted, lists all team journeys.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_journey",
            "title": "Get Journey",
            "description": "Get full details of a specific journey including all steps.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "journeyId": {
                  "description": "The journey ID",
                  "type": "string"
                }
              },
              "required": [
                "journeyId"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_journey",
            "title": "Create Journey",
            "description": "Create a custom browser test flow for a target. Steps are executed sequentially in a Playwright browser. Supports actions: navigate, click, type, fill, select, assert, wait, screenshot, scroll, hover, use_fragment. Variables like {{LOGIN_EMAIL}} are resolved from the target secrets vault.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Journey description",
                  "maxLength": 2000,
                  "type": "string"
                },
                "name": {
                  "description": "Journey name",
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "platform": {
                  "description": "Platform tag (e.g. \"shopify\", \"woocommerce\")",
                  "maxLength": 50,
                  "type": "string"
                },
                "steps": {
                  "description": "Ordered list of browser actions",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "action": {
                        "enum": [
                          "navigate",
                          "click",
                          "type",
                          "fill",
                          "select",
                          "assert",
                          "wait",
                          "screenshot",
                          "scroll",
                          "hover",
                          "use_fragment"
                        ],
                        "type": "string"
                      },
                      "assertionOperator": {
                        "description": "Assertion type (for assert action)",
                        "enum": [
                          "element_visible",
                          "element_hidden",
                          "url_contains",
                          "text_contains",
                          "element_count"
                        ],
                        "type": "string"
                      },
                      "label": {
                        "description": "Human-readable step description",
                        "maxLength": 200,
                        "minLength": 1,
                        "type": "string"
                      },
                      "screenshot": {
                        "default": false,
                        "description": "Capture screenshot after this step",
                        "type": "boolean"
                      },
                      "target": {
                        "description": "CSS selector or URL target",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value to type/fill, URL to navigate to, or fragment ID for use_fragment",
                        "type": "string"
                      },
                      "waitMs": {
                        "description": "Wait duration in ms (for wait action)",
                        "maximum": 30000,
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [
                      "action",
                      "label"
                    ],
                    "type": "object"
                  },
                  "maxItems": 50,
                  "minItems": 1,
                  "type": "array"
                },
                "targetId": {
                  "description": "Target ID to create the journey for",
                  "type": "string"
                },
                "timeoutSeconds": {
                  "default": 60,
                  "description": "Max execution time in seconds",
                  "maximum": 300,
                  "minimum": 10,
                  "type": "number"
                }
              },
              "required": [
                "targetId",
                "name",
                "steps"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_journey",
            "title": "Update Journey",
            "description": "Update a journey's name, settings, or steps. When steps are provided, all existing steps are replaced.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "anyOf": [
                    {
                      "maxLength": 2000,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Updated description"
                },
                "isEnabled": {
                  "description": "Enable or disable the journey",
                  "type": "boolean"
                },
                "journeyId": {
                  "description": "The journey ID to update",
                  "type": "string"
                },
                "name": {
                  "description": "Updated name",
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "steps": {
                  "description": "Replacement steps (replaces all existing steps)",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "action": {
                        "enum": [
                          "navigate",
                          "click",
                          "type",
                          "fill",
                          "select",
                          "assert",
                          "wait",
                          "screenshot",
                          "scroll",
                          "hover",
                          "use_fragment"
                        ],
                        "type": "string"
                      },
                      "assertionOperator": {
                        "description": "Assertion type (for assert action)",
                        "enum": [
                          "element_visible",
                          "element_hidden",
                          "url_contains",
                          "text_contains",
                          "element_count"
                        ],
                        "type": "string"
                      },
                      "label": {
                        "description": "Human-readable step description",
                        "maxLength": 200,
                        "minLength": 1,
                        "type": "string"
                      },
                      "screenshot": {
                        "default": false,
                        "description": "Capture screenshot after this step",
                        "type": "boolean"
                      },
                      "target": {
                        "description": "CSS selector or URL target",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value to type/fill, URL to navigate to, or fragment ID for use_fragment",
                        "type": "string"
                      },
                      "waitMs": {
                        "description": "Wait duration in ms (for wait action)",
                        "maximum": 30000,
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [
                      "action",
                      "label"
                    ],
                    "type": "object"
                  },
                  "maxItems": 50,
                  "minItems": 1,
                  "type": "array"
                },
                "timeoutSeconds": {
                  "description": "Updated timeout",
                  "maximum": 300,
                  "minimum": 10,
                  "type": "number"
                }
              },
              "required": [
                "journeyId"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_journey",
            "title": "Delete Journey",
            "description": "Permanently delete a journey and all its steps.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "journeyId": {
                  "description": "The journey ID to delete",
                  "type": "string"
                }
              },
              "required": [
                "journeyId"
              ],
              "type": "object"
            }
          },
          {
            "name": "trigger_journey",
            "title": "Trigger Journey",
            "description": "Execute a journey (custom browser test flow) against its target. The journey runs asynchronously — use get_run to check progress.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "journeyId": {
                  "description": "The journey ID to trigger",
                  "type": "string"
                }
              },
              "required": [
                "journeyId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_scheduled_reports",
            "title": "List Scheduled Reports",
            "description": "List all scheduled reports for the team. Reports are automatically generated and emailed on a daily or weekly basis.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            }
          },
          {
            "name": "create_scheduled_report",
            "title": "Create Scheduled Report",
            "description": "Create a new scheduled email report. Reports include run stats, open findings, composite scores, and per-target status.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "dayOfWeek": {
                  "default": 1,
                  "description": "Day of week for WEEKLY reports (0=Sunday, 1=Monday, ..., 6=Saturday)",
                  "maximum": 6,
                  "minimum": 0,
                  "type": "number"
                },
                "frequency": {
                  "default": "WEEKLY",
                  "description": "How often to send",
                  "enum": [
                    "DAILY",
                    "WEEKLY"
                  ],
                  "type": "string"
                },
                "hourUtc": {
                  "default": 8,
                  "description": "Hour in UTC to send the report",
                  "maximum": 23,
                  "minimum": 0,
                  "type": "number"
                },
                "name": {
                  "default": "Weekly Summary",
                  "description": "Report name",
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "recipients": {
                  "default": "",
                  "description": "Comma-separated email addresses. Empty = all team members.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "update_scheduled_report",
            "title": "Update Scheduled Report",
            "description": "Update an existing scheduled report. Any field not provided stays unchanged.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "dayOfWeek": {
                  "description": "Updated day of week",
                  "maximum": 6,
                  "minimum": 0,
                  "type": "number"
                },
                "enabled": {
                  "description": "Enable or disable the report",
                  "type": "boolean"
                },
                "frequency": {
                  "description": "Updated frequency",
                  "enum": [
                    "DAILY",
                    "WEEKLY"
                  ],
                  "type": "string"
                },
                "hourUtc": {
                  "description": "Updated hour UTC",
                  "maximum": 23,
                  "minimum": 0,
                  "type": "number"
                },
                "name": {
                  "description": "Updated name",
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "recipients": {
                  "description": "Updated comma-separated email list",
                  "type": "string"
                },
                "reportId": {
                  "description": "The scheduled report ID to update",
                  "type": "string"
                }
              },
              "required": [
                "reportId"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_scheduled_report",
            "title": "Delete Scheduled Report",
            "description": "Permanently delete a scheduled report.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "reportId": {
                  "description": "The scheduled report ID to delete",
                  "type": "string"
                }
              },
              "required": [
                "reportId"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_team_settings",
            "title": "Get Team Settings",
            "description": "Get the team's configuration including AI enrichment, uptime monitoring, severity escalation, run policies, notification coalescing, SEO, and Kloner Tasks integration settings.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            }
          },
          {
            "name": "update_team_settings",
            "title": "Update Team Settings",
            "description": "Update team configuration. All fields are optional — only provided fields are changed. Covers: AI enrichment (model, temperature, auto-enrich, spending cap), uptime (timeout, thresholds), severity escalation (recurrence/age triggers), run policies (concurrency, timeouts), SEO (rank tracking, keyword strategy), notification coalescing (digest), and the kill switch (testsPaused).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "aiAutoEnrich": {
                  "description": "Auto-enrich new findings with AI",
                  "type": "boolean"
                },
                "aiCapAction": {
                  "description": "Action when cap is reached",
                  "enum": [
                    "disable",
                    "warn"
                  ],
                  "type": "string"
                },
                "aiEnabled": {
                  "description": "Enable/disable AI finding enrichment",
                  "type": "boolean"
                },
                "aiModel": {
                  "description": "Model id on the AI gateway for finding enrichment (e.g. mistral/mistral-small-2603, an EU route)",
                  "type": "string"
                },
                "aiMonthlyCapUsd": {
                  "anyOf": [
                    {
                      "maximum": 10000,
                      "minimum": 0.01,
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Monthly AI spending cap in USD (null = unlimited)"
                },
                "aiSourceReviewModel": {
                  "description": "Model for AI source review plugin",
                  "type": "string"
                },
                "defaultRunTimeoutMs": {
                  "description": "Default run timeout in ms",
                  "maximum": 3600000,
                  "minimum": 30000,
                  "type": "number"
                },
                "defaultScheduleMultiplier": {
                  "description": "Schedule frequency multiplier (\u003c 1 = more frequent)",
                  "maximum": 10,
                  "minimum": 0.1,
                  "type": "number"
                },
                "digestEnabled": {
                  "description": "Enable notification alert coalescing",
                  "type": "boolean"
                },
                "digestWindowSeconds": {
                  "description": "Digest window duration in seconds",
                  "maximum": 86400,
                  "minimum": 30,
                  "type": "number"
                },
                "escalateInfoAgeDays": {
                  "description": "Finding age in days before INFO→WARNING",
                  "maximum": 365,
                  "minimum": 1,
                  "type": "number"
                },
                "escalateInfoRecurrence": {
                  "description": "Finding recurrences before INFO→WARNING",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "number"
                },
                "escalateWarningAgeDays": {
                  "description": "Finding age in days before WARNING→CRITICAL",
                  "maximum": 365,
                  "minimum": 1,
                  "type": "number"
                },
                "escalateWarningRecurrence": {
                  "description": "Finding recurrences before WARNING→CRITICAL",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "number"
                },
                "maxConcurrentRunsPerTarget": {
                  "description": "Max concurrent test runs per target",
                  "maximum": 20,
                  "minimum": 1,
                  "type": "number"
                },
                "maxDailyRunsPerTarget": {
                  "description": "Max test runs per target per day (0=unlimited). Prevents overwhelming hosted sites with limited request budgets.",
                  "maximum": 1000,
                  "minimum": 0,
                  "type": "number"
                },
                "seoRankCheckEnabled": {
                  "description": "Enable Google rank tracking",
                  "type": "boolean"
                },
                "testsPaused": {
                  "description": "Kill switch — pauses ALL scheduled and manual test runs",
                  "type": "boolean"
                },
                "uptimeDegradedThresholdMs": {
                  "description": "Response time threshold for DEGRADED status",
                  "maximum": 15000,
                  "minimum": 500,
                  "type": "number"
                },
                "uptimeFailThreshold": {
                  "description": "Consecutive failures before DOWN",
                  "maximum": 10,
                  "minimum": 1,
                  "type": "number"
                },
                "uptimePingTimeoutMs": {
                  "description": "Uptime ping timeout in ms",
                  "maximum": 30000,
                  "minimum": 1000,
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "list_notification_rules",
            "title": "List Notification Rules",
            "description": "List all notification alert rules for the team. Rules map event types + severity levels to notification channels.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            }
          },
          {
            "name": "create_notification_rule",
            "title": "Create Notification Rule",
            "description": "Create a notification alert rule. Defines which events at which severity levels trigger notifications on which channels. Supports quiet hours and per-target scoping.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "channelTypes": {
                  "description": "Channels to notify",
                  "items": {
                    "enum": [
                      "IN_APP",
                      "EMAIL",
                      "SLACK",
                      "WEBHOOK",
                      "SMS",
                      "WEB_PUSH"
                    ],
                    "type": "string"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "enabled": {
                  "default": true,
                  "description": "Whether the rule is active",
                  "type": "boolean"
                },
                "eventTypes": {
                  "description": "Events that trigger this rule",
                  "items": {
                    "enum": [
                      "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"
                    ],
                    "type": "string"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "name": {
                  "description": "Rule name",
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "quietHoursEnd": {
                  "description": "Quiet hours end (hour UTC)",
                  "maximum": 23,
                  "minimum": 0,
                  "type": "number"
                },
                "quietHoursStart": {
                  "description": "Quiet hours start (hour UTC)",
                  "maximum": 23,
                  "minimum": 0,
                  "type": "number"
                },
                "severities": {
                  "description": "Only trigger for these severities",
                  "items": {
                    "enum": [
                      "CRITICAL",
                      "WARNING",
                      "INFO"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "targetId": {
                  "description": "Scope to a specific target",
                  "type": "string"
                }
              },
              "required": [
                "name",
                "eventTypes",
                "channelTypes"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_notification_rule",
            "title": "Update Notification Rule",
            "description": "Update a notification rule. Only provided fields are changed.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "channelTypes": {
                  "items": {
                    "enum": [
                      "IN_APP",
                      "EMAIL",
                      "SLACK",
                      "WEBHOOK",
                      "SMS",
                      "WEB_PUSH"
                    ],
                    "type": "string"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "enabled": {
                  "type": "boolean"
                },
                "eventTypes": {
                  "items": {
                    "enum": [
                      "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"
                    ],
                    "type": "string"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "name": {
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "quietHoursEnd": {
                  "anyOf": [
                    {
                      "maximum": 23,
                      "minimum": 0,
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "quietHoursStart": {
                  "anyOf": [
                    {
                      "maximum": 23,
                      "minimum": 0,
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "ruleId": {
                  "description": "The notification rule ID",
                  "type": "string"
                },
                "severities": {
                  "items": {
                    "enum": [
                      "CRITICAL",
                      "WARNING",
                      "INFO"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "ruleId"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_notification_rule",
            "title": "Delete Notification Rule",
            "description": "Permanently delete a notification rule.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ruleId": {
                  "description": "The notification rule ID to delete",
                  "type": "string"
                }
              },
              "required": [
                "ruleId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_notification_channels",
            "title": "List Notification Channels",
            "description": "List all notification channels (Email, Slack, Webhook, SMS, Web Push) configured for the team. Sensitive config values are redacted.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            }
          },
          {
            "name": "list_keywords",
            "title": "List Target Keywords",
            "description": "List all SEO keywords tracked for a target, including latest Google rank position. Max 50 per target.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "add_keyword",
            "title": "Add Keyword",
            "description": "Add an SEO keyword to track for a target. Max 50 keywords per target.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "isPrimary": {
                  "default": false,
                  "description": "Mark as primary keyword",
                  "type": "boolean"
                },
                "keyword": {
                  "description": "The keyword to track",
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "pageScope": {
                  "description": "URL pathname pattern to scope the keyword to (e.g. /kategori/*)",
                  "maxLength": 500,
                  "type": "string"
                },
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                }
              },
              "required": [
                "targetId",
                "keyword"
              ],
              "type": "object"
            }
          },
          {
            "name": "remove_keyword",
            "title": "Remove Keyword",
            "description": "Remove an SEO keyword from a target.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "keywordId": {
                  "description": "The keyword ID to remove",
                  "type": "string"
                },
                "targetId": {
                  "description": "The target ID (for access verification)",
                  "type": "string"
                }
              },
              "required": [
                "keywordId",
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "start_load_test",
            "title": "Start Load Test",
            "description": "Start a load test against a target. Max 100 concurrent connections, max 5 min duration, 1 test at a time per target, 60s cooldown between tests. Modes: HTTP_FLOOD (autocannon), BROWSER_USERS (Playwright), COMBINED (both). OWNER/ADMIN only.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "acknowledgeSharedOrigin": {
                  "description": "Acknowledge blast radius if target shares a server with other monitored sites",
                  "type": "boolean"
                },
                "concurrency": {
                  "default": 10,
                  "description": "Number of concurrent connections",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "number"
                },
                "duration": {
                  "default": 30,
                  "description": "Test duration in seconds",
                  "maximum": 300,
                  "minimum": 10,
                  "type": "number"
                },
                "httpMethod": {
                  "description": "HTTP method",
                  "enum": [
                    "GET",
                    "POST",
                    "PUT",
                    "DELETE",
                    "PATCH"
                  ],
                  "type": "string"
                },
                "mode": {
                  "default": "HTTP_FLOOD",
                  "description": "Load test mode",
                  "enum": [
                    "HTTP_FLOOD",
                    "BROWSER_USERS",
                    "COMBINED"
                  ],
                  "type": "string"
                },
                "rampUp": {
                  "description": "Ramp-up time in seconds",
                  "maximum": 60,
                  "minimum": 0,
                  "type": "number"
                },
                "targetId": {
                  "description": "The target ID to load test",
                  "type": "string"
                },
                "targetUrl": {
                  "description": "Override URL (defaults to target URL)",
                  "format": "uri",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "cancel_load_test",
            "title": "Cancel Load Test",
            "description": "Cancel a running load test.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "loadTestRunId": {
                  "description": "The load test run ID to cancel",
                  "type": "string"
                }
              },
              "required": [
                "loadTestRunId"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_load_test",
            "title": "Get Load Test Results",
            "description": "Get details and results of a load test run.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "loadTestRunId": {
                  "description": "The load test run ID",
                  "type": "string"
                }
              },
              "required": [
                "loadTestRunId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_load_tests",
            "title": "List Load Test History",
            "description": "List recent load test runs for a target.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "default": 10,
                  "description": "Max results",
                  "maximum": 50,
                  "minimum": 1,
                  "type": "number"
                },
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_secrets",
            "title": "List Target Secrets",
            "description": "List secrets stored in a target's vault. Values are masked — only key names and labels are shown. Secrets are used by test plugins (e.g. LOGIN_EMAIL, LOGIN_PASSWORD for B2B shops, ga4_service_account for GA4).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "store_secret",
            "title": "Store Secret",
            "description": "Store an encrypted secret in a target's vault. Common keys: LOGIN_EMAIL, LOGIN_PASSWORD (B2B shop auth), ga4_service_account (GA4 monitoring). Values are AES-256-GCM encrypted at rest.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Optional description",
                  "maxLength": 500,
                  "type": "string"
                },
                "environment": {
                  "default": "PRODUCTION",
                  "description": "Environment scope",
                  "enum": [
                    "PRODUCTION",
                    "STAGING",
                    "DEVELOPMENT"
                  ],
                  "type": "string"
                },
                "key": {
                  "description": "Secret key (e.g. LOGIN_EMAIL)",
                  "maxLength": 100,
                  "minLength": 1,
                  "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
                  "type": "string"
                },
                "label": {
                  "description": "Human-readable label",
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "targetId": {
                  "description": "The target ID",
                  "type": "string"
                },
                "value": {
                  "description": "Secret value (will be encrypted)",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "targetId",
                "key",
                "label",
                "value"
              ],
              "type": "object"
            }
          },
          {
            "name": "rotate_secret",
            "title": "Rotate Secret",
            "description": "Update the value of an existing secret.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "newValue": {
                  "description": "New secret value",
                  "minLength": 1,
                  "type": "string"
                },
                "secretId": {
                  "description": "The secret ID to rotate",
                  "type": "string"
                },
                "targetId": {
                  "description": "The target ID (for access verification)",
                  "type": "string"
                }
              },
              "required": [
                "secretId",
                "targetId",
                "newValue"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_secret",
            "title": "Delete Secret",
            "description": "Permanently delete a secret from a target's vault.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "secretId": {
                  "description": "The secret ID to delete",
                  "type": "string"
                },
                "targetId": {
                  "description": "The target ID (for access verification)",
                  "type": "string"
                }
              },
              "required": [
                "secretId",
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_page_fragments",
            "title": "List Page Fragments",
            "description": "List all reusable page fragments for the team. Fragments are shared step sequences (e.g. \"Login\", \"Dismiss Cookies\") that can be inserted into multiple Journeys via the use_fragment action.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            }
          },
          {
            "name": "create_page_fragment",
            "title": "Create Page Fragment",
            "description": "Create a reusable step sequence that can be shared across multiple Journeys. Fragment names must be unique per team.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Fragment description",
                  "maxLength": 2000,
                  "type": "string"
                },
                "name": {
                  "description": "Fragment name (unique per team)",
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "steps": {
                  "description": "Ordered list of browser actions",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "action": {
                        "enum": [
                          "navigate",
                          "click",
                          "type",
                          "fill",
                          "select",
                          "assert",
                          "wait",
                          "screenshot",
                          "scroll",
                          "hover"
                        ],
                        "type": "string"
                      },
                      "assertionOperator": {
                        "enum": [
                          "element_visible",
                          "element_hidden",
                          "url_contains",
                          "text_contains",
                          "element_count"
                        ],
                        "type": "string"
                      },
                      "label": {
                        "description": "Step description",
                        "maxLength": 200,
                        "minLength": 1,
                        "type": "string"
                      },
                      "screenshot": {
                        "default": false,
                        "type": "boolean"
                      },
                      "target": {
                        "description": "CSS selector or URL",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value to type/fill or URL to navigate",
                        "type": "string"
                      },
                      "waitMs": {
                        "maximum": 30000,
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [
                      "action",
                      "label"
                    ],
                    "type": "object"
                  },
                  "maxItems": 30,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "name",
                "steps"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_page_fragment",
            "title": "Update Page Fragment",
            "description": "Update a page fragment. When steps are provided, all existing steps are replaced.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "anyOf": [
                    {
                      "maxLength": 2000,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "fragmentId": {
                  "description": "The fragment ID",
                  "type": "string"
                },
                "name": {
                  "description": "Updated name",
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "steps": {
                  "description": "Replacement steps",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "action": {
                        "enum": [
                          "navigate",
                          "click",
                          "type",
                          "fill",
                          "select",
                          "assert",
                          "wait",
                          "screenshot",
                          "scroll",
                          "hover"
                        ],
                        "type": "string"
                      },
                      "assertionOperator": {
                        "enum": [
                          "element_visible",
                          "element_hidden",
                          "url_contains",
                          "text_contains",
                          "element_count"
                        ],
                        "type": "string"
                      },
                      "label": {
                        "description": "Step description",
                        "maxLength": 200,
                        "minLength": 1,
                        "type": "string"
                      },
                      "screenshot": {
                        "default": false,
                        "type": "boolean"
                      },
                      "target": {
                        "description": "CSS selector or URL",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value to type/fill or URL to navigate",
                        "type": "string"
                      },
                      "waitMs": {
                        "maximum": 30000,
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [
                      "action",
                      "label"
                    ],
                    "type": "object"
                  },
                  "maxItems": 30,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "fragmentId"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_page_fragment",
            "title": "Delete Page Fragment",
            "description": "Permanently delete a page fragment.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "fragmentId": {
                  "description": "The fragment ID to delete",
                  "type": "string"
                }
              },
              "required": [
                "fragmentId"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_target",
            "title": "Create Target",
            "description": "Add a new website, API, or webshop target for monitoring with full onboarding. Automatically enables compatible tests, triggers an initial scan, and captures a page screenshot. Requires write scope (Free plan: 1 target). Use analyze_target first to detect platform and get test recommendations.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "environment": {
                  "default": "PRODUCTION",
                  "description": "Deployment environment",
                  "enum": [
                    "PRODUCTION",
                    "STAGING",
                    "DEV"
                  ],
                  "type": "string"
                },
                "name": {
                  "description": "Display name for the target",
                  "maxLength": 255,
                  "minLength": 1,
                  "type": "string"
                },
                "tags": {
                  "default": [],
                  "description": "Optional tags for categorization",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "type": {
                  "description": "Target type: WEBSITE, API, or WEBSHOP. Use analyze_target to auto-detect.",
                  "enum": [
                    "WEBSITE",
                    "API",
                    "WEBSHOP"
                  ],
                  "type": "string"
                },
                "uptimeEnabled": {
                  "default": true,
                  "description": "Enable background uptime monitoring",
                  "type": "boolean"
                },
                "url": {
                  "description": "URL to monitor, e.g. \"https://example.com\"",
                  "format": "uri",
                  "type": "string"
                },
                "weight": {
                  "default": "PUBLIC",
                  "description": "Business weight, used to rank findings by consequence: REVENUE_PATH (checkout, payment, signup), PUBLIC (customer-visible but not transactional), INTERNAL (staging, admin tooling).",
                  "enum": [
                    "REVENUE_PATH",
                    "PUBLIC",
                    "INTERNAL"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "url",
                "type"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_target",
            "title": "Update Target",
            "description": "Update a target's properties (name, URL, type, environment, business weight, tags, uptime toggle).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "environment": {
                  "description": "New environment",
                  "enum": [
                    "PRODUCTION",
                    "STAGING",
                    "DEV"
                  ],
                  "type": "string"
                },
                "name": {
                  "description": "New display name",
                  "maxLength": 255,
                  "minLength": 1,
                  "type": "string"
                },
                "tags": {
                  "description": "New tags (replaces existing)",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "targetId": {
                  "description": "The target ID to update",
                  "type": "string"
                },
                "type": {
                  "description": "New target type",
                  "enum": [
                    "WEBSITE",
                    "API",
                    "WEBSHOP"
                  ],
                  "type": "string"
                },
                "uptimeEnabled": {
                  "description": "Toggle uptime monitoring",
                  "type": "boolean"
                },
                "uptimeKeyword": {
                  "anyOf": [
                    {
                      "anyOf": [
                        {
                          "not": {}
                        },
                        {
                          "maxLength": 500,
                          "type": "string"
                        }
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "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."
                },
                "url": {
                  "description": "New URL",
                  "format": "uri",
                  "type": "string"
                },
                "weight": {
                  "description": "New business weight: REVENUE_PATH, PUBLIC or INTERNAL. Changing this rescores the target's open findings so the consequence ranking updates immediately.",
                  "enum": [
                    "REVENUE_PATH",
                    "PUBLIC",
                    "INTERNAL"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "targetId"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_target",
            "title": "Delete Target",
            "description": "Permanently delete a target and all its associated data (runs, findings, incidents, artifacts). This cannot be undone.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "confirm": {
                  "description": "Must be true to confirm deletion",
                  "type": "boolean"
                },
                "targetId": {
                  "description": "The target ID to delete",
                  "type": "string"
                }
              },
              "required": [
                "targetId",
                "confirm"
              ],
              "type": "object"
            }
          },
          {
            "name": "analyze_target",
            "title": "Analyze Target",
            "description": "Fingerprint a URL and get test recommendations before creating a target. Detects platform (Shopify, WordPress, etc.), CDN, server stack, frontend framework, analytics, and B2B/ecommerce signals. Returns recommended tests with explanations. Use this before create_target to know what type to assign and which tests will be enabled.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "url": {
                  "description": "URL to analyze, e.g. \"https://example.com\"",
                  "format": "uri",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object"
            }
          },
          {
            "name": "import_targets",
            "title": "Import Targets",
            "description": "Bulk import up to 100 websites for monitoring. Each URL gets a target created with auto-enabled tests, initial scan, and screenshot capture. Partial success — failed URLs are reported individually without blocking others.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "items": {
                  "description": "Array of targets to import",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "description": "Display name (defaults to hostname)",
                        "type": "string"
                      },
                      "type": {
                        "default": "WEBSITE",
                        "description": "Target type",
                        "enum": [
                          "WEBSITE",
                          "API",
                          "WEBSHOP"
                        ],
                        "type": "string"
                      },
                      "url": {
                        "description": "URL to monitor",
                        "format": "uri",
                        "type": "string"
                      }
                    },
                    "required": [
                      "url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 100,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "items"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_muting_rule",
            "title": "Create Muting Rule",
            "description": "Create a rule to auto-mute findings matching a pattern. Existing open findings matching the rule are muted immediately. Supports muting by fingerprint pattern, test definition, or test+target combination.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "expiresAt": {
                  "description": "Optional expiry as ISO 8601 string. Rule auto-expires after this time.",
                  "type": "string"
                },
                "fingerprintPattern": {
                  "description": "Substring to match in finding fingerprints (required for FINGERPRINT scope)",
                  "type": "string"
                },
                "reason": {
                  "description": "Reason for muting",
                  "maxLength": 500,
                  "type": "string"
                },
                "scope": {
                  "description": "FINGERPRINT: match by finding fingerprint substring. TEST_DEFINITION: mute all findings from a test. TEST_TARGET: mute findings from a specific test on a specific target.",
                  "enum": [
                    "FINGERPRINT",
                    "TEST_DEFINITION",
                    "TEST_TARGET"
                  ],
                  "type": "string"
                },
                "targetId": {
                  "description": "Target ID to scope the rule to (required for TEST_TARGET, optional for others)",
                  "type": "string"
                },
                "testDefinitionId": {
                  "description": "Test definition ID (required for TEST_DEFINITION and TEST_TARGET scopes)",
                  "type": "string"
                }
              },
              "required": [
                "scope"
              ],
              "type": "object"
            }
          },
          {
            "name": "system_health",
            "title": "System Health",
            "description": "Get a comprehensive system health report: BullMQ queue depths, active/stuck runs, user sessions, notification delivery stats, and recent error counts. Requires admin scope.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            }
          },
          {
            "name": "update_test",
            "title": "Update Test Definition",
            "description": "Enable or disable a test definition globally, or update its schedule/timeout. Requires admin scope.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "defaultSchedule": {
                  "description": "Cron schedule (e.g. \"0 */6 * * *\")",
                  "type": "string"
                },
                "enabled": {
                  "description": "Enable or disable the test globally",
                  "type": "boolean"
                },
                "slug": {
                  "description": "Test plugin slug (e.g. \"http-protocol-check\")",
                  "type": "string"
                },
                "timeout": {
                  "description": "Timeout in milliseconds",
                  "type": "number"
                }
              },
              "required": [
                "slug"
              ],
              "type": "object"
            }
          },
          {
            "name": "enable_all_tests",
            "title": "Enable All Tests",
            "description": "Enable all test definitions globally. Optionally filter by category to only enable tests in that category. Requires admin scope.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "category": {
                  "description": "Only enable tests in this category. Omit to enable all.",
                  "enum": [
                    "SEO",
                    "SECURITY",
                    "PERFORMANCE",
                    "MOBILE",
                    "ACCESSIBILITY",
                    "ECOMMERCE",
                    "API_HEALTH"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "disable_all_tests",
            "title": "Disable All Tests",
            "description": "Disable all test definitions globally. Optionally filter by category to only disable tests in that category. Requires admin scope.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "category": {
                  "description": "Only disable tests in this category. Omit to disable all.",
                  "enum": [
                    "SEO",
                    "SECURITY",
                    "PERFORMANCE",
                    "MOBILE",
                    "ACCESSIBILITY",
                    "ECOMMERCE",
                    "API_HEALTH"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        ]
      },
      "name": "validoria-mcp",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": [
        {
          "registryType": "npm",
          "identifier": "validoria-mcp",
          "version": "2.0.1",
          "transport": "stdio"
        }
      ],
      "pageJsonUrl": "https://www.anchorterminal.com/tools/validoria-mcp.json",
      "popularity": {
        "npmWeekly": 24
      },
      "registryName": "com.validoria/validoria-mcp",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://api.teste.no/api/mcp"
        }
      ],
      "repository": "",
      "reviewed": false,
      "slug": "validoria-mcp",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=com.validoria/validoria-mcp",
      "summary": "Continuous website testing by Validoria — monitor security, SEO, performance, and accessibility.",
      "updatedAt": "2026-08-10T05:49:33Z",
      "url": "https://www.anchorterminal.com/tools/validoria-mcp",
      "vendor": "validoria.com",
      "vendorUrl": "https://validoria.com",
      "version": "2.0.1",
      "websiteUrl": "https://validoria.com",
      "where": "both",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/validoria-mcp",
    "json": "https://www.anchorterminal.com/tools/validoria-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/validoria-mcp.md",
    "slim": "https://www.anchorterminal.com/tools/validoria-mcp.min.md"
  },
  "markdown": "# validoria-mcp\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by validoria.com (https://validoria.com)\n- Category: Observability \u0026 incidents (https://www.anchorterminal.com/categories/observability.md)\n- Listed because: It's published in the registry under validoria.com, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Continuous website testing by Validoria — monitor security, SEO, performance, and accessibility.\n\n## Facts\n\n- MCP registry: `com.validoria/validoria-mcp` 2.0.1\n- Endpoint: https://api.teste.no/api/mcp (streamable HTTP)\n- Package: npm `validoria-mcp` (stdio)\n- Website: https://validoria.com\n- npm downloads a week: 24\n- Registry entry updated: 2026-08-10\n\n## Tools\n\n- Tools it lists (74, about 14,014 tokens of context, `tools/list` without credentials over MCP 2025-11-25, checked 2026-10-04 22:24 UTC):\n  - `guest_start_scan`: 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…\n  - `guest_get_scan`: Poll results for a guest_start_scan. Pass the scanId and guestSessionId from the start response. No API key required.\n  - `list_targets`: List all monitoring targets for your team. Returns name, URL, type, status, and uptime info for each target.\n  - `get_target`: Get detailed information about a specific target including status, uptime, fingerprint, and composite scores.\n  - `get_target_scores`: Get composite scores (Security, SEO, Performance, Accessibility, AI-search readiness) for a target. Each score is 0-100 with a status rating.\n  - `list_findings`: List findings (discovered issues) across your targets. Filter by status, severity, or target. Returns title, severity, status, test name, and AI enrichment if…\n  - `get_finding`: Get full details of a specific finding, including evidence, AI analysis, and recommended fix.\n  - `list_incidents`: List incidents (grouped operational issues) across your targets. Filter by status. Returns title, severity, status, findings count, and deployment correlation.\n  - `get_incident`: Get full details of a specific incident including linked findings, AI analysis, and deployment correlation.\n  - `list_runs`: List recent test runs. Filter by target, status, or test slug. Returns run status, score, summary, duration, and finding count.\n  - `get_run`: Get full details of a specific test run including metrics, score, summary, errors, and associated findings.\n  - `active_runs`: Get currently running and queued tests across all targets. Useful for checking what tests are in progress right now.\n  - `team_stats`: Get team-wide overview statistics: total runs, pass rate, open findings, open incidents, average duration. Supports lifetime, monthly, or weekly periods.\n  - `target_stats`: Get statistics for a specific target: runs, pass rate, findings, duration. Supports lifetime, monthly, or weekly periods.\n  - `daily_trends`: Get daily time-series data for runs, findings, and average duration. Useful for identifying trends over time. Returns up to 90 days of data.\n  - `get_site_map`: Get the latest crawl snapshot for a target. Returns page inventory stats, SEO issues, broken pages/assets, response times, and a diff against the previous…\n  - `list_maintenance_windows`: List maintenance windows for a target. Shows scheduled and recurring maintenance periods that suppress alerts.\n  - `list_tests`: List all available test definitions (plugins). Shows slug, name, category, runner type, weight class, schedule, and enablement status. Useful for knowing which…\n  - `trigger_test`: Run a specific test against a target. Specify either the test definition ID or slug. The test is queued and executed asynchronously — use get_run to check…\n  - `trigger_all_tests`: Run all enabled tests against a target as a scan workflow. All tests in the target's test profile are queued. Returns the workflow ID and list of queued runs.\n  - `acknowledge_incident`: Acknowledge an open incident to signal that someone is looking at it. Changes status from OPEN to ACKNOWLEDGED.\n  - `resolve_incident`: Resolve an incident to mark it as handled. Changes status to RESOLVED and sets the closed timestamp.\n  - `mute_finding`: Mute an open finding to suppress it from dashboards and alerts. Status changes from OPEN to MUTED.\n  - `create_maintenance_window`: Schedule a maintenance window for a target. During maintenance, alerts and notifications are suppressed. Supports one-time, daily, and weekly recurring windows.\n  - `delete_maintenance_window`: Remove a scheduled maintenance window.\n  - `record_deployment`: Record a deployment event for a target. Deployments are auto-correlated with incidents created within 20 minutes. Useful for tracking releases and root-cause…\n  - `recompute_scores`: Force recompute all composite scores (Security, SEO, Performance, Accessibility) for a target. Useful after manual changes or when scores seem stale.\n  - `list_automation_rules`: List all automation rules for the team. Rules automatically react to events (test failures, incidents, downtime) with configurable actions (escalate severity,…\n  - `get_automation_rule`: Get full details of a specific automation rule.\n  - `create_automation_rule`: Create an automation rule that reacts to events. Triggers: TEST_FAILED, TEST_RECOVERED, INCIDENT_CREATED, INCIDENT_RESOLVED, TARGET_DOWN, TARGET_RECOVERED.…\n  - `update_automation_rule`: Update an existing automation rule. Any field not provided will remain unchanged.\n  - `delete_automation_rule`: Permanently delete an automation rule.\n  - `list_journeys`: List custom browser test flows (journeys) for a target or all team targets. Journeys are multi-step Playwright tests that verify user flows like checkout,…\n  - `get_journey`: Get full details of a specific journey including all steps.\n  - `create_journey`: Create a custom browser test flow for a target. Steps are executed sequentially in a Playwright browser. Supports actions: navigate, click, type, fill, select,…\n  - `update_journey`: Update a journey's name, settings, or steps. When steps are provided, all existing steps are replaced.\n  - `delete_journey`: Permanently delete a journey and all its steps.\n  - `trigger_journey`: Execute a journey (custom browser test flow) against its target. The journey runs asynchronously — use get_run to check progress.\n  - `list_scheduled_reports`: List all scheduled reports for the team. Reports are automatically generated and emailed on a daily or weekly basis.\n  - `create_scheduled_report`: Create a new scheduled email report. Reports include run stats, open findings, composite scores, and per-target status.\n  - `update_scheduled_report`: Update an existing scheduled report. Any field not provided stays unchanged.\n  - `delete_scheduled_report`: Permanently delete a scheduled report.\n  - `get_team_settings`: Get the team's configuration including AI enrichment, uptime monitoring, severity escalation, run policies, notification coalescing, SEO, and Kloner Tasks…\n  - `update_team_settings`: Update team configuration. All fields are optional — only provided fields are changed. Covers: AI enrichment (model, temperature, auto-enrich, spending cap),…\n  - `list_notification_rules`: List all notification alert rules for the team. Rules map event types + severity levels to notification channels.\n  - `create_notification_rule`: Create a notification alert rule. Defines which events at which severity levels trigger notifications on which channels. Supports quiet hours and per-target…\n  - `update_notification_rule`: Update a notification rule. Only provided fields are changed.\n  - `delete_notification_rule`: Permanently delete a notification rule.\n  - `list_notification_channels`: List all notification channels (Email, Slack, Webhook, SMS, Web Push) configured for the team. Sensitive config values are redacted.\n  - `list_keywords`: List all SEO keywords tracked for a target, including latest Google rank position. Max 50 per target.\n  - `add_keyword`: Add an SEO keyword to track for a target. Max 50 keywords per target.\n  - `remove_keyword`: Remove an SEO keyword from a target.\n  - `start_load_test`: Start a load test against a target. Max 100 concurrent connections, max 5 min duration, 1 test at a time per target, 60s cooldown between tests. Modes:…\n  - `cancel_load_test`: Cancel a running load test.\n  - `get_load_test`: Get details and results of a load test run.\n  - `list_load_tests`: List recent load test runs for a target.\n  - `list_secrets`: List secrets stored in a target's vault. Values are masked — only key names and labels are shown. Secrets are used by test plugins (e.g. LOGIN_EMAIL,…\n  - `store_secret`: Store an encrypted secret in a target's vault. Common keys: LOGIN_EMAIL, LOGIN_PASSWORD (B2B shop auth), ga4_service_account (GA4 monitoring). Values are…\n  - `rotate_secret`: Update the value of an existing secret.\n  - `delete_secret`: Permanently delete a secret from a target's vault.\n  - `list_page_fragments`: List all reusable page fragments for the team. Fragments are shared step sequences (e.g. \"Login\", \"Dismiss Cookies\") that can be inserted into multiple…\n  - `create_page_fragment`: Create a reusable step sequence that can be shared across multiple Journeys. Fragment names must be unique per team.\n  - `update_page_fragment`: Update a page fragment. When steps are provided, all existing steps are replaced.\n  - `delete_page_fragment`: Permanently delete a page fragment.\n  - `create_target`: Add a new website, API, or webshop target for monitoring with full onboarding. Automatically enables compatible tests, triggers an initial scan, and captures a…\n  - `update_target`: Update a target's properties (name, URL, type, environment, business weight, tags, uptime toggle).\n  - `delete_target`: Permanently delete a target and all its associated data (runs, findings, incidents, artifacts). This cannot be undone.\n  - `analyze_target`: Fingerprint a URL and get test recommendations before creating a target. Detects platform (Shopify, WordPress, etc.), CDN, server stack, frontend framework,…\n  - `import_targets`: Bulk import up to 100 websites for monitoring. Each URL gets a target created with auto-enabled tests, initial scan, and screenshot capture. Partial success —…\n  - `create_muting_rule`: Create a rule to auto-mute findings matching a pattern. Existing open findings matching the rule are muted immediately. Supports muting by fingerprint pattern,…\n  - `system_health`: Get a comprehensive system health report: BullMQ queue depths, active/stuck runs, user sessions, notification delivery stats, and recent error counts. Requires…\n  - `update_test`: Enable or disable a test definition globally, or update its schedule/timeout. Requires admin scope.\n  - `enable_all_tests`: Enable all test definitions globally. Optionally filter by category to only enable tests in that category. Requires admin scope.\n  - `disable_all_tests`: Disable all test definitions globally. Optionally filter by category to only disable tests in that category. Requires admin scope.\n- How its tools read to an agent (0 errors, 78 warnings, 1 note, about 14,014 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC11 update_notification_rule: 7 parameters without a description: channelTypes, enabled, eventTypes, name, quietHoursEnd, quietHoursStart and 1 more\n  - warn TC11 update_page_fragment: 1 parameter without a description: description\n  - warn TC16 acknowledge_incident: no readOnlyHint or destructiveHint\n  - warn TC16 active_runs: no readOnlyHint or destructiveHint\n  - warn TC16 add_keyword: no readOnlyHint or destructiveHint\n  - warn TC16 analyze_target: no readOnlyHint or destructiveHint\n  - warn TC16 cancel_load_test: no readOnlyHint or destructiveHint\n  - warn TC16 create_automation_rule: no readOnlyHint or destructiveHint\n  - warn TC16 create_journey: no readOnlyHint or destructiveHint\n  - warn TC16 create_maintenance_window: no readOnlyHint or destructiveHint\n  - warn TC16 create_muting_rule: no readOnlyHint or destructiveHint\n  - warn TC16 create_notification_rule: no readOnlyHint or destructiveHint\n  - warn TC16 create_page_fragment: no readOnlyHint or destructiveHint\n  - warn TC16 create_scheduled_report: no readOnlyHint or destructiveHint\n  - warn TC16 create_target: no readOnlyHint or destructiveHint\n  - warn TC16 daily_trends: no readOnlyHint or destructiveHint\n  - warn TC16 delete_automation_rule: no readOnlyHint or destructiveHint\n  - warn TC16 delete_journey: no readOnlyHint or destructiveHint\n  - warn TC16 delete_maintenance_window: no readOnlyHint or destructiveHint\n  - warn TC16 delete_notification_rule: no readOnlyHint or destructiveHint\n  - warn TC16 delete_page_fragment: no readOnlyHint or destructiveHint\n  - warn TC16 delete_scheduled_report: no readOnlyHint or destructiveHint\n  - warn TC16 delete_secret: no readOnlyHint or destructiveHint\n  - warn TC16 delete_target: no readOnlyHint or destructiveHint\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/validoria-mcp.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "validoria-mcp",
        "url": ""
      }
    ],
    "description": "validoria-mcp, an MCP server by validoria.com, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Continuous website testing by Validoria — monitor security, SEO, performance, and accessibility.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "validoria-mcp",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/validoria-mcp",
    "published": "",
    "section": "indexed",
    "title": "validoria-mcp: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/validoria-mcp"
  },
  "tokens": {
    "markdown": 3550,
    "slim": 3480
  },
  "version": 1
}
