validoria-mcp
Continuous website testing by Validoria — monitor security, SEO, performance, and accessibility.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"validoria-mcp": {
"command": "npx",
"args": [
"validoria-mcp"
]
}
}
}실행 가능한 패키지
2.0.1stdio원격 엔드포인트
https://api.teste.no/api/mcpstreamable-http할 수 있는 일
도구 목록
도구 (74)
🟡guest_start_scan(url)
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.
입력 스키마
{
"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#"
}🟢guest_get_scan(scanId, guestSessionId)
Poll results for a guest_start_scan. Pass the scanId and guestSessionId from the start response. No API key required.
입력 스키마
{
"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#"
}🟢list_targets(status, type, limit)
List all monitoring targets for your team. Returns name, URL, type, status, and uptime info for each target.
입력 스키마
{
"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#"
}🟢get_target(targetId)
Get detailed information about a specific target including status, uptime, fingerprint, and composite scores.
입력 스키마
{
"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#"
}🟢get_target_scores(targetId)
Get composite scores (Security, SEO, Performance, Accessibility) for a target. Each score is 0-100 with a status rating.
입력 스키마
{
"type": "object",
"properties": {
"targetId": {
"type": "string",
"description": "The target ID"
}
},
"required": [
"targetId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_findings(targetId, status, severity, limit)
List findings (discovered issues) across your targets. Filter by status, severity, or target. Returns title, severity, status, test name, and AI enrichment if available.
입력 스키마
{
"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#"
}🟢get_finding(findingId)
Get full details of a specific finding, including evidence, AI analysis, and recommended fix.
입력 스키마
{
"type": "object",
"properties": {
"findingId": {
"type": "string",
"description": "The finding ID"
}
},
"required": [
"findingId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_incidents(status, targetId, limit)
List incidents (grouped operational issues) across your targets. Filter by status. Returns title, severity, status, findings count, and deployment correlation.
입력 스키마
{
"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#"
}🟢get_incident(incidentId)
Get full details of a specific incident including linked findings, AI analysis, and deployment correlation.
입력 스키마
{
"type": "object",
"properties": {
"incidentId": {
"type": "string",
"description": "The incident ID"
}
},
"required": [
"incidentId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_runs(targetId, status, testSlug, limit)
List recent test runs. Filter by target, status, or test slug. Returns run status, score, summary, duration, and finding count.
입력 스키마
{
"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#"
}🟢get_run(runId)
Get full details of a specific test run including metrics, score, summary, errors, and associated findings.
입력 스키마
{
"type": "object",
"properties": {
"runId": {
"type": "string",
"description": "The run ID"
}
},
"required": [
"runId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢active_runs(targetId)
Get currently running and queued tests across all targets. Useful for checking what tests are in progress right now.
입력 스키마
{
"type": "object",
"properties": {
"targetId": {
"type": "string",
"description": "Filter by target ID"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢team_stats(period)
Get team-wide overview statistics: total runs, pass rate, open findings, open incidents, average duration. Supports lifetime, monthly, or weekly periods.
입력 스키마
{
"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#"
}🟢target_stats(targetId, period)
Get statistics for a specific target: runs, pass rate, findings, duration. Supports lifetime, monthly, or weekly periods.
입력 스키마
{
"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#"
}🟢daily_trends(days, targetId)
Get daily time-series data for runs, findings, and average duration. Useful for identifying trends over time. Returns up to 90 days of data.
입력 스키마
{
"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#"
}🟢get_site_map(targetId, includePages, pageLimit, pageStatus)
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.
입력 스키마
{
"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#"
}🟢list_maintenance_windows(targetId)
List maintenance windows for a target. Shows scheduled and recurring maintenance periods that suppress alerts.
입력 스키마
{
"type": "object",
"properties": {
"targetId": {
"type": "string",
"description": "The target ID"
}
},
"required": [
"targetId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_tests(category, enabledOnly)
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.
입력 스키마
{
"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#"
}🟢trigger_test(targetId, testId, testSlug)
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.
입력 스키마
{
"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#"
}🟢trigger_all_tests(targetId)
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.
입력 스키마
{
"type": "object",
"properties": {
"targetId": {
"type": "string",
"description": "The target ID to scan"
}
},
"required": [
"targetId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪acknowledge_incident(incidentId)
Acknowledge an open incident to signal that someone is looking at it. Changes status from OPEN to ACKNOWLEDGED.
입력 스키마
{
"type": "object",
"properties": {
"incidentId": {
"type": "string",
"description": "The incident ID to acknowledge"
}
},
"required": [
"incidentId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪resolve_incident(incidentId)
Resolve an incident to mark it as handled. Changes status to RESOLVED and sets the closed timestamp.
입력 스키마
{
"type": "object",
"properties": {
"incidentId": {
"type": "string",
"description": "The incident ID to resolve"
}
},
"required": [
"incidentId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪mute_finding(findingId)
Mute an open finding to suppress it from dashboards and alerts. Status changes from OPEN to MUTED.
입력 스키마
{
"type": "object",
"properties": {
"findingId": {
"type": "string",
"description": "The finding ID to mute"
}
},
"required": [
"findingId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_maintenance_window(targetId, name, startsAt, endsAt, isRecurring, ...)
Schedule a maintenance window for a target. During maintenance, alerts and notifications are suppressed. Supports one-time, daily, and weekly recurring windows.
입력 스키마
{
"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#"
}🔴delete_maintenance_window(windowId, targetId)
Remove a scheduled maintenance window.
입력 스키마
{
"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#"
}⚪record_deployment(targetId, version, commitSha, environment, 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.
입력 스키마
{
"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#"
}⚪recompute_scores(targetId)
Force recompute all composite scores (Security, SEO, Performance, Accessibility) for a target. Useful after manual changes or when scores seem stale.
입력 스키마
{
"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#"
}🟢list_automation_rules(enabled)
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).
입력 스키마
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "Filter by enabled/disabled status"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_automation_rule(ruleId)
Get full details of a specific automation rule.
입력 스키마
{
"type": "object",
"properties": {
"ruleId": {
"type": "string",
"description": "The automation rule ID"
}
},
"required": [
"ruleId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_automation_rule(name, trigger, targetId, conditions, actions, ...)
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.
입력 스키마
{
"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#"
}🟡update_automation_rule(ruleId, name, trigger, targetId, isEnabled, ...)
Update an existing automation rule. Any field not provided will remain unchanged.
입력 스키마
{
"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#"
}🔴delete_automation_rule(ruleId)
Permanently delete an automation rule.
입력 스키마
{
"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#"
}🟢list_journeys(targetId)
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.
입력 스키마
{
"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#"
}🟢get_journey(journeyId)
Get full details of a specific journey including all steps.
입력 스키마
{
"type": "object",
"properties": {
"journeyId": {
"type": "string",
"description": "The journey ID"
}
},
"required": [
"journeyId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_journey(targetId, name, description, platform, timeoutSeconds, ...)
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.
입력 스키마
{
"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#"
}🟡update_journey(journeyId, name, description, isEnabled, timeoutSeconds, ...)
Update a journey's name, settings, or steps. When steps are provided, all existing steps are replaced.
입력 스키마
{
"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#"
}🔴delete_journey(journeyId)
Permanently delete a journey and all its steps.
입력 스키마
{
"type": "object",
"properties": {
"journeyId": {
"type": "string",
"description": "The journey ID to delete"
}
},
"required": [
"journeyId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢trigger_journey(journeyId)
Execute a journey (custom browser test flow) against its target. The journey runs asynchronously — use get_run to check progress.
입력 스키마
{
"type": "object",
"properties": {
"journeyId": {
"type": "string",
"description": "The journey ID to trigger"
}
},
"required": [
"journeyId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_scheduled_reports
List all scheduled reports for the team. Reports are automatically generated and emailed on a daily or weekly basis.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_scheduled_report(name, frequency, recipients, dayOfWeek, hourUtc)
Create a new scheduled email report. Reports include run stats, open findings, composite scores, and per-target status.
입력 스키마
{
"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#"
}🟡update_scheduled_report(reportId, name, frequency, enabled, recipients, ...)
Update an existing scheduled report. Any field not provided stays unchanged.
입력 스키마
{
"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#"
}🔴delete_scheduled_report(reportId)
Permanently delete a scheduled report.
입력 스키마
{
"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#"
}🟢get_team_settings
Get the team's configuration including AI enrichment, uptime monitoring, severity escalation, run policies, notification coalescing, SEO, and Kloner Tasks integration settings.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡update_team_settings(aiEnabled, aiModel, aiSourceReviewModel, aiAutoEnrich, aiMonthlyCapUsd, ...)
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).
입력 스키마
{
"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#"
}🟢list_notification_rules
List all notification alert rules for the team. Rules map event types + severity levels to notification channels.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_notification_rule(name, eventTypes, channelTypes, severities, targetId, ...)
Create a notification alert rule. Defines which events at which severity levels trigger notifications on which channels. Supports quiet hours and per-target scoping.
입력 스키마
{
"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#"
}🟡update_notification_rule(ruleId, name, eventTypes, channelTypes, severities, ...)
Update a notification rule. Only provided fields are changed.
입력 스키마
{
"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#"
}🔴delete_notification_rule(ruleId)
Permanently delete a notification rule.
입력 스키마
{
"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#"
}🟢list_notification_channels
List all notification channels (Email, Slack, Webhook, SMS, Web Push) configured for the team. Sensitive config values are redacted.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_keywords(targetId)
List all SEO keywords tracked for a target, including latest Google rank position. Max 50 per target.
입력 스키마
{
"type": "object",
"properties": {
"targetId": {
"type": "string",
"description": "The target ID"
}
},
"required": [
"targetId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡add_keyword(targetId, keyword, isPrimary, pageScope)
Add an SEO keyword to track for a target. Max 50 keywords per target.
입력 스키마
{
"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#"
}🔴remove_keyword(keywordId, targetId)
Remove an SEO keyword from a target.
입력 스키마
{
"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#"
}⚪start_load_test(targetId, mode, concurrency, duration, targetUrl, ...)
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.
입력 스키마
{
"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#"
}🔴cancel_load_test(loadTestRunId)
Cancel a running load test.
입력 스키마
{
"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#"
}🟢get_load_test(loadTestRunId)
Get details and results of a load test run.
입력 스키마
{
"type": "object",
"properties": {
"loadTestRunId": {
"type": "string",
"description": "The load test run ID"
}
},
"required": [
"loadTestRunId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_load_tests(targetId, limit)
List recent load test runs for a target.
입력 스키마
{
"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#"
}🟢list_secrets(targetId)
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).
입력 스키마
{
"type": "object",
"properties": {
"targetId": {
"type": "string",
"description": "The target ID"
}
},
"required": [
"targetId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪store_secret(targetId, key, label, value, environment, ...)
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.
입력 스키마
{
"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#"
}🟡rotate_secret(secretId, targetId, newValue)
Update the value of an existing secret.
입력 스키마
{
"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#"
}🔴delete_secret(secretId, targetId)
Permanently delete a secret from a target's vault.
입력 스키마
{
"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#"
}🟢list_page_fragments
List all reusable page fragments for the team. Fragments are shared step sequences (e.g. "Login", "Dismiss Cookies") that can be inserted into multiple Journeys via the use_fragment action.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_page_fragment(name, description, steps)
Create a reusable step sequence that can be shared across multiple Journeys. Fragment names must be unique per team.
입력 스키마
{
"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#"
}🟡update_page_fragment(fragmentId, name, description, steps)
Update a page fragment. When steps are provided, all existing steps are replaced.
입력 스키마
{
"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#"
}🔴delete_page_fragment(fragmentId)
Permanently delete a page fragment.
입력 스키마
{
"type": "object",
"properties": {
"fragmentId": {
"type": "string",
"description": "The fragment ID to delete"
}
},
"required": [
"fragmentId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_target(name, url, type, environment, weight, ...)
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.
입력 스키마
{
"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#"
}🟡update_target(targetId, name, url, type, environment, ...)
Update a target's properties (name, URL, type, environment, business weight, tags, uptime toggle).
입력 스키마
{
"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#"
}🔴delete_target(targetId, confirm)
Permanently delete a target and all its associated data (runs, findings, incidents, artifacts). This cannot be undone.
입력 스키마
{
"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#"
}🟡analyze_target(url)
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.
입력 스키마
{
"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#"
}⚪import_targets(items)
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.
입력 스키마
{
"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#"
}🟡create_muting_rule(scope, fingerprintPattern, testDefinitionId, targetId, reason, ...)
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.
입력 스키마
{
"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#"
}🟢system_health
Get a comprehensive system health report: BullMQ queue depths, active/stuck runs, user sessions, notification delivery stats, and recent error counts. Requires admin scope.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡update_test(slug, enabled, defaultSchedule, timeout)
Enable or disable a test definition globally, or update its schedule/timeout. Requires admin scope.
입력 스키마
{
"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#"
}⚪enable_all_tests(category)
Enable all test definitions globally. Optionally filter by category to only enable tests in that category. Requires admin scope.
입력 스키마
{
"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#"
}⚪disable_all_tests(category)
Disable all test definitions globally. Optionally filter by category to only disable tests in that category. Requires admin scope.
입력 스키마
{
"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#"
}커뮤니티
증거