{"name":"com.validoria/validoria-mcp","slug":"validoria-mcp","title":null,"description":"Continuous website testing by Validoria — monitor security, SEO, performance, and accessibility.","url":"https://mcp.market/server/validoria-mcp","rating":null,"grade":"B","score":70,"certified":false,"status":"active","category":"seo","tags":["seo","security"],"presence":{"score":16,"stars":null,"forks":null,"downloads_week":46,"last_push_at":null,"license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-05T16:25:36.514Z","last_ok_at":"2026-11-05T16:25:36.514Z","latency_ms":796},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://validoria.com","version":"2.0.1","remotes":[{"type":"streamable-http","url":"https://api.teste.no/api/mcp"}],"packages":[{"registryType":"npm","identifier":"validoria-mcp","version":"2.0.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your Teste.no API token (Settings → API Keys). Prefix: tno_","isRequired":true,"format":"string","isSecret":true,"name":"TESTE_NO_API_KEY"},{"description":"API base URL. Override only for self-hosted instances.","format":"string","default":"https://api.teste.no","name":"TESTE_NO_API_URL"}]}],"tools":[{"name":"acknowledge_incident","description":"Acknowledge an open incident to signal that someone is looking at it. Changes status from OPEN to ACKNOWLEDGED.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"incidentId":{"type":"string","description":"The incident ID to acknowledge"}},"required":["incidentId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"active_runs","description":"Get currently running and queued tests across all targets. Useful for checking what tests are in progress right now.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Filter by target ID"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"add_keyword","description":"Add an SEO keyword to track for a target. Max 50 keywords per target.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"},"keyword":{"type":"string","minLength":1,"maxLength":200,"description":"The keyword to track"},"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/*)"}},"required":["targetId","keyword"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"URL to analyze, e.g. \"https://example.com\""}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"cancel_load_test","description":"Cancel a running load test.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"loadTestRunId":{"type":"string","description":"The load test run ID to cancel"}},"required":["loadTestRunId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Rule name"},"trigger":{"type":"string","enum":["TEST_FAILED","TEST_RECOVERED","INCIDENT_CREATED","INCIDENT_RESOLVED","TARGET_DOWN","TARGET_RECOVERED"],"description":"Event that triggers the rule"},"targetId":{"type":"string","description":"Optional target ID to scope rule to a specific target"},"conditions":{"type":"object","properties":{"testSlugs":{"type":"array","items":{"type":"string"},"description":"Only trigger for these test slugs"},"severities":{"type":"array","items":{"type":"string","enum":["CRITICAL","WARNING","INFO"]},"description":"Only trigger for these severity levels"},"minRecurrence":{"type":"integer","minimum":1,"description":"Minimum finding recurrence count to trigger"},"targetIds":{"type":"array","items":{"type":"string"},"description":"Only trigger for these target IDs"}},"additionalProperties":false,"description":"Optional conditions that must be met"},"actions":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["escalate","suppress","rerun","notify","webhook","add_note"],"description":"Action type"},"severity":{"type":"string","enum":["CRITICAL","WARNING","INFO"],"description":"Target severity (for escalate action)"},"webhookUrl":{"type":"string","format":"uri","description":"Webhook URL (for webhook action)"},"note":{"type":"string","maxLength":1000,"description":"Note text (for add_note action)"},"delayMs":{"type":"integer","minimum":0,"maximum":600000,"description":"Delay in ms before executing (for rerun action)"}},"required":["type"],"additionalProperties":false},"minItems":1,"description":"Actions to execute when triggered"},"priorityOrder":{"type":"integer","default":0,"description":"Priority order (lower = evaluated first)"}},"required":["name","trigger","actions"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Target ID to create the journey for"},"name":{"type":"string","minLength":1,"maxLength":200,"description":"Journey name"},"description":{"type":"string","maxLength":2000,"description":"Journey description"},"platform":{"type":"string","maxLength":50,"description":"Platform tag (e.g. \"shopify\", \"woocommerce\")"},"timeoutSeconds":{"type":"number","minimum":10,"maximum":300,"default":60,"description":"Max execution time in seconds"},"steps":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["navigate","click","type","fill","select","assert","wait","screenshot","scroll","hover","use_fragment"]},"target":{"type":"string","description":"CSS selector or URL target"},"value":{"type":"string","description":"Value to type/fill, URL to navigate to, or fragment ID for use_fragment"},"label":{"type":"string","minLength":1,"maxLength":200,"description":"Human-readable step description"},"assertionOperator":{"type":"string","enum":["element_visible","element_hidden","url_contains","text_contains","element_count"],"description":"Assertion type (for assert action)"},"waitMs":{"type":"number","minimum":0,"maximum":30000,"description":"Wait duration in ms (for wait action)"},"screenshot":{"type":"boolean","default":false,"description":"Capture screenshot after this step"}},"required":["action","label"],"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Ordered list of browser actions"}},"required":["targetId","name","steps"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"},"name":{"type":"string","minLength":1,"maxLength":200,"description":"Name for the window, e.g. \"Weekly deploy\""},"startsAt":{"type":"string","description":"Start time as ISO 8601 string, e.g. \"2026-04-05T02:00:00Z\""},"endsAt":{"type":"string","description":"End time as ISO 8601 string, e.g. \"2026-04-05T04:00:00Z\""},"isRecurring":{"type":"boolean","default":false,"description":"Whether this window repeats"},"recurrence":{"type":"string","enum":["DAILY","WEEKLY"],"description":"Recurrence pattern (required if isRecurring is true)"},"description":{"type":"string","description":"Optional description"}},"required":["targetId","name","startsAt","endsAt"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"scope":{"type":"string","enum":["FINGERPRINT","TEST_DEFINITION","TEST_TARGET"],"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."},"fingerprintPattern":{"type":"string","description":"Substring to match in finding fingerprints (required for FINGERPRINT scope)"},"testDefinitionId":{"type":"string","description":"Test definition ID (required for TEST_DEFINITION and TEST_TARGET scopes)"},"targetId":{"type":"string","description":"Target ID to scope the rule to (required for TEST_TARGET, optional for others)"},"reason":{"type":"string","maxLength":500,"description":"Reason for muting"},"expiresAt":{"type":"string","description":"Optional expiry as ISO 8601 string. Rule auto-expires after this time."}},"required":["scope"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Rule name"},"eventTypes":{"type":"array","items":{"type":"string","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"]},"minItems":1,"description":"Events that trigger this rule"},"channelTypes":{"type":"array","items":{"type":"string","enum":["IN_APP","EMAIL","SLACK","WEBHOOK","SMS","WEB_PUSH"]},"minItems":1,"description":"Channels to notify"},"severities":{"type":"array","items":{"type":"string","enum":["CRITICAL","WARNING","INFO"]},"description":"Only trigger for these severities"},"targetId":{"type":"string","description":"Scope to a specific target"},"quietHoursStart":{"type":"number","minimum":0,"maximum":23,"description":"Quiet hours start (hour UTC)"},"quietHoursEnd":{"type":"number","minimum":0,"maximum":23,"description":"Quiet hours end (hour UTC)"},"enabled":{"type":"boolean","default":true,"description":"Whether the rule is active"}},"required":["name","eventTypes","channelTypes"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_page_fragment","description":"Create a reusable step sequence that can be shared across multiple Journeys. Fragment names must be unique per team.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"Fragment name (unique per team)"},"description":{"type":"string","maxLength":2000,"description":"Fragment description"},"steps":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["navigate","click","type","fill","select","assert","wait","screenshot","scroll","hover"]},"target":{"type":"string","description":"CSS selector or URL"},"value":{"type":"string","description":"Value to type/fill or URL to navigate"},"label":{"type":"string","minLength":1,"maxLength":200,"description":"Step description"},"assertionOperator":{"type":"string","enum":["element_visible","element_hidden","url_contains","text_contains","element_count"]},"waitMs":{"type":"number","minimum":0,"maximum":30000},"screenshot":{"type":"boolean","default":false}},"required":["action","label"],"additionalProperties":false},"minItems":1,"maxItems":30,"description":"Ordered list of browser actions"}},"required":["name","steps"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_scheduled_report","description":"Create a new scheduled email report. Reports include run stats, open findings, composite scores, and per-target status.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"default":"Weekly Summary","description":"Report name"},"frequency":{"type":"string","enum":["DAILY","WEEKLY"],"default":"WEEKLY","description":"How often to send"},"recipients":{"type":"string","default":"","description":"Comma-separated email addresses. Empty = all team members."},"dayOfWeek":{"type":"number","minimum":0,"maximum":6,"default":1,"description":"Day of week for WEEKLY reports (0=Sunday, 1=Monday, ..., 6=Saturday)"},"hourUtc":{"type":"number","minimum":0,"maximum":23,"default":8,"description":"Hour in UTC to send the report"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Display name for the target"},"url":{"type":"string","format":"uri","description":"URL to monitor, e.g. \"https://example.com\""},"type":{"type":"string","enum":["WEBSITE","API","WEBSHOP"],"description":"Target type: WEBSITE, API, or WEBSHOP. Use analyze_target to auto-detect."},"environment":{"type":"string","enum":["PRODUCTION","STAGING","DEV"],"default":"PRODUCTION","description":"Deployment environment"},"weight":{"type":"string","enum":["REVENUE_PATH","PUBLIC","INTERNAL"],"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)."},"tags":{"type":"array","items":{"type":"string"},"default":[],"description":"Optional tags for categorization"},"uptimeEnabled":{"type":"boolean","default":true,"description":"Enable background uptime monitoring"}},"required":["name","url","type"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"days":{"type":"number","minimum":1,"maximum":90,"default":14,"description":"Number of days of history to return"},"targetId":{"type":"string","description":"Filter by target ID (omit for team-wide)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_automation_rule","description":"Permanently delete an automation rule.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"ruleId":{"type":"string","description":"The automation rule ID to delete"}},"required":["ruleId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_journey","description":"Permanently delete a journey and all its steps.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"journeyId":{"type":"string","description":"The journey ID to delete"}},"required":["journeyId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_maintenance_window","description":"Remove a scheduled maintenance window.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"windowId":{"type":"string","description":"The maintenance window ID to delete"},"targetId":{"type":"string","description":"The target ID (for access verification)"}},"required":["windowId","targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_notification_rule","description":"Permanently delete a notification rule.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"ruleId":{"type":"string","description":"The notification rule ID to delete"}},"required":["ruleId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_page_fragment","description":"Permanently delete a page fragment.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"fragmentId":{"type":"string","description":"The fragment ID to delete"}},"required":["fragmentId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_scheduled_report","description":"Permanently delete a scheduled report.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"reportId":{"type":"string","description":"The scheduled report ID to delete"}},"required":["reportId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_secret","description":"Permanently delete a secret from a target's vault.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"secretId":{"type":"string","description":"The secret ID to delete"},"targetId":{"type":"string","description":"The target ID (for access verification)"}},"required":["secretId","targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_target","description":"Permanently delete a target and all its associated data (runs, findings, incidents, artifacts). This cannot be undone.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID to delete"},"confirm":{"type":"boolean","description":"Must be true to confirm deletion"}},"required":["targetId","confirm"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"disable_all_tests","description":"Disable all test definitions globally. Optionally filter by category to only disable tests in that category. Requires admin scope.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"category":{"type":"string","enum":["SEO","SECURITY","PERFORMANCE","MOBILE","ACCESSIBILITY","ECOMMERCE","API_HEALTH"],"description":"Only disable tests in this category. Omit to disable all."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"discover_tools","description":"Only everyday tools are listed; the rest (automation rules, journeys, load tests, maintenance, notifications, reports, secrets, keywords, SLA, settings, admin …) are found here. No arguments: every tool you can run, by area. query: matching tools with a summary, effect and parameters. tools: their full input schemas. Run one with call_read_tool (reads) or call_tool (changes), or by its own name.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","maxLength":200,"description":"What you want to do, e.g. \"maintenance window\" or \"mute alerts\""},"tools":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Tool names whose full input schema to return"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"enable_all_tests","description":"Enable all test definitions globally. Optionally filter by category to only enable tests in that category. Requires admin scope.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"category":{"type":"string","enum":["SEO","SECURITY","PERFORMANCE","MOBILE","ACCESSIBILITY","ECOMMERCE","API_HEALTH"],"description":"Only enable tests in this category. Omit to enable all."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_automation_rule","description":"Get full details of a specific automation rule.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"ruleId":{"type":"string","description":"The automation rule ID"}},"required":["ruleId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_finding","description":"Get full details of a specific finding, including evidence, AI analysis, and recommended fix.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"findingId":{"type":"string","description":"The finding ID"}},"required":["findingId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_incident","description":"Get full details of a specific incident including linked findings, AI analysis, and deployment correlation.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"incidentId":{"type":"string","description":"The incident ID"}},"required":["incidentId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_journey","description":"Get full details of a specific journey including all steps.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"journeyId":{"type":"string","description":"The journey ID"}},"required":["journeyId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_load_test","description":"Get details and results of a load test run.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"loadTestRunId":{"type":"string","description":"The load test run ID"}},"required":["loadTestRunId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_run","description":"Get full details of a specific test run including metrics, score, summary, errors, and associated findings.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"runId":{"type":"string","description":"The run ID"}},"required":["runId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"},"includePages":{"type":"boolean","default":false,"description":"Include individual page data (can be large). Default: false."},"pageLimit":{"type":"number","minimum":1,"maximum":200,"default":50,"description":"Max pages to return when includePages is true"},"pageStatus":{"type":"string","enum":["HEALTHY","BROKEN","REDIRECT","SLOW"],"description":"Filter pages by status"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_target","description":"Get detailed information about a specific target including status, uptime, fingerprint, and composite scores.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID to look up"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_target_scores","description":"Get composite scores (Security, SEO, Performance, Accessibility) for a target. Each score is 0-100 with a status rating.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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"}},"required":["scanId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public http(s) URL to scan, e.g. https://example.com"}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"URL to monitor"},"name":{"type":"string","description":"Display name (defaults to hostname)"},"type":{"type":"string","enum":["WEBSITE","API","WEBSHOP"],"default":"WEBSITE","description":"Target type"}},"required":["url"],"additionalProperties":false},"minItems":1,"maxItems":100,"description":"Array of targets to import"}},"required":["items"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Filter by enabled/disabled status"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Filter by target ID"},"status":{"type":"string","enum":["OPEN","MUTED","RESOLVED"],"description":"Filter by finding status (default: OPEN)"},"severity":{"type":"string","enum":["CRITICAL","WARNING","INFO"],"description":"Filter by severity"},"limit":{"type":"number","minimum":1,"maximum":100,"default":50,"description":"Max number of findings to return"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_incidents","description":"List incidents (grouped operational issues) across your targets. Filter by status. Returns title, severity, status, findings count, and deployment correlation.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["OPEN","ACKNOWLEDGED","RESOLVED"],"description":"Filter by incident status"},"targetId":{"type":"string","description":"Filter by target ID"},"limit":{"type":"number","minimum":1,"maximum":100,"default":50,"description":"Max number of incidents to return"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Filter by target ID. If omitted, lists all team journeys."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_keywords","description":"List all SEO keywords tracked for a target, including latest Google rank position. Max 50 per target.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_load_tests","description":"List recent load test runs for a target.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"},"limit":{"type":"number","minimum":1,"maximum":50,"default":10,"description":"Max results"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_maintenance_windows","description":"List maintenance windows for a target. Shows scheduled and recurring maintenance periods that suppress alerts.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_notification_channels","description":"List all notification channels (Email, Slack, Webhook, SMS, Web Push) configured for the team. Sensitive config values are redacted.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_notification_rules","description":"List all notification alert rules for the team. Rules map event types + severity levels to notification channels.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_runs","description":"List recent test runs. Filter by target, status, or test slug. Returns run status, score, summary, duration, and finding count.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"Filter by target ID"},"status":{"type":"string","enum":["QUEUED","RUNNING","PASSED","WARNING","FAILED","CANCELED"],"description":"Filter by run status"},"testSlug":{"type":"string","description":"Filter by test definition slug (e.g. \"security-headers\")"},"limit":{"type":"number","minimum":1,"maximum":100,"default":25,"description":"Max number of runs to return"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_scheduled_reports","description":"List all scheduled reports for the team. Reports are automatically generated and emailed on a daily or weekly basis.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_targets","description":"List all monitoring targets for your team. Returns name, URL, type, status, and uptime info for each target.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["HEALTHY","WARNING","CRITICAL","UNKNOWN"],"description":"Filter by target status"},"type":{"type":"string","enum":["WEBSITE","API","WEBSHOP"],"description":"Filter by target type"},"limit":{"type":"number","minimum":1,"maximum":100,"default":50,"description":"Max number of targets to return"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"category":{"type":"string","enum":["SEO","SECURITY","PERFORMANCE","MOBILE","ACCESSIBILITY","ECOMMERCE","API_HEALTH"],"description":"Filter by test category"},"enabledOnly":{"type":"boolean","default":true,"description":"Only show enabled tests. Default: true."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"mute_finding","description":"Mute an open finding to suppress it from dashboards and alerts. Status changes from OPEN to MUTED.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"findingId":{"type":"string","description":"The finding ID to mute"}},"required":["findingId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"recompute_scores","description":"Force recompute all composite scores (Security, SEO, Performance, Accessibility) for a target. Useful after manual changes or when scores seem stale.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID to recompute scores for"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"},"version":{"type":"string","description":"Version string, e.g. \"v2.4.1\""},"commitSha":{"type":"string","description":"Git commit SHA"},"environment":{"type":"string","description":"Environment, e.g. \"production\", \"staging\""},"description":{"type":"string","description":"Deployment description or changelog"},"deployedBy":{"type":"string","description":"Who deployed (name, email, or system)"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"remove_keyword","description":"Remove an SEO keyword from a target.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"keywordId":{"type":"string","description":"The keyword ID to remove"},"targetId":{"type":"string","description":"The target ID (for access verification)"}},"required":["keywordId","targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"resolve_incident","description":"Resolve an incident to mark it as handled. Changes status to RESOLVED and sets the closed timestamp.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"incidentId":{"type":"string","description":"The incident ID to resolve"}},"required":["incidentId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"rotate_secret","description":"Update the value of an existing secret.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"secretId":{"type":"string","description":"The secret ID to rotate"},"targetId":{"type":"string","description":"The target ID (for access verification)"},"newValue":{"type":"string","minLength":1,"description":"New secret value"}},"required":["secretId","targetId","newValue"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID to load test"},"mode":{"type":"string","enum":["HTTP_FLOOD","BROWSER_USERS","COMBINED"],"default":"HTTP_FLOOD","description":"Load test mode"},"concurrency":{"type":"number","minimum":1,"maximum":100,"default":10,"description":"Number of concurrent connections"},"duration":{"type":"number","minimum":10,"maximum":300,"default":30,"description":"Test duration in seconds"},"targetUrl":{"type":"string","format":"uri","description":"Override URL (defaults to target URL)"},"rampUp":{"type":"number","minimum":0,"maximum":60,"description":"Ramp-up time in seconds"},"httpMethod":{"type":"string","enum":["GET","POST","PUT","DELETE","PATCH"],"description":"HTTP method"},"acknowledgeSharedOrigin":{"type":"boolean","description":"Acknowledge blast radius if target shares a server with other monitored sites"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"},"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z_][a-zA-Z0-9_]*$","description":"Secret key (e.g. LOGIN_EMAIL)"},"label":{"type":"string","minLength":1,"maxLength":200,"description":"Human-readable label"},"value":{"type":"string","minLength":1,"description":"Secret value (will be encrypted)"},"environment":{"type":"string","enum":["PRODUCTION","STAGING","DEVELOPMENT"],"default":"PRODUCTION","description":"Environment scope"},"description":{"type":"string","maxLength":500,"description":"Optional description"}},"required":["targetId","key","label","value"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"target_stats","description":"Get statistics for a specific target: runs, pass rate, findings, duration. Supports lifetime, monthly, or weekly periods.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID"},"period":{"type":"string","description":"Period filter: \"lifetime\", \"2026-04\" (monthly), or \"2026-W14\" (weekly). Defaults to lifetime."}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"period":{"type":"string","description":"Period filter: \"lifetime\", \"2026-04\" (monthly), or \"2026-W14\" (weekly). Defaults to lifetime."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID to scan"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"trigger_journey","description":"Execute a journey (custom browser test flow) against its target. The journey runs asynchronously — use get_run to check progress.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"journeyId":{"type":"string","description":"The journey ID to trigger"}},"required":["journeyId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID to test"},"testId":{"type":"string","description":"Test definition ID (use this or testSlug)"},"testSlug":{"type":"string","description":"Test slug e.g. \"security-headers\" (use this or testId)"}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_automation_rule","description":"Update an existing automation rule. Any field not provided will remain unchanged.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"ruleId":{"type":"string","description":"The automation rule ID to update"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Updated rule name"},"trigger":{"type":"string","enum":["TEST_FAILED","TEST_RECOVERED","INCIDENT_CREATED","INCIDENT_RESOLVED","TARGET_DOWN","TARGET_RECOVERED"],"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":{"testSlugs":{"type":"array","items":{"type":"string"}},"severities":{"type":"array","items":{"type":"string","enum":["CRITICAL","WARNING","INFO"]}},"minRecurrence":{"type":"integer","minimum":1},"targetIds":{"type":"array","items":{"type":"string"}}},"additionalProperties":false,"description":"Updated conditions"},"actions":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["escalate","suppress","rerun","notify","webhook","add_note"]},"severity":{"type":"string","enum":["CRITICAL","WARNING","INFO"]},"webhookUrl":{"type":"string","format":"uri"},"note":{"type":"string","maxLength":1000},"delayMs":{"type":"integer","minimum":0,"maximum":600000}},"required":["type"],"additionalProperties":false},"minItems":1,"description":"Updated actions"},"priorityOrder":{"type":"integer","description":"Updated priority order"}},"required":["ruleId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_journey","description":"Update a journey's name, settings, or steps. When steps are provided, all existing steps are replaced.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"journeyId":{"type":"string","description":"The journey ID to update"},"name":{"type":"string","minLength":1,"maxLength":200,"description":"Updated name"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"description":"Updated description"},"isEnabled":{"type":"boolean","description":"Enable or disable the journey"},"timeoutSeconds":{"type":"number","minimum":10,"maximum":300,"description":"Updated timeout"},"steps":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["navigate","click","type","fill","select","assert","wait","screenshot","scroll","hover","use_fragment"]},"target":{"type":"string","description":"CSS selector or URL target"},"value":{"type":"string","description":"Value to type/fill, URL to navigate to, or fragment ID for use_fragment"},"label":{"type":"string","minLength":1,"maxLength":200,"description":"Human-readable step description"},"assertionOperator":{"type":"string","enum":["element_visible","element_hidden","url_contains","text_contains","element_count"],"description":"Assertion type (for assert action)"},"waitMs":{"type":"number","minimum":0,"maximum":30000,"description":"Wait duration in ms (for wait action)"},"screenshot":{"type":"boolean","default":false,"description":"Capture screenshot after this step"}},"required":["action","label"],"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Replacement steps (replaces all existing steps)"}},"required":["journeyId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_notification_rule","description":"Update a notification rule. Only provided fields are changed.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"ruleId":{"type":"string","description":"The notification rule ID"},"name":{"type":"string","minLength":1,"maxLength":100},"eventTypes":{"type":"array","items":{"type":"string","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"]},"minItems":1},"channelTypes":{"type":"array","items":{"type":"string","enum":["IN_APP","EMAIL","SLACK","WEBHOOK","SMS","WEB_PUSH"]},"minItems":1},"severities":{"type":"array","items":{"type":"string","enum":["CRITICAL","WARNING","INFO"]}},"enabled":{"type":"boolean"},"quietHoursStart":{"anyOf":[{"type":"number","minimum":0,"maximum":23},{"type":"null"}]},"quietHoursEnd":{"anyOf":[{"type":"number","minimum":0,"maximum":23},{"type":"null"}]}},"required":["ruleId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_page_fragment","description":"Update a page fragment. When steps are provided, all existing steps are replaced.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"fragmentId":{"type":"string","description":"The fragment ID"},"name":{"type":"string","minLength":1,"maxLength":200,"description":"Updated name"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"steps":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["navigate","click","type","fill","select","assert","wait","screenshot","scroll","hover"]},"target":{"type":"string","description":"CSS selector or URL"},"value":{"type":"string","description":"Value to type/fill or URL to navigate"},"label":{"type":"string","minLength":1,"maxLength":200,"description":"Step description"},"assertionOperator":{"type":"string","enum":["element_visible","element_hidden","url_contains","text_contains","element_count"]},"waitMs":{"type":"number","minimum":0,"maximum":30000},"screenshot":{"type":"boolean","default":false}},"required":["action","label"],"additionalProperties":false},"minItems":1,"maxItems":30,"description":"Replacement steps"}},"required":["fragmentId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_scheduled_report","description":"Update an existing scheduled report. Any field not provided stays unchanged.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"reportId":{"type":"string","description":"The scheduled report ID to update"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Updated name"},"frequency":{"type":"string","enum":["DAILY","WEEKLY"],"description":"Updated frequency"},"enabled":{"type":"boolean","description":"Enable or disable the report"},"recipients":{"type":"string","description":"Updated comma-separated email list"},"dayOfWeek":{"type":"number","minimum":0,"maximum":6,"description":"Updated day of week"},"hourUtc":{"type":"number","minimum":0,"maximum":23,"description":"Updated hour UTC"}},"required":["reportId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_target","description":"Update a target's properties (name, URL, type, environment, business weight, tags, uptime toggle).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"targetId":{"type":"string","description":"The target ID to update"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"New display name"},"url":{"type":"string","format":"uri","description":"New URL"},"type":{"type":"string","enum":["WEBSITE","API","WEBSHOP"],"description":"New target type"},"environment":{"type":"string","enum":["PRODUCTION","STAGING","DEV"],"description":"New environment"},"weight":{"type":"string","enum":["REVENUE_PATH","PUBLIC","INTERNAL"],"description":"New business weight: REVENUE_PATH, PUBLIC or INTERNAL. Changing this rescores the target's open findings so the consequence ranking updates immediately."},"tags":{"type":"array","items":{"type":"string"},"description":"New tags (replaces existing)"},"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."}},"required":["targetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"aiEnabled":{"type":"boolean","description":"Enable/disable AI finding enrichment"},"aiModel":{"type":"string","description":"OpenAI model for finding enrichment (e.g. gpt-4o-mini)"},"aiSourceReviewModel":{"type":"string","description":"Model for AI source review plugin"},"aiAutoEnrich":{"type":"boolean","description":"Auto-enrich new findings with AI"},"aiMonthlyCapUsd":{"anyOf":[{"type":"number","minimum":0.01,"maximum":10000},{"type":"null"}],"description":"Monthly AI spending cap in USD (null = unlimited)"},"aiCapAction":{"type":"string","enum":["disable","warn"],"description":"Action when cap is reached"},"testsPaused":{"type":"boolean","description":"Kill switch — pauses ALL scheduled and manual test runs"},"uptimePingTimeoutMs":{"type":"number","minimum":1000,"maximum":30000,"description":"Uptime ping timeout in ms"},"uptimeDegradedThresholdMs":{"type":"number","minimum":500,"maximum":15000,"description":"Response time threshold for DEGRADED status"},"uptimeFailThreshold":{"type":"number","minimum":1,"maximum":10,"description":"Consecutive failures before DOWN"},"escalateWarningRecurrence":{"type":"number","minimum":1,"maximum":100,"description":"Finding recurrences before WARNING→CRITICAL"},"escalateWarningAgeDays":{"type":"number","minimum":1,"maximum":365,"description":"Finding age in days before WARNING→CRITICAL"},"escalateInfoRecurrence":{"type":"number","minimum":1,"maximum":100,"description":"Finding recurrences before INFO→WARNING"},"escalateInfoAgeDays":{"type":"number","minimum":1,"maximum":365,"description":"Finding age in days before INFO→WARNING"},"maxConcurrentRunsPerTarget":{"type":"number","minimum":1,"maximum":20,"description":"Max concurrent test runs per target"},"maxDailyRunsPerTarget":{"type":"number","minimum":0,"maximum":1000,"description":"Max test runs per target per day (0=unlimited). Prevents overwhelming hosted sites with limited request budgets."},"defaultRunTimeoutMs":{"type":"number","minimum":30000,"maximum":3600000,"description":"Default run timeout in ms"},"digestEnabled":{"type":"boolean","description":"Enable notification alert coalescing"},"digestWindowSeconds":{"type":"number","minimum":30,"maximum":86400,"description":"Digest window duration in seconds"},"seoRankCheckEnabled":{"type":"boolean","description":"Enable Google rank tracking"},"defaultScheduleMultiplier":{"type":"number","minimum":0.1,"maximum":10,"description":"Schedule frequency multiplier (< 1 = more frequent)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_test","description":"Enable or disable a test definition globally, or update its schedule/timeout. Requires admin scope.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","description":"Test plugin slug (e.g. \"http-protocol-check\")"},"enabled":{"type":"boolean","description":"Enable or disable the test globally"},"defaultSchedule":{"type":"string","description":"Cron schedule (e.g. \"0 */6 * * *\")"},"timeout":{"type":"number","description":"Timeout in milliseconds"}},"required":["slug"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":70,"grade":"B","scanned_at":"2026-11-04T14:40:11.808Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-04T14:40:11.720Z","components":{"code":{"score":25,"max":25,"notes":["9 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1741ms"]},"poisoning":{"score":15,"max":15,"notes":["3 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://api.teste.no/api/mcp","reachable":true,"authRequired":false,"latencyMs":1741,"serverInfo":{"name":"teste-no","version":"1.0.0"}}],"packages":[{"registryType":"npm","identifier":"validoria-mcp","version":"2.0.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-08-10T05:49:28.493Z","repositoryUrl":"git+https://github.com/Kloner/teste-no-mcp.git","weeklyDownloads":46}],"repo":{"found":false,"owner":"Kloner","repo":"teste-no-mcp","error":"repo not found"},"icon":{"url":"https://validoria.com/api/icon.svg","source":"registry"},"presence":{"stars":null,"forks":null,"downloadsWeek":46,"license":"MIT","lastPushAt":null,"score":16}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"B","reason":"score 70: Write-action tools reachable without authentication","createdAt":"2026-11-04T14:40:12.591Z"}],"reviews":[]}