ViewportWitness by Apex Labs
Agent website testing: browser QA, visual regression, Markdown extraction, and security checks.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"viewport-witness": {
"url": "https://qa.honeygate.app/mcp"
}
}
}Puntos de conexión remotos
https://qa.honeygate.app/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (6)
🔴check_page(url)
Choose this for broad website testing when the caller wants screenshots, responsive layout checks, accessibility findings, console/network errors, performance evidence, and a release diagnosis across phone portrait, phone landscape, and desktop. For explicit pass/fail assertions use verify_page instead. Costs $0.08 USDC via x402. Requires an x402-aware client to authorise payment; standard AI assistants cannot automatically sign x402.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public HTTPS page URL. Private, loopback, credentialed, and non-HTTPS URLs are rejected."
}
},
"required": [
"url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴verify_page(url, assertions)
Choose this only when the caller supplies explicit website assertions that need pass/fail results across three viewports. For broad exploratory browser QA use check_page instead. Assertion types: noHorizontalOverflow, noConsoleErrors, textVisible, titleIncludes, selectorExists, selectorVisible. Costs $0.10 USDC via x402. Requires an x402-aware client; standard AI assistants cannot automatically sign x402.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public HTTPS page URL. Private, loopback, credentialed, and non-HTTPS URLs are rejected."
},
"assertions": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "noHorizontalOverflow"
}
},
"required": [
"type"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "noConsoleErrors"
}
},
"required": [
"type"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "textVisible"
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Visible text to find on the rendered page."
}
},
"required": [
"type",
"value"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "titleIncludes"
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Text that the document title must include."
}
},
"required": [
"type",
"value"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "selectorExists"
},
"selector": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "CSS selector that must exist in the DOM."
}
},
"required": [
"type",
"selector"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "selectorVisible"
},
"selector": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "CSS selector that must be visibly rendered."
}
},
"required": [
"type",
"selector"
],
"additionalProperties": false
}
]
},
"minItems": 1,
"maxItems": 20,
"description": "One to twenty explicit pass/fail assertions to evaluate across all three viewports."
}
},
"required": [
"url",
"assertions"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴compare_page(url, baselineJobId)
Choose this for visual regression testing after check_page has produced a completed, unexpired baseline. Compares screenshots and QA evidence, returning pixel-diff percentages, new or resolved accessibility issues, error deltas, performance evidence, and diagnosis. Costs $0.12 USDC via x402. Requires an x402-aware client; standard AI assistants cannot automatically sign x402.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public HTTPS page URL. Private, loopback, credentialed, and non-HTTPS URLs are rejected."
},
"baselineJobId": {
"type": "string",
"format": "uuid",
"description": "Completed, unexpired ViewportWitness check job to use as the visual baseline."
}
},
"required": [
"url",
"baselineJobId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴extract_page(url, maxOutputTokens)
Choose this when an agent needs the readable content of a public webpage as deterministic clean Markdown, without screenshots or browser execution. Costs $0.005 USDC via x402.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public HTTPS page URL. Private, loopback, credentialed, and non-HTTPS URLs are rejected."
},
"maxOutputTokens": {
"type": "integer",
"minimum": 500,
"maximum": 12000,
"description": "Optional approximate output budget from 500 to 12000 tokens."
}
},
"required": [
"url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴web_release_gate(url)
Choose this for a passive website release-security review of headers, cookie flags, mixed content, cross-origin script integrity, and server disclosure. It does not run browser QA, probe the site, execute code, or replace a security audit. Costs $0.05 USDC via x402.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public HTTPS page URL. Private, loopback, credentialed, and non-HTTPS URLs are rejected."
}
},
"required": [
"url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_report(jobId)
Retrieve the status or completed QA report for a previously submitted job. Free and read-only. Poll until status is "complete", "failed", or "retryable". No payment required.
Esquema de entrada
{
"type": "object",
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"description": "ViewportWitness job UUID returned by a paid tool."
}
},
"required": [
"jobId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia