validoria-mcp

Continuous website testing by Validoria — monitor security, SEO, performance, and accessibility.

사용해야 할까요

품질 및 안전성

A
설명 품질
97%
스키마 완전성
92%
이름 품질
96%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~11,685토큰 (도구 정의)
~1.5 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 9.13%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "validoria-mcp": {
      "command": "npx",
      "args": [
        "validoria-mcp"
      ]
    }
  }
}

실행 가능한 패키지

npmvalidoria-mcp2.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#"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 74개
검증됨버전이 기록되지 않음도구 74개