Skip to main content
Glama

ocr

Read-onlyIdempotent

Extract text from a screenshot of a target app using a local OCR backend. Returns normalized confidence, pixel boxes, and a short-lived ID for automation.

Instructions

Run a local OCR backend on a newly captured, privacy-filtered target screenshot. Returns normalized confidence 0..1, screenshot pixel boxes, and an opaque short-lived ocr_id.

Input Schema

NameRequiredDescriptionDefault
appYesApp name, Hyprland class/title, pid, or address:0x... selector.
regionNo
backendNoauto
timeoutNoLocal OCR timeout.
languageNo
coordinate_spaceNoCoordinate space. screenshot uses get_app_state pixels; window uses logical coordinates from the target window's top-left.screenshot
page_segmentation_modeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive safety. The description adds meaningful context beyond them: the capture is 'privacy-filtered', confidence is normalized 0..1, and the ocr_id is 'short-lived', which signals result caching/expiry behavior. It omits cost/privacy details and error behavior.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose then return shape, with zero filler. Every clause earns its place.

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?

With no output schema, the description usefully discloses the return values (confidence, pixel boxes, short-lived ocr_id), which is exactly the burden it must carry. The remaining gap is underexplained input parameters for a 7-param, nested-schema tool.

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

Parameters2/5

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

Schema description coverage is only 43% (app, timeout, coordinate_space are documented; region, backend, language, page_segmentation_mode are not), and the description says nothing about any of the seven parameters. It fully fails to compensate for the coverage gap.

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

Purpose4/5

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

The description gives a specific verb+resource: running a local OCR backend against a newly captured target screenshot, which is clearly distinct from the accessibility-based siblings like read_app_state. It does not explicitly name or contrast the nearest siblings (screenshot, get_screenshot), so it stops short of full differentiation.

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

Usage Guidelines3/5

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

Usage is implied - extract text from a captured screenshot via OCR - but there is no explicit when-to-use guidance or comparison against alternatives such as read_app_state or click_text. The agent must infer that this is the OCR path versus the accessibility-tree path.

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