ui-capture
Capture screenshots and visual snapshots from Android applications to document UI states and identify visual changes during development and testing.
Instructions
Capture screenshots or visual snapshots.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | ||
| localPath | No | ||
| inline | No | ||
| maxDimension | No | Max image dimension in pixels (default: 800). Higher = better quality, more tokens. | |
| raw | No | Skip scaling, full device resolution. |
Implementation Reference
- src/tools/ui-capture.ts:28-45 (handler)The main handler function for the 'ui-capture' tool.
export async function handleUiCaptureTool( input: UiCaptureInput, context: ServerContext, uiConfig?: UiConfig, ): Promise<Record<string, unknown>> { const device = await context.deviceState.ensureDevice(context.adb); const config = uiConfig ?? DEFAULT_CONFIG.ui; const handler = operations[input.operation]; if (!handler) { throw new ReplicantError( ErrorCode.INVALID_OPERATION, `Unknown operation: ${input.operation}`, "Valid operations: screenshot, visual-snapshot", ); } return handler(input, context, config, device.id); } - src/tools/ui-capture.ts:6-12 (schema)The Zod schema defining the input for the 'ui-capture' tool.
export const uiCaptureInputSchema = z.object({ operation: z.enum(["screenshot", "visual-snapshot"]), localPath: z.string().optional(), inline: z.boolean().optional(), maxDimension: z.number().optional(), raw: z.boolean().optional(), }); - src/tools/ui-capture.ts:74-100 (registration)The tool definition object containing the name, description, and inputSchema for 'ui-capture'.
export const uiCaptureToolDefinition = { name: "ui-capture", description: "Capture screenshots or visual snapshots.", inputSchema: { type: "object", properties: { operation: { type: "string", enum: ["screenshot", "visual-snapshot"], }, localPath: { type: "string" }, inline: { type: "boolean" }, maxDimension: { type: "number", description: `Max image dimension in pixels (default: ${DEFAULT_CONFIG.ui.maxImageDimension}). Higher = better quality, more tokens.`, }, raw: { type: "boolean", description: "Skip scaling, full device resolution." }, }, required: ["operation"], }, annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false, }, };