/** * MCP Tool: get_scan_results * * Returns detailed, per-section scan results with flexible filtering. * Uses the same data and severity rules as the web UI — no invented logic. * * Sections: * - seo: SEO issues grouped by page (severity, issueType, currentValue) * - broken_pages: Internal pages with broken HTTP status * - broken_links: Broken links grouped by source page (internal + external) * - broken_external_urls: Deduplicated broken external targets with linking pages * - visual_changes: Pages with visual diffs (diff %, images, regions) * - lighthouse: Lighthouse scores + Core Web Vitals per page * - page_changes: Added/removed/matched pages between primary and baseline */ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import type { McpExecutor } from "../executor.js"; export type SectionEnvelope = { total: number; returned: number; offset: number; limit: number; hasMore: boolean; }; export declare function formatPagination(s: SectionEnvelope): string; /** Prefer full URL, fall back to path, default to "/" */ export declare function displayUrl(url?: string, path?: string): string; /** * Path-preferring display: returns a non-trivial `path` if provided, otherwise * derives the pathname from `url`, otherwise `"/"`. Used where the rendered * line is conceptually a path (SEO `Page:` line, internal page_changes rows). * * - `path` wins when non-empty AND length > 1 (i.e., not just "/"). * - Else attempts `new URL(url).pathname`; parse failure falls through. * - Final fallback `"/"`. */ export declare function displayPath(url?: string, path?: string): string; type SeoIssueRow = { issueType: string; severity: string; label: string | null; category: string | null; impact: string | null; quickFix: string | null; fieldName: string | null; currentValue: string | null; impactScore: number | null; }; /** Format the current value for display — always present, with char count for length issues */ export declare function formatCurrentValue(issue: SeoIssueRow): string; /** Format a single SEO issue block: Issue → Why → Fix */ export declare function formatSeoIssue(issue: SeoIssueRow): string[]; export declare function formatSeoSection(data: Record): string; export declare function formatBrokenPagesSection(data: Record): string; export declare function formatBrokenLinksSection(data: Record): string; export declare function formatBrokenExternalUrlsSection(data: Record): string; export declare const VISUAL_REASON_PREFIX = "Visual change:"; export declare function formatVisualChangesSection(data: Record): string; export declare function formatLighthouseSection(data: Record): string; export declare function formatPageChangesSection(data: Record): string; export declare const SECTION_FORMATTERS: Record) => string>; export declare function registerGetScanResults(server: McpServer, executor: McpExecutor): void; export {};