Skip to main content
Glama

Read the text in an image (OCR)

read_image_text
Read-only

Extract text from an image URL via OCR, returning each text region with confidence, bounding box and polygon; supports Chinese, Japanese, English and other Latin-script text.

Instructions

OCR: read the text in an image. Give the image as a URL. Returns every text region with its text, confidence, bounding box and polygon. Reads Chinese (Simplified and Traditional), Japanese, English and other Latin-script text. One credit per image; an image whose long side is 2.5 times its short side or more is read in sections, one credit each.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "image_url": "<image_url>"
    },
    "name": "read_image_text"
  }
}

Input Schema

NameRequiredDescriptionDefault
languageNoauto (default) returns all the text; another value returns only the text in that language.
image_urlYesAn http(s) URL of a JPEG, PNG or WebP image.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.2.18

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint annotations, the description discloses the return fields, the supported script coverage, the credit cost per image, and a non-obvious behavior: images with a long side 2.5x the short side are sliced into sections with one credit each. That cost and segmentation detail is exactly the kind of context an agent cannot get from annotations.

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?

Four tight sentences, front-loaded with purpose, then output, then scope, then cost. Every sentence carries information, though the credit/segmentation sentence is dense enough that it could be split for readability.

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

Completeness5/5

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

There is no output schema, and the description compensates by listing the returned fields, plus input format, language coverage, and cost model. For a two-parameter read-only tool, nothing an agent needs in order to call it correctly is missing.

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 coverage is 100%, so the baseline is 3, but the description adds meaning to the language enum by naming the actual scripts read (Chinese Simplified/Traditional, Japanese, English, other Latin). It reinforces that image_url must be a URL but adds nothing new about format beyond the schema.

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 opens with a specific verb and resource ('OCR: read the text in an image') and states the return shape (text, confidence, bounding box, polygon), so the agent knows exactly what the tool produces. It does not explicitly separate itself from the sibling translate_image, so it falls just short of a 5.

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?

It gives concrete input guidance ('Give the image as a URL') and describes the language scope, which implies when the tool applies. However, it never states when to prefer translate_image or another sibling, nor any exclusions or failure conditions, so usage is implied rather than prescribed.

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