{"serverId":"mcp-registry/com.validoria/validoria-mcp","tools":[{"name":"active_runs","fixed":{"name":"active_runs","description":"Get currently running and queued tests across all targets. Useful for checking what tests are in progress right now.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"targetId":{"type":"string","description":"Filter by target ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Active Runs"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"add_keyword","fixed":{"name":"add_keyword","description":"Add an SEO keyword to track for a target, optionally for one page (pageUrl). Max 50 keywords per target.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId","keyword"],"properties":{"keyword":{"type":"string","maxLength":200,"minLength":1,"description":"The keyword to track"},"pageUrl":{"type":"string","format":"uri","maxLength":2048,"description":"The page this keyword is written for (absolute URL on the site)"},"targetId":{"type":"string","description":"The target ID"},"isPrimary":{"type":"boolean","default":false,"description":"Mark as primary keyword"},"pageScope":{"type":"string","maxLength":500,"description":"URL pathname pattern to scope the keyword to (e.g. /kategori/*)"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Add Keyword"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":226,"tokensAfter":226},{"name":"analyze_target","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"URL to analyze, e.g. \"https://example.com\""}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Analyze Target"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":172,"tokensAfter":172},{"name":"cancel_load_test","fixed":{"name":"cancel_load_test","description":"Cancel a running load test.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["loadTestRunId"],"properties":{"loadTestRunId":{"type":"string","description":"The load test run ID to cancel"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Cancel Load Test"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":86,"tokensAfter":86},{"name":"create_automation_rule","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name","trigger","actions"],"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"description":"Rule name"},"actions":{"type":"array","items":{"type":"object","required":["type"],"properties":{"note":{"type":"string","maxLength":1000,"description":"Note text (for add_note action)"},"type":{"enum":["escalate","suppress","rerun","notify","webhook","add_note"],"type":"string","description":"Action type"},"delayMs":{"type":"integer","maximum":600000,"minimum":0,"description":"Delay in ms before executing (for rerun action)"},"severity":{"enum":["CRITICAL","WARNING","INFO"],"type":"string","description":"Target severity (for escalate action)"},"webhookUrl":{"type":"string","format":"uri","description":"Webhook URL (for webhook action)"}},"additionalProperties":false},"minItems":1,"description":"Actions to execute when triggered"},"trigger":{"enum":["TEST_FAILED","TEST_RECOVERED","INCIDENT_CREATED","INCIDENT_RESOLVED","TARGET_DOWN","TARGET_RECOVERED"],"type":"string","description":"Event that triggers the rule"},"targetId":{"type":"string","description":"Optional target ID to scope rule to a specific target"},"conditions":{"type":"object","properties":{"targetIds":{"type":"array","items":{"type":"string"},"description":"Only trigger for these target IDs"},"testSlugs":{"type":"array","items":{"type":"string"},"description":"Only trigger for these test slugs"},"severities":{"type":"array","items":{"enum":["CRITICAL","WARNING","INFO"],"type":"string"},"description":"Only trigger for these severity levels"},"minRecurrence":{"type":"integer","minimum":1,"description":"Minimum finding recurrence count to trigger"}},"description":"Optional conditions that must be met","additionalProperties":false},"priorityOrder":{"type":"integer","default":0,"description":"Priority order (lower = evaluated first)"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Automation Rule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":631,"tokensAfter":631},{"name":"create_journey","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId","name","steps"],"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"description":"Journey name"},"steps":{"type":"array","items":{"type":"object","required":["action","label"],"properties":{"label":{"type":"string","maxLength":200,"minLength":1,"description":"Human-readable step description"},"value":{"type":"string","description":"Value to type/fill, URL to navigate to, or fragment ID for use_fragment"},"action":{"enum":["navigate","click","type","fill","select","assert","wait","screenshot","scroll","hover","use_fragment"],"type":"string"},"target":{"type":"string","description":"CSS selector or URL target"},"waitMs":{"type":"number","maximum":30000,"minimum":0,"description":"Wait duration in ms (for wait action)"},"screenshot":{"type":"boolean","default":false,"description":"Capture screenshot after this step"},"assertionOperator":{"enum":["element_visible","element_hidden","url_contains","text_contains","element_count"],"type":"string","description":"Assertion type (for assert action)"}},"additionalProperties":false},"maxItems":50,"minItems":1,"description":"Ordered list of browser actions"},"platform":{"type":"string","maxLength":50,"description":"Platform tag (e.g. \"shopify\", \"woocommerce\")"},"targetId":{"type":"string","description":"Target ID to create the journey for"},"description":{"type":"string","maxLength":2000,"description":"Journey description"},"timeoutSeconds":{"type":"number","default":60,"maximum":300,"minimum":10,"description":"Max execution time in seconds"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Journey"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":554,"tokensAfter":554},{"name":"create_maintenance_window","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId","name","startsAt","endsAt"],"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"description":"Name for the window, e.g. \"Weekly deploy\""},"endsAt":{"type":"string","description":"End time as ISO 8601 string, e.g. \"2026-04-05T04:00:00Z\""},"startsAt":{"type":"string","description":"Start time as ISO 8601 string, e.g. \"2026-04-05T02:00:00Z\""},"targetId":{"type":"string","description":"The target ID"},"recurrence":{"enum":["DAILY","WEEKLY"],"type":"string","description":"Recurrence pattern (required if isRecurring is true)"},"description":{"type":"string","description":"Optional description"},"isRecurring":{"type":"boolean","default":false,"description":"Whether this window repeats"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Maintenance Window"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":295,"tokensAfter":295},{"name":"create_muting_rule","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["scope"],"properties":{"scope":{"enum":["FINGERPRINT","TEST_DEFINITION","TEST_TARGET"],"type":"string","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."},"reason":{"type":"string","maxLength":500,"description":"Reason for muting"},"targetId":{"type":"string","description":"Target ID to scope the rule to (required for TEST_TARGET, optional for others)"},"expiresAt":{"type":"string","description":"Optional expiry as ISO 8601 string. Rule auto-expires after this time."},"testDefinitionId":{"type":"string","description":"Test definition ID (required for TEST_DEFINITION and TEST_TARGET scopes)"},"fingerprintPattern":{"type":"string","description":"Substring to match in finding fingerprints (required for FINGERPRINT scope)"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Muting Rule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":345,"tokensAfter":345},{"name":"create_notification_rule","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name","eventTypes","channelTypes"],"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"description":"Rule name"},"enabled":{"type":"boolean","default":true,"description":"Whether the rule is active"},"targetId":{"type":"string","description":"Scope to a specific target"},"eventTypes":{"type":"array","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,"description":"Events that trigger this rule"},"severities":{"type":"array","items":{"enum":["CRITICAL","WARNING","INFO"],"type":"string"},"description":"Only trigger for these severities"},"channelTypes":{"type":"array","items":{"enum":["IN_APP","EMAIL","SLACK","WEBHOOK","SMS","WEB_PUSH"],"type":"string"},"minItems":1,"description":"Channels to notify"},"quietHoursEnd":{"type":"number","maximum":23,"minimum":0,"description":"Quiet hours end (hour UTC)"},"quietHoursStart":{"type":"number","maximum":23,"minimum":0,"description":"Quiet hours start (hour UTC)"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Notification Rule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":422,"tokensAfter":422},{"name":"create_page_fragment","fixed":{"name":"create_page_fragment","description":"Create a reusable step sequence that can be shared across multiple Journeys. Fragment names must be unique per team.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name","steps"],"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"description":"Fragment name (unique per team)"},"steps":{"type":"array","items":{"type":"object","required":["action","label"],"properties":{"label":{"type":"string","maxLength":200,"minLength":1,"description":"Step description"},"value":{"type":"string","description":"Value to type/fill or URL to navigate"},"action":{"enum":["navigate","click","type","fill","select","assert","wait","screenshot","scroll","hover"],"type":"string"},"target":{"type":"string","description":"CSS selector or URL"},"waitMs":{"type":"number","maximum":30000,"minimum":0},"screenshot":{"type":"boolean","default":false},"assertionOperator":{"enum":["element_visible","element_hidden","url_contains","text_contains","element_count"],"type":"string"}},"additionalProperties":false},"maxItems":30,"minItems":1,"description":"Ordered list of browser actions"},"description":{"type":"string","maxLength":2000,"description":"Fragment description"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Page Fragment"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":361,"tokensAfter":361},{"name":"create_scheduled_report","fixed":{"name":"create_scheduled_report","description":"Create a new scheduled email report. Reports include run stats, open findings, composite scores, and per-target status.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"name":{"type":"string","default":"Weekly Summary","maxLength":100,"minLength":1,"description":"Report name"},"hourUtc":{"type":"number","default":8,"maximum":23,"minimum":0,"description":"Hour in UTC to send the report"},"dayOfWeek":{"type":"number","default":1,"maximum":6,"minimum":0,"description":"Day of week for WEEKLY reports (0=Sunday, 1=Monday, ..., 6=Saturday)"},"frequency":{"enum":["DAILY","WEEKLY"],"type":"string","default":"WEEKLY","description":"How often to send"},"recipients":{"type":"string","default":"","description":"Comma-separated email addresses. Empty = all team members."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Scheduled Report"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":250,"tokensAfter":250},{"name":"create_target","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name","url","type"],"properties":{"url":{"type":"string","format":"uri","description":"URL to monitor, e.g. \"https://example.com\""},"name":{"type":"string","maxLength":255,"minLength":1,"description":"Display name for the target"},"tags":{"type":"array","items":{"type":"string"},"default":[],"description":"Optional tags for categorization"},"type":{"enum":["WEBSITE","API","WEBSHOP"],"type":"string","description":"Target type: WEBSITE, API, or WEBSHOP. Use analyze_target to auto-detect."},"weight":{"enum":["REVENUE_PATH","PUBLIC","INTERNAL"],"type":"string","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)."},"environment":{"enum":["PRODUCTION","STAGING","DEV"],"type":"string","default":"PRODUCTION","description":"Deployment environment"},"uptimeEnabled":{"type":"boolean","default":true,"description":"Enable background uptime monitoring"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Target"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":411,"tokensAfter":411},{"name":"delete_automation_rule","fixed":{"name":"delete_automation_rule","description":"Permanently delete an automation rule.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ruleId"],"properties":{"ruleId":{"type":"string","description":"The automation rule ID to delete"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Automation Rule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":88,"tokensAfter":88},{"name":"delete_journey","fixed":{"name":"delete_journey","description":"Permanently delete a journey and all its steps.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["journeyId"],"properties":{"journeyId":{"type":"string","description":"The journey ID to delete"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Journey"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"delete_maintenance_window","fixed":{"name":"delete_maintenance_window","description":"Remove a scheduled maintenance window.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["windowId","targetId"],"properties":{"targetId":{"type":"string","description":"The target ID (for access verification)"},"windowId":{"type":"string","description":"The maintenance window ID to delete"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Maintenance Window"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":117,"tokensAfter":117},{"name":"delete_notification_rule","fixed":{"name":"delete_notification_rule","description":"Permanently delete a notification rule.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ruleId"],"properties":{"ruleId":{"type":"string","description":"The notification rule ID to delete"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Notification Rule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":89,"tokensAfter":89},{"name":"delete_page_fragment","fixed":{"name":"delete_page_fragment","description":"Permanently delete a page fragment.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["fragmentId"],"properties":{"fragmentId":{"type":"string","description":"The fragment ID to delete"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Page Fragment"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"delete_scheduled_report","fixed":{"name":"delete_scheduled_report","description":"Permanently delete a scheduled report.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["reportId"],"properties":{"reportId":{"type":"string","description":"The scheduled report ID to delete"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Scheduled Report"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":89,"tokensAfter":89},{"name":"delete_secret","fixed":{"name":"delete_secret","description":"Permanently delete a secret from a target's vault.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["secretId","targetId"],"properties":{"secretId":{"type":"string","description":"The secret ID to delete"},"targetId":{"type":"string","description":"The target ID (for access verification)"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Secret"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":114,"tokensAfter":114},{"name":"delete_target","fixed":{"name":"delete_target","description":"Permanently delete a target and all its associated data (runs, findings, incidents, artifacts). This cannot be undone.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId","confirm"],"properties":{"confirm":{"type":"boolean","description":"Must be true to confirm deletion"},"targetId":{"type":"string","description":"The target ID to delete"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Target"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"disable_all_tests","fixed":{"name":"disable_all_tests","description":"Disable all test definitions globally. Optionally filter by category to only disable tests in that category. Requires admin scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"category":{"enum":["SEO","SECURITY","PERFORMANCE","MOBILE","ACCESSIBILITY","ECOMMERCE","API_HEALTH"],"type":"string","description":"Only disable tests in this category. Omit to disable all."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Disable All Tests"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":138,"tokensAfter":138},{"name":"enable_all_tests","fixed":{"name":"enable_all_tests","description":"Enable all test definitions globally. Optionally filter by category to only enable tests in that category. Requires admin scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"category":{"enum":["SEO","SECURITY","PERFORMANCE","MOBILE","ACCESSIBILITY","ECOMMERCE","API_HEALTH"],"type":"string","description":"Only enable tests in this category. Omit to enable all."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Enable All Tests"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":137,"tokensAfter":137},{"name":"get_automation_rule","fixed":{"name":"get_automation_rule","description":"Get full details of a specific automation rule.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ruleId"],"properties":{"ruleId":{"type":"string","description":"The automation rule ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Automation Rule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"get_finding","fixed":{"name":"get_finding","description":"Get full details of a specific finding, including evidence, AI analysis, and recommended fix.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["findingId"],"properties":{"findingId":{"type":"string","description":"The finding ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Finding Details"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"get_incident","fixed":{"name":"get_incident","description":"Get full details of a specific incident including linked findings, AI analysis, and deployment correlation.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["incidentId"],"properties":{"incidentId":{"type":"string","description":"The incident ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Incident Details"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"get_journey","fixed":{"name":"get_journey","description":"Get full details of a specific journey including all steps.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["journeyId"],"properties":{"journeyId":{"type":"string","description":"The journey ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Journey"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"get_load_test","fixed":{"name":"get_load_test","description":"Get details and results of a load test run.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["loadTestRunId"],"properties":{"loadTestRunId":{"type":"string","description":"The load test run ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Load Test Results"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"get_run","fixed":{"name":"get_run","description":"Get full details of a specific test run including metrics, score, summary, errors, and associated findings.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["runId"],"properties":{"runId":{"type":"string","description":"The run ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Run Details"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":96,"tokensAfter":96},{"name":"get_site_map","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"targetId":{"type":"string","description":"The target ID"},"pageLimit":{"type":"number","default":50,"maximum":200,"minimum":1,"description":"Max pages to return when includePages is true"},"pageStatus":{"enum":["HEALTHY","BROKEN","REDIRECT","SLOW"],"type":"string","description":"Filter pages by status"},"includePages":{"type":"boolean","default":false,"description":"Include individual page data (can be large). Default: false."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Site Map"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":230,"tokensAfter":230},{"name":"get_target","fixed":{"name":"get_target","description":"Get detailed information about a specific target including status, uptime, fingerprint, and composite scores.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"targetId":{"type":"string","description":"The target ID to look up"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Target Details"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":103,"tokensAfter":103},{"name":"get_target_scores","fixed":{"name":"get_target_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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"targetId":{"type":"string","description":"The target ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Target Composite Scores"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":111,"tokensAfter":111},{"name":"get_team_settings","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get Team Settings"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":90,"tokensAfter":90},{"name":"guest_get_scan","fixed":{"name":"guest_get_scan","description":"Poll results for a guest_start_scan. Pass the scanId and guestSessionId from the start response. No API key required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["scanId"],"properties":{"scanId":{"type":"string","minLength":1,"description":"Scan workflow id from guest_start_scan"},"guestSessionId":{"type":"string","minLength":1,"description":"Guest session id returned by guest_start_scan"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get guest scan results"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"guest_start_scan","fixed":{"name":"guest_start_scan","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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"Public http(s) URL to scan, e.g. https://example.com"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Guest quick scan (no account)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"import_targets","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"URL to monitor"},"name":{"type":"string","description":"Display name (defaults to hostname)"},"type":{"enum":["WEBSITE","API","WEBSHOP"],"type":"string","default":"WEBSITE","description":"Target type"}},"additionalProperties":false},"maxItems":100,"minItems":1,"description":"Array of targets to import"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Import Targets"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":237,"tokensAfter":237},{"name":"list_automation_rules","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"enabled":{"type":"boolean","description":"Filter by enabled/disabled status"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Automation Rules"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":125,"tokensAfter":125},{"name":"list_findings","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"number","default":50,"maximum":100,"minimum":1,"description":"Max number of findings to return"},"status":{"enum":["OPEN","MUTED","RESOLVED"],"type":"string","description":"Filter by finding status (default: OPEN)"},"severity":{"enum":["CRITICAL","WARNING","INFO"],"type":"string","description":"Filter by severity"},"targetId":{"type":"string","description":"Filter by target ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Findings"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":205,"tokensAfter":205},{"name":"list_incidents","fixed":{"name":"list_incidents","description":"List incidents (grouped operational issues) across your targets. Filter by status. Returns title, severity, status, findings count, and deployment correlation.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"number","default":50,"maximum":100,"minimum":1,"description":"Max number of incidents to return"},"status":{"enum":["OPEN","ACKNOWLEDGED","RESOLVED"],"type":"string","description":"Filter by incident status"},"targetId":{"type":"string","description":"Filter by target ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Incidents"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":173,"tokensAfter":173},{"name":"list_journeys","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"targetId":{"type":"string","description":"Filter by target ID. If omitted, lists all team journeys."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Journeys"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"list_keywords","fixed":{"name":"list_keywords","description":"List all SEO keywords tracked for a target, including latest Google rank position and the page each is tracked for. Max 50 per target.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"targetId":{"type":"string","description":"The target ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Target Keywords"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":108,"tokensAfter":108},{"name":"list_load_tests","fixed":{"name":"list_load_tests","description":"List recent load test runs for a target.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"limit":{"type":"number","default":10,"maximum":50,"minimum":1,"description":"Max results"},"targetId":{"type":"string","description":"The target ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Load Test History"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":108,"tokensAfter":108},{"name":"list_maintenance_windows","fixed":{"name":"list_maintenance_windows","description":"List maintenance windows for a target. Shows scheduled and recurring maintenance periods that suppress alerts.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"targetId":{"type":"string","description":"The target ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Maintenance Windows"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"list_notification_channels","fixed":{"name":"list_notification_channels","description":"List all notification channels (Email, Slack, Webhook, SMS, Web Push) configured for the team. Sensitive config values are redacted.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List Notification Channels"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":80,"tokensAfter":80},{"name":"list_notification_rules","fixed":{"name":"list_notification_rules","description":"List all notification alert rules for the team. Rules map event types + severity levels to notification channels.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List Notification Rules"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":74,"tokensAfter":74},{"name":"list_page_fragments","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List Page Fragments"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":95,"tokensAfter":95},{"name":"list_runs","fixed":{"name":"list_runs","description":"List recent test runs. Filter by target, status, or test slug. Returns run status, score, summary, duration, and finding count.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"number","default":25,"maximum":100,"minimum":1,"description":"Max number of runs to return"},"status":{"enum":["QUEUED","RUNNING","PASSED","WARNING","FAILED","CANCELED"],"type":"string","description":"Filter by run status"},"targetId":{"type":"string","description":"Filter by target ID"},"testSlug":{"type":"string","description":"Filter by test definition slug (e.g. \"security-headers\")"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Runs"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":195,"tokensAfter":195},{"name":"list_scheduled_reports","fixed":{"name":"list_scheduled_reports","description":"List all scheduled reports for the team. Reports are automatically generated and emailed on a daily or weekly basis.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List Scheduled Reports"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":74,"tokensAfter":74},{"name":"list_secrets","fixed":{"name":"list_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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"targetId":{"type":"string","description":"The target ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Target Secrets"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":128,"tokensAfter":128},{"name":"list_targets","fixed":{"name":"list_targets","description":"List all monitoring targets for your team. Returns name, URL, type, status, and uptime info for each target.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"type":{"enum":["WEBSITE","API","WEBSHOP"],"type":"string","description":"Filter by target type"},"limit":{"type":"number","default":50,"maximum":100,"minimum":1,"description":"Max number of targets to return"},"status":{"enum":["HEALTHY","WARNING","CRITICAL","UNKNOWN"],"type":"string","description":"Filter by target status"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Targets"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":168,"tokensAfter":168},{"name":"list_tests","fixed":{"name":"list_tests","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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"category":{"enum":["SEO","SECURITY","PERFORMANCE","MOBILE","ACCESSIBILITY","ECOMMERCE","API_HEALTH"],"type":"string","description":"Filter by test category"},"enabledOnly":{"type":"boolean","default":true,"description":"Only show enabled tests. Default: true."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Test Definitions"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":170,"tokensAfter":170},{"name":"mute_finding","fixed":{"name":"mute_finding","description":"Mute an open finding to suppress it from dashboards and alerts. Status changes from OPEN to MUTED.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["findingId"],"properties":{"findingId":{"type":"string","description":"The finding ID to mute"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Mute Finding"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"record_deployment","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"version":{"type":"string","description":"Version string, e.g. \"v2.4.1\""},"targetId":{"type":"string","description":"The target ID"},"commitSha":{"type":"string","description":"Git commit SHA"},"deployedBy":{"type":"string","description":"Who deployed (name, email, or system)"},"description":{"type":"string","description":"Deployment description or changelog"},"environment":{"type":"string","description":"Environment, e.g. \"production\", \"staging\""}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Record Deployment"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"remove_keyword","fixed":{"name":"remove_keyword","description":"Remove an SEO keyword from a target.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["keywordId","targetId"],"properties":{"targetId":{"type":"string","description":"The target ID (for access verification)"},"keywordId":{"type":"string","description":"The keyword ID to remove"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Remove Keyword"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":111,"tokensAfter":111},{"name":"resolve_incident","fixed":{"name":"resolve_incident","description":"Resolve an incident to mark it as handled. Changes status to RESOLVED and sets the closed timestamp.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["incidentId"],"properties":{"incidentId":{"type":"string","description":"The incident ID to resolve"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Resolve Incident"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"start_load_test","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"mode":{"enum":["HTTP_FLOOD","BROWSER_USERS","COMBINED"],"type":"string","default":"HTTP_FLOOD","description":"Load test mode"},"rampUp":{"type":"number","maximum":60,"minimum":0,"description":"Ramp-up time in seconds"},"duration":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"Test duration in seconds"},"targetId":{"type":"string","description":"The target ID to load test"},"targetUrl":{"type":"string","format":"uri","description":"Override URL (defaults to target URL)"},"httpMethod":{"enum":["GET","POST","PUT","DELETE","PATCH"],"type":"string","description":"HTTP method"},"concurrency":{"type":"number","default":10,"maximum":100,"minimum":1,"description":"Number of concurrent connections"},"acknowledgeSharedOrigin":{"type":"boolean","description":"Acknowledge blast radius if target shares a server with other monitored sites"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Start Load Test"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":361,"tokensAfter":361},{"name":"system_health","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"System Health"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"target_stats","fixed":{"name":"target_stats","description":"Get statistics for a specific target: runs, pass rate, findings, duration. Supports lifetime, monthly, or weekly periods.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"period":{"type":"string","description":"Period filter: \"lifetime\", \"2026-04\" (monthly), or \"2026-W14\" (weekly). Defaults to lifetime."},"targetId":{"type":"string","description":"The target ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Target Statistics"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"team_stats","fixed":{"name":"team_stats","description":"Get team-wide overview statistics: total runs, pass rate, open findings, open incidents, average duration. Supports lifetime, monthly, or weekly periods.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"period":{"type":"string","description":"Period filter: \"lifetime\", \"2026-04\" (monthly), or \"2026-W14\" (weekly). Defaults to lifetime."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Team Statistics"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"update_automation_rule","fixed":{"name":"update_automation_rule","description":"Update an existing automation rule. Any field not provided will remain unchanged.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ruleId"],"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"description":"Updated rule name"},"ruleId":{"type":"string","description":"The automation rule ID to update"},"actions":{"type":"array","items":{"type":"object","required":["type"],"properties":{"note":{"type":"string","maxLength":1000},"type":{"enum":["escalate","suppress","rerun","notify","webhook","add_note"],"type":"string"},"delayMs":{"type":"integer","maximum":600000,"minimum":0},"severity":{"enum":["CRITICAL","WARNING","INFO"],"type":"string"},"webhookUrl":{"type":"string","format":"uri"}},"additionalProperties":false},"minItems":1,"description":"Updated actions"},"trigger":{"enum":["TEST_FAILED","TEST_RECOVERED","INCIDENT_CREATED","INCIDENT_RESOLVED","TARGET_DOWN","TARGET_RECOVERED"],"type":"string","description":"Updated trigger event"},"targetId":{"type":["string","null"],"description":"Updated target scope (null to remove target scoping)"},"isEnabled":{"type":"boolean","description":"Enable or disable the rule"},"conditions":{"type":"object","properties":{"targetIds":{"type":"array","items":{"type":"string"}},"testSlugs":{"type":"array","items":{"type":"string"}},"severities":{"type":"array","items":{"enum":["CRITICAL","WARNING","INFO"],"type":"string"}},"minRecurrence":{"type":"integer","minimum":1}},"description":"Updated conditions","additionalProperties":false},"priorityOrder":{"type":"integer","description":"Updated priority order"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Automation Rule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":475,"tokensAfter":475},{"name":"update_journey","fixed":{"name":"update_journey","description":"Update a journey's name, settings, or steps. When steps are provided, all existing steps are replaced.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["journeyId"],"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"description":"Updated name"},"steps":{"type":"array","items":{"type":"object","required":["action","label"],"properties":{"label":{"type":"string","maxLength":200,"minLength":1,"description":"Human-readable step description"},"value":{"type":"string","description":"Value to type/fill, URL to navigate to, or fragment ID for use_fragment"},"action":{"enum":["navigate","click","type","fill","select","assert","wait","screenshot","scroll","hover","use_fragment"],"type":"string"},"target":{"type":"string","description":"CSS selector or URL target"},"waitMs":{"type":"number","maximum":30000,"minimum":0,"description":"Wait duration in ms (for wait action)"},"screenshot":{"type":"boolean","default":false,"description":"Capture screenshot after this step"},"assertionOperator":{"enum":["element_visible","element_hidden","url_contains","text_contains","element_count"],"type":"string","description":"Assertion type (for assert action)"}},"additionalProperties":false},"maxItems":50,"minItems":1,"description":"Replacement steps (replaces all existing steps)"},"isEnabled":{"type":"boolean","description":"Enable or disable the journey"},"journeyId":{"type":"string","description":"The journey ID to update"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"description":"Updated description"},"timeoutSeconds":{"type":"number","maximum":300,"minimum":10,"description":"Updated timeout"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Journey"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":491,"tokensAfter":491},{"name":"update_notification_rule","fixed":{"name":"update_notification_rule","description":"Update a notification rule. Only provided fields are changed.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ruleId"],"properties":{"name":{"type":"string","maxLength":100,"minLength":1},"ruleId":{"type":"string","description":"The notification rule ID"},"enabled":{"type":"boolean"},"eventTypes":{"type":"array","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},"severities":{"type":"array","items":{"enum":["CRITICAL","WARNING","INFO"],"type":"string"}},"channelTypes":{"type":"array","items":{"enum":["IN_APP","EMAIL","SLACK","WEBHOOK","SMS","WEB_PUSH"],"type":"string"},"minItems":1},"quietHoursEnd":{"anyOf":[{"type":"number","maximum":23,"minimum":0},{"type":"null"}]},"quietHoursStart":{"anyOf":[{"type":"number","maximum":23,"minimum":0},{"type":"null"}]}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Notification Rule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":316,"tokensAfter":316},{"name":"update_page_fragment","fixed":{"name":"update_page_fragment","description":"Update a page fragment. When steps are provided, all existing steps are replaced.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["fragmentId"],"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"description":"Updated name"},"steps":{"type":"array","items":{"type":"object","required":["action","label"],"properties":{"label":{"type":"string","maxLength":200,"minLength":1,"description":"Step description"},"value":{"type":"string","description":"Value to type/fill or URL to navigate"},"action":{"enum":["navigate","click","type","fill","select","assert","wait","screenshot","scroll","hover"],"type":"string"},"target":{"type":"string","description":"CSS selector or URL"},"waitMs":{"type":"number","maximum":30000,"minimum":0},"screenshot":{"type":"boolean","default":false},"assertionOperator":{"enum":["element_visible","element_hidden","url_contains","text_contains","element_count"],"type":"string"}},"additionalProperties":false},"maxItems":30,"minItems":1,"description":"Replacement steps"},"fragmentId":{"type":"string","description":"The fragment ID"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Page Fragment"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":356,"tokensAfter":356},{"name":"update_scheduled_report","fixed":{"name":"update_scheduled_report","description":"Update an existing scheduled report. Any field not provided stays unchanged.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["reportId"],"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"description":"Updated name"},"enabled":{"type":"boolean","description":"Enable or disable the report"},"hourUtc":{"type":"number","maximum":23,"minimum":0,"description":"Updated hour UTC"},"reportId":{"type":"string","description":"The scheduled report ID to update"},"dayOfWeek":{"type":"number","maximum":6,"minimum":0,"description":"Updated day of week"},"frequency":{"enum":["DAILY","WEEKLY"],"type":"string","description":"Updated frequency"},"recipients":{"type":"string","description":"Updated comma-separated email list"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Scheduled Report"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"update_target","fixed":{"name":"update_target","description":"Update a target's properties (name, URL, type, environment, business weight, tags, uptime toggle).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["targetId"],"properties":{"url":{"type":"string","format":"uri","description":"New URL"},"name":{"type":"string","maxLength":255,"minLength":1,"description":"New display name"},"tags":{"type":"array","items":{"type":"string"},"description":"New tags (replaces existing)"},"type":{"enum":["WEBSITE","API","WEBSHOP"],"type":"string","description":"New target type"},"weight":{"enum":["REVENUE_PATH","PUBLIC","INTERNAL"],"type":"string","description":"New business weight: REVENUE_PATH, PUBLIC or INTERNAL. Changing this rescores the target's open findings so the consequence ranking updates immediately."},"targetId":{"type":"string","description":"The target ID to update"},"environment":{"enum":["PRODUCTION","STAGING","DEV"],"type":"string","description":"New environment"},"uptimeEnabled":{"type":"boolean","description":"Toggle uptime monitoring"},"uptimeKeyword":{"anyOf":[{"anyOf":[{"not":{}},{"type":"string","maxLength":500}]},{"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."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Target"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":413,"tokensAfter":413},{"name":"update_team_settings","fixed":{"name":"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"aiModel":{"type":"string","description":"Model id on the AI gateway for finding enrichment (e.g. mistral/mistral-small-2603, an EU route)"},"aiEnabled":{"type":"boolean","description":"Enable/disable AI finding enrichment"},"aiCapAction":{"enum":["disable","warn"],"type":"string","description":"Action when cap is reached"},"testsPaused":{"type":"boolean","description":"Kill switch — pauses ALL scheduled and manual test runs"},"aiAutoEnrich":{"type":"boolean","description":"Auto-enrich new findings with AI"},"digestEnabled":{"type":"boolean","description":"Enable notification alert coalescing"},"aiMonthlyCapUsd":{"anyOf":[{"type":"number","maximum":10000,"minimum":0.01},{"type":"null"}],"description":"Monthly AI spending cap in USD (null = unlimited)"},"aiSourceReviewModel":{"type":"string","description":"Model for AI source review plugin"},"defaultRunTimeoutMs":{"type":"number","maximum":3600000,"minimum":30000,"description":"Default run timeout in ms"},"digestWindowSeconds":{"type":"number","maximum":86400,"minimum":30,"description":"Digest window duration in seconds"},"escalateInfoAgeDays":{"type":"number","maximum":365,"minimum":1,"description":"Finding age in days before INFO→WARNING"},"seoRankCheckEnabled":{"type":"boolean","description":"Enable Google rank tracking"},"uptimeFailThreshold":{"type":"number","maximum":10,"minimum":1,"description":"Consecutive failures before DOWN"},"uptimePingTimeoutMs":{"type":"number","maximum":30000,"minimum":1000,"description":"Uptime ping timeout in ms"},"maxDailyRunsPerTarget":{"type":"number","maximum":1000,"minimum":0,"description":"Max test runs per target per day (0=unlimited). Prevents overwhelming hosted sites with limited request budgets."},"escalateInfoRecurrence":{"type":"number","maximum":100,"minimum":1,"description":"Finding recurrences before INFO→WARNING"},"escalateWarningAgeDays":{"type":"number","maximum":365,"minimum":1,"description":"Finding age in days before WARNING→CRITICAL"},"defaultScheduleMultiplier":{"type":"number","maximum":10,"minimum":0.1,"description":"Schedule frequency multiplier (< 1 = more frequent)"},"escalateWarningRecurrence":{"type":"number","maximum":100,"minimum":1,"description":"Finding recurrences before WARNING→CRITICAL"},"uptimeDegradedThresholdMs":{"type":"number","maximum":15000,"minimum":500,"description":"Response time threshold for DEGRADED status"},"maxConcurrentRunsPerTarget":{"type":"number","maximum":20,"minimum":1,"description":"Max concurrent test runs per target"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Team Settings"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":851,"tokensAfter":851},{"name":"update_test","fixed":{"name":"update_test","description":"Enable or disable a test definition globally, or update its schedule/timeout. Requires admin scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"type":"string","description":"Test plugin slug (e.g. \"http-protocol-check\")"},"enabled":{"type":"boolean","description":"Enable or disable the test globally"},"timeout":{"type":"number","description":"Timeout in milliseconds"},"defaultSchedule":{"type":"string","description":"Cron schedule (e.g. \"0 */6 * * *\")"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Test Definition"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":171,"tokensAfter":171}],"toolsChanged":66,"tokensSaved":0,"todo":[{"tool":"update_notification_rule","params":["name","enabled","eventTypes","severities","channelTypes","quietHoursEnd","quietHoursStart"]},{"tool":"update_page_fragment","params":["description"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}