get_screenshot
Search by keywords to find matching product screenshots and view their image URLs for layout, colors, and design patterns.
Instructions
Searches 217 real Log360 Cloud product screenshots by keywords. Returns matching image URLs you can view to understand exact layout, colors, spacing, and data patterns. ALWAYS use this to see what a page really looks like before building it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keywords (e.g. 'windows startup', 'alerts main', 'dashboard events', 'settings device'). Searches screenshot filenames. | |
| max_results | No | Max results (default 5) |
Implementation Reference
- api/mcp.ts:674-688 (handler)The get_screenshot tool handler. It accepts a 'query' string and optional 'max_results' number, searches the SCREENSHOTS array for matching keywords, scores results, and returns image URLs from GitHub. This is the actual implementation of the tool logic.
server.tool("get_screenshot", "Searches 217 real product screenshots by keywords. Returns image URLs showing exact layouts, colors, and spacing. Use this for visual reference instead of looking for local files.", { query: z.string().describe("Search keywords (e.g. 'windows startup', 'alerts main', 'dashboard', 'settings device')"), max_results: z.number().optional().describe("Max results, default 5") }, async ({ query, max_results }) => { const keywords = query.toLowerCase().split(/[\s,]+/).filter(Boolean); const max = max_results || 5; const scored = SCREENSHOTS.map(s => { let score = 0; const lower = s.toLowerCase(); for (const kw of keywords) { if (lower.includes(kw)) score++; } return { path: s, score }; }).filter(r => r.score > 0).sort((a, b) => b.score - a.score).slice(0, max); if (!scored.length) return { content: [{ type: "text" as const, text: `No screenshots for "${query}". Try broader keywords.\nAvailable tabs: ALERTS, COMPLIANCE, DASHBOARD, REPORTS, SEARCH, Security, Settings, CLOUD PROTECTION.\nExample: "windows startup", "alerts main", "dashboard events", "settings device"` }] }; const lines = scored.map((r, i) => { const encoded = r.path.split('/').map(p => encodeURIComponent(p)).join('/'); return `${i+1}. **${r.path}**\n URL: ${SCREENSHOT_BASE}/${encoded}`; }); return { content: [{ type: "text" as const, text: `Found ${scored.length} screenshot(s) for "${query}":\n\n${lines.join("\n\n")}\n\nThese are real product screenshots. Match the layout exactly.` }] }; - api/mcp.ts:674-674 (schema)The input schema for get_screenshot: 'query' (required string) and 'max_results' (optional number, default 5). Defined inline in the server.tool() call.
server.tool("get_screenshot", "Searches 217 real product screenshots by keywords. Returns image URLs showing exact layouts, colors, and spacing. Use this for visual reference instead of looking for local files.", { query: z.string().describe("Search keywords (e.g. 'windows startup', 'alerts main', 'dashboard', 'settings device')"), max_results: z.number().optional().describe("Max results, default 5") }, async ({ query, max_results }) => { - api/mcp.ts:673-674 (registration)The tool registration as the 14th tool, registered via server.tool() on the MCP server instance inside createMcpHandler.
/* 14. get_screenshot */ server.tool("get_screenshot", "Searches 217 real product screenshots by keywords. Returns image URLs showing exact layouts, colors, and spacing. Use this for visual reference instead of looking for local files.", { query: z.string().describe("Search keywords (e.g. 'windows startup', 'alerts main', 'dashboard', 'settings device')"), max_results: z.number().optional().describe("Max results, default 5") }, async ({ query, max_results }) => { - api/mcp.ts:257-275 (helper)SCREENSHOTS array — the data source that get_screenshot searches. Contains 15 screenshot file paths organized by tab (ALERTS TAB, COMPLIANCE TAB, DASHBOARD TAB, etc.).
const SCREENSHOTS: string[] = [ "ALERTS TAB/[Main] Alerts - Main View Severity Stat Cards Table with Critical Trouble Attention Counts.png", "ALERTS TAB/[Main] Alerts - Manage Profiles Table with Alert Types Severity Log Source Actions.png", "ALERTS TAB/[Interaction] Alerts - Alert Detail Drawer EXE Process Executed with MITRE and Ticket Status.png", "COMPLIANCE TAB/[Main] Compliance - Landing Page Grid Row 1 PCI-DSS HIPAA FISMA GDPR SOX ISO27001.png", "COMPLIANCE TAB/[Main] Compliance - PCI-DSS User Logons Report Bar Chart Sidemenu Table.png", "DASHBOARD TAB/[Main] Events Overview - Main Dashboard with Log Trend and Severity Charts.png", "DASHBOARD TAB/[Main] Network Overview - Traffic Trend and Top Network Devices.png", "REPORTS TAB/[Main] Reports - Servers & Workstation - Windows - All Events Table View with Line Chart.png", "REPORTS TAB/[Main] Reports - Servers & Workstation - Windows - Sidemenu Startup Events Expanded.png", "REPORTS TAB/[Main] Reports - Servers & Workstation - Unix - All Events Line Chart Severity Table.png", "SEARCH TAB/[Main] Search - Results Page Bar Chart Severity Emergency Log List View.png", "Security TAB/[Main] Security - Analytics Dashboard Detection Pipeline MITRE Tactics Trends.png", "Settings TAB/[Main] Settings - Device Management Windows Devices Table IP Agent Status.png", "Settings TAB/[Main] Settings - License Page Storage Stats Feature Table Usage Bars.png", "CLOUD PROTECTION TAB/[Main] Cloud Protection - Application Insight Dashboard Traffic Trend Shadow Apps Banned Apps Charts.png", ]; const SCREENSHOT_BASE = `https://raw.githubusercontent.com/${PRIVATE_REPO}/main/data/LOG360%20Cloud%20Full%20Product%20Bulk%20Screenshot_`; - api/mcp.ts:275-276 (helper)SCREENSHOT_BASE — the base URL used to construct full image URLs for screenshots.
const SCREENSHOT_BASE = `https://raw.githubusercontent.com/${PRIVATE_REPO}/main/data/LOG360%20Cloud%20Full%20Product%20Bulk%20Screenshot_`;