humanizer_type
Simulate human typing patterns by modeling keystroke timing, including variable delays, word pauses, and optional typos with corrections, to make automated text input appear natural.
Instructions
Type text with human-like keystroke timing. Models per-character delays based on WPM, bigram frequency, shift penalty, word boundary pauses, and optional typo injection with backspace correction.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | Chrome target ID from interceptor_chrome_launch | |
| text | Yes | Text to type | |
| wpm | No | Typing speed in words per minute (default: 40) | |
| error_rate | No | Typo probability per character, 0-1 (default: 0) |
Implementation Reference
- src/tools/humanizer.ts:120-167 (handler)The MCP tool registration and handler implementation for "humanizer_type".
server.tool( "humanizer_type", "Type text with human-like keystroke timing. " + "Models per-character delays based on WPM, bigram frequency, shift penalty, " + "word boundary pauses, and optional typo injection with backspace correction.", { target_id: z.string().describe("Chrome target ID from interceptor_chrome_launch"), text: z.string().describe("Text to type"), wpm: z.number().optional().default(40) .describe("Typing speed in words per minute (default: 40)"), error_rate: z.number().optional().default(0) .describe("Typo probability per character, 0-1 (default: 0)"), }, async ({ target_id, text, wpm, error_rate }) => { try { const result = await humanizerEngine.typeText(target_id, text, { wpm, errorRate: error_rate, }); return { content: [{ type: "text", text: JSON.stringify({ status: "success", target_id, action: "type", text_length: text.length, stats: { total_ms: result.totalMs, events_dispatched: result.eventsDispatched, chars_typed: result.charsTyped, effective_wpm: text.length > 0 ? Math.round((text.length / 5) / (result.totalMs / 60_000)) : 0, }, }), }], }; } catch (e) { return { content: [{ type: "text", text: JSON.stringify({ status: "error", target_id, action: "type", error: errorToString(e) }), }], }; } }, );