MCPretentious
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCPretentiousopen a new terminal and run 'ls -la'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCPretentious - Universal Terminal MCP
MCP server for terminal control. Supports iTerm2 (macOS) via WebSocket API and tmux (cross-platform) via direct commands.
📋 Latest Release (v1.3.0 - 2025-09-03)
Added
Alt key support - Comprehensive Alt key combinations for
mcpretentious-typetoolAlt + Letters (a-z):
alt-athroughalt-zAlt + Shift + Letters:
alt-shift-athroughalt-shift-zfor uppercaseAlt + Numbers (0-9):
alt-0throughalt-9Alt + Navigation keys: arrow keys, home, end, pageup, pagedown
Alt + Function keys (F1-F12):
alt-f1throughalt-f12Alt + Special keys: tab, enter, space, backspace
Uses standard terminal escape sequences (ESC prefix and CSI modifiers)
For full changelog, see CHANGELOG.md
Related MCP server: poof-mcp
Installation
npm install -g mcpretentiousPrerequisites
iTerm2 (macOS):
Enable Python API: iTerm2 → Preferences → General → Magic → Enable "Python API"
TMux (any platform):
Install tmux:
brew install tmux/apt install tmux/ etc.
Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"mcpretentious": {
"command": "npx",
"args": ["mcpretentious"]
}
}
}Claude Code
claude mcp add mcpretentious npx mcpretentiousMain Applications
TUI application testing: Simulates all human interactions - keyboard, mouse, screen reading
Remote server management: Persistent terminal sessions allow remote system control over SSH
Features
Multiple backends: iTerm2 (WebSocket, 20x faster than AppleScript) and tmux (direct commands)
No focus stealing: Background terminal control
Real terminal IDs: Access existing terminals, not just MCP-created ones
Screen reading: Actual viewport content with cursor position and colors
Mouse support: Full SGR protocol (click, drag, scroll) in both backends
Token-optimized screenshots: 85-98% reduction via layered format
Backend Comparison
Feature | iTerm2 | TMux |
Platform | macOS | Cross-platform |
Method | WebSocket + Protobuf | Direct commands |
Performance | Fastest | Fast |
Colors | Full RGB | ANSI 256 |
Authentication | Cookie/key | Unix permissions |
Tools
mcpretentious-open- Create terminal sessionmcpretentious-type- Send text/keys/ASCII codesmcpretentious-screenshot- Get screen content (configurable layers)mcpretentious-mouse- Send mouse events (SGR protocol)mcpretentious-resize- Set terminal dimensionsmcpretentious-close- Close terminalmcpretentious-list- List active terminals
Testing
npx mcpretentious-test # Basic test
npx mcpretentious-test --verbose # Detailed outputSecurity
Full terminal access - the LLM can run any command you could. Be cautious with:
Untrusted commands
System passwords
Destructive operations
Documentation
License
MIT - Tobias Oetiker tobi@oetiker.ch
Available Tools
9 toolsmcpretentious-closeB
Closes the terminal window associated with the specified terminal ID.
| Name | Required | Description | Default |
|---|---|---|---|
| terminalId | Yes | The terminal ID to close |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description only states the basic action. Does not disclose side effects (e.g., unsaved work, process termination), error handling, or security implications of closing a terminal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, zero wasted words. Efficiently communicates the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple close operation with one parameter and no output schema, the description is adequate. However, additional details on behavior (e.g., graceful shutdown, error states) would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage (terminalId described as 'The terminal ID to close'). Description adds no new parameter information beyond what schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it closes a terminal window (specific verb+resource). Distinguishes from siblings like info, list, open, etc. which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., when to close vs info/list). No prerequisites or conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcpretentious-infoA
Gets terminal metadata including dimensions (columns × rows) and session information.
| Name | Required | Description | Default |
|---|---|---|---|
| terminalId | Yes | The terminal ID to get info for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'gets metadata' which implies read-only, but does not explicitly confirm no side effects or disclose any behavioral traits beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded, providing essential information without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one param, no output schema), the description adequately explains what is returned (metadata, dimensions, session info). It could mention no modifications, but sufficient for basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single parameter with 100% coverage. The description adds no extra meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves terminal metadata, specifically dimensions and session info, using a specific verb 'gets'. It distinguishes from sibling tools that perform other actions like closing or resizing terminals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for checking terminal metadata but does not explicitly state when to use this tool versus siblings or provide any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcpretentious-listA
Lists all currently open terminal sessions with their IDs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the tool lists sessions with IDs, implying a read-only and non-destructive operation. However, it doesn't explicitly confirm no side effects or disclose any behavioral traits beyond the basic listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has zero parameters and no output schema, the description is mostly complete. It mentions listing terminal sessions with IDs, which sufficiently conveys the output. Lacking a bit more detail about the return format, but for a simple list tool, it's adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description adds no param info since none are needed, but this is adequate. Baseline 4 applies per the guidelines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists open terminal sessions with their IDs, using a specific verb and resource. It distinguishes itself from siblings like mcpretentious-close, info, etc., which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions or context for when to use list vs other session management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcpretentious-mouseA
Send mouse events to a terminal using SGR mouse protocol.
This tool provides direct control over mouse events following the terminal's SGR (Select Graphic Rendition) mouse protocol.
EVENTS:
- 'press': Mouse button press event
- 'release': Mouse button release event
- 'drag': Mouse movement with button held down
BUTTONS (use names or button-N format):
Named buttons:
- 'left': Left mouse button
- 'middle': Middle mouse button
- 'right': Right mouse button
- 'scrollUp': Scroll wheel up
- 'scrollDown': Scroll wheel down
Direct button codes:
- 'button-0' through 'button-127': Direct SGR button codes
- Common codes: 0=left, 1=middle, 2=right, 64=scrollUp, 65=scrollDown
MODIFIERS (optional, default to false):
- shift: Hold shift key during event
- alt: Hold alt/option key during event
- ctrl: Hold control key during event
COORDINATES:
- x and y are 0-based character positions (column, row)
- The protocol will convert to 1-based coordinates internally
EXAMPLES:
- Left click at (10,5): event='press', button='left', x=10, y=5, then event='release' with same coordinates
- Drag from (5,5) to (15,10): event='press' at (5,5), event='drag' at (15,10), event='release' at (15,10)
- Scroll up at (20,8): event='press', button='scrollUp', x=20, y=8 (no release needed for scroll)| Name | Required | Description | Default |
|---|---|---|---|
| terminalId | Yes | The terminal ID to send mouse events to | |
| event | Yes | Mouse event type: 'press' for button down, 'release' for button up, 'drag' for movement with button held | |
| x | Yes | X coordinate (column position, 0-based) | |
| y | Yes | Y coordinate (row position, 0-based) | |
| button | Yes | Mouse button: named ('left', 'middle', 'right', 'scrollUp', 'scrollDown') or direct code ('button-0' through 'button-127') | |
| shift | No | Shift key modifier | |
| alt | No | Alt/Option key modifier | |
| ctrl | No | Control key modifier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It explains the SGR protocol, coordinate conversion from 0-based to 1-based, and modifier optionality. It does not disclose any destructive or side effects, but for a mouse event tool this is reasonable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (EVENTS, BUTTONS, MODIFIERS, COORDINATES, EXAMPLES) and is front-loaded with the main purpose. It is somewhat lengthy but each part serves a purpose; very few redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with moderate complexity, no output schema, and no annotations, the description covers all necessary aspects: input parameters, protocol details, and usage examples. It lacks explicit return value info but that is acceptable for an action tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. The description adds significant value by explaining button code ranges (button-0 to button-127), listing common codes, clarifying modifier defaults, and providing coordinate conversion details. Examples further enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Send mouse events to a terminal using SGR mouse protocol.' It details events, buttons, modifiers, and coordinates, distinguishing it from siblings like mcpretentious-type or mcpretentious-read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples and explains when to use the tool for mouse interactions. However, it does not explicitly state when not to use it or mention alternatives among sibling tools, which slightly reduces clarity for an agent deciding between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcpretentious-openA
Opens a new terminal window and creates a tracked terminal session. Returns a terminal ID that can be used with other commands.
| Name | Required | Description | Default |
|---|---|---|---|
| columns | No | Initial width in columns (default: 80) | |
| rows | No | Initial height in rows (default: 24) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only mentions creating a tracked session and returning an ID, but hides details like side effects, resource usage, or lifecycle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and return value. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks details about session lifecycle, how to close, or constraints. For a creation tool with no output schema and no annotations, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already explains parameters with min, max, and default descriptions. Description adds no extra meaning beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it opens a new terminal window and creates a tracked session, returning a terminal ID. Distinguishes from sibling tools like close, info, list, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage before other terminal commands by mentioning the returned ID. Lacks explicit when-not or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcpretentious-readA
Reads text output from a terminal session. Returns the current screen contents. Use mcpretentious-screenshot for rich terminal info including colors, cursor position, and styles.
| Name | Required | Description | Default |
|---|---|---|---|
| terminalId | Yes | The terminal ID to read from | |
| lines | No | Number of lines to read from the bottom |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it 'returns current screen contents' but does not disclose whether reading is destructive, requires auth, or any rate limits. The disclosure is minimal beyond the tool's purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then usage guidance. No wasted words, efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters. The description covers the purpose and usage guidance. However, it doesn't describe the return format (e.g., plain text, array of lines), which would be helpful. Still mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of parameters with descriptions. The tool description does not add further meaning or usage details beyond what the schema provides, hence baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'reads' and the resource 'text output from a terminal session', and distinguishes itself from the sibling 'mcpretentious-screenshot' by specifying it returns plain text vs rich info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use the sibling tool for richer info, guiding the agent to choose the correct tool. It implies usage for plain text reading but does not state when not to use it or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcpretentious-resizeB
Resizes a terminal to the specified dimensions in columns × rows.
| Name | Required | Description | Default |
|---|---|---|---|
| terminalId | Yes | The terminal ID to resize | |
| columns | Yes | Number of columns (width in characters) | |
| rows | Yes | Number of rows (height in lines) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose all behavioral traits. However, it only says 'Resizes a terminal' without explaining side effects, instant effects, or what happens to existing content. No mention of required permissions or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It front-loads the action and resource, achieving maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple resize operation with clear parameters and no output schema, the description covers the basic action. However, it lacks usage context and behavioral details that would make it complete for an AI agent deciding when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes parameters. The description repeats 'columns × rows' but adds no new semantic meaning beyond formatting. Baseline 3 is appropriate as it does not contradict or subtract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: resizing a terminal to specified dimensions in columns × rows. The verb 'Resizes' and resource 'terminal' are specific, and the sibling tools indicate different actions (close, open, list), so this tool is well-distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like mcpretentious-open or mcpretentious-list. The description does not mention prerequisites, scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcpretentious-screenshotA
Takes a token-optimized screenshot of the terminal screen using a layered format that reduces token usage by 85-98%. Returns only the data layers you need (text, cursor, colors, styles). Supports viewport limiting to show just a region or area around cursor. Essential for inspecting TUI applications without hitting token limits.
| Name | Required | Description | Default |
|---|---|---|---|
| terminalId | Yes | The terminal ID to read from | |
| layers | No | Data layers to include. 'text' for content, 'cursor' for position, 'styles' for combined formatting, individual style layers, or color layers with palette. Default: ['text', 'cursor'] for minimal token usage | |
| region | No | Limit to specific viewport rectangle to reduce tokens | |
| aroundCursor | No | Show N lines around cursor (e.g., 5 shows 11 lines total). Great for reducing tokens when debugging at cursor position | |
| compact | No | Skip empty lines to further reduce token usage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral transparency. It explains the tool's token optimization (85-98% reduction), how it returns only requested data layers, and supports region-specific captures. It does not mention potential side effects or required permissions, but given the tool appears to be a read operation, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise at two sentences, front-loading the core action in the first sentence. It uses bullet-like structure in the second sentence (e.g., 'Supports viewport limiting...'). It could be slightly more structured, but it is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters including a nested object, and no output schema, the description should clarify the return format. It states 'returns only the data layers you need,' but doesn't specify the structure or how errors are handled. The description covers main use cases but lacks complete documentation for complex scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by contextualizing parameters: it explains that the layered format reduces tokens, viewport limiting and aroundCursor help reduce tokens, and compact skips empty lines. This clarifies the purpose beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool takes a token-optimized screenshot of the terminal screen using a layered format. It specifies the action ('takes'), the resource ('terminal screen'), and the key benefit ('reduces token usage by 85-98%'). This distinctively separates it from sibling tools like mcpretentious-read or mcpretentious-type, which handle different terminal interactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that the tool is 'essential for inspecting TUI applications without hitting token limits,' providing clear context for use. It also explains when to use features like viewport limiting or aroundCursor. However, it does not explicitly state when not to use this tool or compare it to alternatives, which would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcpretentious-typeA
Send text and keystrokes to a terminal. Always pass as array.
Examples: ["ls -la"], ["cd /path", {"key": "enter"}], ["Hello", 32, "World"], [{"key": "ctrl-c"}]
Supported keys: tab, shift-tab, enter, return, escape, esc, backspace, delete, up, down, right, left, home, end, pageup, pagedown, ctrl-a, ctrl-b, ctrl-c, ctrl-d, ctrl-e, ctrl-f, ctrl-g, ctrl-h, ctrl-i, ctrl-j, ctrl-k, ctrl-l, ctrl-m, ctrl-n, ctrl-o, ctrl-p, ctrl-q, ctrl-r, ctrl-s, ctrl-t, ctrl-u, ctrl-v, ctrl-w, ctrl-x, ctrl-y, ctrl-z, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, alt-a, alt-b, alt-c, alt-d, alt-e, alt-f, alt-g, alt-h, alt-i, alt-j, alt-k, alt-l, alt-m, alt-n, alt-o, alt-p, alt-q, alt-r, alt-s, alt-t, alt-u, alt-v, alt-w, alt-x, alt-y, alt-z, alt-shift-a, alt-shift-b, alt-shift-c, alt-shift-d, alt-shift-e, alt-shift-f, alt-shift-g, alt-shift-h, alt-shift-i, alt-shift-j, alt-shift-k, alt-shift-l, alt-shift-m, alt-shift-n, alt-shift-o, alt-shift-p, alt-shift-q, alt-shift-r, alt-shift-s, alt-shift-t, alt-shift-u, alt-shift-v, alt-shift-w, alt-shift-x, alt-shift-y, alt-shift-z, alt-0, alt-1, alt-2, alt-3, alt-4, alt-5, alt-6, alt-7, alt-8, alt-9, alt-tab, alt-enter, alt-space, alt-backspace, alt-left, alt-right, alt-up, alt-down, alt-home, alt-end, alt-pageup, alt-pagedown, alt-f1, alt-f2, alt-f3, alt-f4, alt-f5, alt-f6, alt-f7, alt-f8, alt-f9, alt-f10, alt-f11, alt-f12
| Name | Required | Description | Default |
|---|---|---|---|
| terminalId | Yes | ID of the terminal to send input to | |
| input | Yes | Array of text / key / ascii to send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the input format and supported keys, but lacks details on error handling or behavior on invalid input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, but the long list of keys makes it verbose. Could be more concise by referencing an external resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a typing tool with a complex input array and no output schema, the description covers the input format and supported keys well, providing sufficient detail for an agent to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. The description adds significant value beyond the schema through examples and a comprehensive list of supported keys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Send text and keystrokes to a terminal' with examples, which is specific and distinguishes from sibling tools like mouse or read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples and mentions 'Always pass as array', but does not explicitly state when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v1.3.0- First observed
mcpretentious-close - First observed
mcpretentious-info - First observed
mcpretentious-list - First observed
mcpretentious-mouse - First observed
mcpretentious-open - First observed
mcpretentious-read - First observed
mcpretentious-resize - First observed
mcpretentious-screenshot - First observed
mcpretentious-type
TDQS
Scored across 9 tools
Each tool targets a distinct action: close, info, list, mouse, open, read, resize, screenshot, type. There is no functional overlap; an agent can clearly distinguish between them.
Most tools use an imperative verb form (close, open, list, type, read, resize), but 'mcpretentious-mouse' is a noun rather than a verb, and 'info' is also a noun. This minor inconsistency prevents a top score.
With 9 tools covering open, close, list, info, type, read, resize, screenshot, and mouse input, the count is well-scoped for terminal session management. No tool feels redundant or missing.
The tool set covers the full lifecycle of terminal sessions: creation, destruction, listing, input (keyboard and mouse), output reading (plain and styled), resizing, and metadata retrieval. No obvious gaps for typical use.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Remote MCP server for AI.TV creators — delegate account operations to your AI agent over MCP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that gives AI assistants the ability to create, manage, and control terminal sessions through a safe, isolated tmux environment.1-
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to control the macOS Terminal.app using AppleScript and the zmx session manager. It allows agents to send keystrokes, type text, and capture screen output in real-time.-
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to control iTerm2 sessions, windows, tabs, and profiles using the official iTerm2 Python API. It includes a security model with session tagging and tiered permissions to ensure safe and controlled terminal interactions.401MIT
- AlicenseBqualityCmaintenanceA comprehensive MCP server for driving tmux sessions, windows, panes, sending keystrokes, and reading pane output locally or over SSH, enabling real-time collaborative pairing with AI.713MIT