Skip to main content
Glama

enter_pin

Taps digits on a numeric PIN pad when standard text input fails. Supports both native hierarchy and custom-drawn pads via grid or explicit coordinates.

Instructions

Enter digits on a numeric PIN pad by tapping each key with a settle delay. Use when input_text does nothing because the pad renders its own key views. Visibility is PAD-SPECIFIC — run describe_ui on the pad screen first: a native-view pad (digits listed as Buttons with text) works with the default hierarchy lookup, no extra args. Only CANVAS-DRAWN pads (React Native / Skia SDK pads, whose keys are invisible to describe_ui) need 'grid' (the pad's bounding box; digits placed on a standard 3x4 dialpad) or 'coords' (explicit per-digit x,y) — read those bounds off a screenshot.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
gridNoOptional bounding box {x1,y1,x2,y2} of the PIN pad. Provide this for custom-drawn (React Native / Skia) pads whose keys are invisible to describe_ui: digits are placed on a standard 3x4 dialpad grid (1-2-3 / 4-5-6 / 7-8-9 / _-0-_) inside the box.
coordsNoOptional explicit per-digit tap points as 'digit:x,y' pairs separated by ';', e.g. '1:540,1600;2:640,1600'. Overrides grid and hierarchy for the digits given. Use when the pad is not a regular grid.
digitsYesThe digits to enter, e.g. "1234".
serialNoTarget device serial (adb -s). Optional when exactly one device is attached.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the key behavioral trait: 'with a settle delay' between taps. It explains the internal logic for detecting native vs. canvas-drawn pads and the corresponding parameter strategies. While it does not specify return values or error conditions, the behavioral description is thorough for a tap-input tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately lengthy but every sentence contributes necessary information. It is well-structured: opening with the core purpose and usage trigger, then progressively detailing the pad-type logic and parameter modes. While not ultra-condense, the length is justified by the complexity of the two-path behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, two modes, no output schema), the description provides a complete workflow: identify pad type via describe_ui, determine parameter requirements, read bounds from screenshot if needed. It does not mention return values or failure modes, but covers the essential user/agent actions for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with well-documented parameters. The description adds significant value beyond the schema by explaining the conditional logic: when to use 'grid' vs 'coords' vs default, and how to obtain the bounding box or coordinates (e.g., 'read those bounds off a screenshot'). This contextual guidance helps the agent decide parameter values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool enters digits on a numeric PIN pad by tapping each key with a settle delay. It explicitly distinguishes from sibling 'input_text' by specifying when to use this tool ('Use when input_text does nothing because the pad renders its own key views'). The verb 'enter', resource 'digits on a numeric PIN pad', and method 'tapping each key' combine for a specific, actionable purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: 'Use when input_text does nothing'. It also details how to choose between default, 'grid', and 'coords' parameter modes based on the pad type (native vs. canvas-drawn), instructing the agent to first run 'describe_ui' and potentially read bounds off a screenshot. This offers clear decision criteria and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/iksnerd/adb-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server