Skip to content

IrisImage facts with pixel-level proof.

Dimensions, format, and metadata by default. Local Tesseract OCR only when you ask for it.

Iris
The difference

A screenshot is not a paragraph.
Measured pixels are.

Iris — image facts with pixel-level proof. Dimensions, format, and metadata by default; local Tesseract OCR only when requested. There is no generative vision model on this path.

What a guess says

A caption of the screenshot, with no width, no hash, and no box around the words.

What Iris returns

dimensions and format on every read · OCR lines {text, bbox, confidence} only when requested · a gap when Tesseract is missing.

One image. OCR stays off until you ask. ​

json
{ "path": "/absolute/path/to/screenshot.png" }
json
{
  "path": "/absolute/path/to/screenshot.png",
  "include_ocr": true,
  "ocr_languages": ["eng"]
}

The first call is fast. The second runs local Tesseract. include_ocr: false wins over profile: "quality". PNG bytes for a crop are returned only when include_region_image is true.

How it works

Three steps from a file to a citation

Step 1

Add it to your agent

One npx line. A stdio MCP server starts for Claude, Cursor, VS Code, Codex, or any other MCP client. No API key.

Step 2

Read geometry first

image_probe returns format, dimensions, and a hash, and it never runs OCR. read_image returns dimensions, format, and metadata until you set include_ocr or profile to quality.

Step 3

Cite the box

Use the path, the hash, and the pixel bounds. If OCR was not requested, or Tesseract is missing, do not invent the text.

MIT licensed · geometry by default, OCR when requested · these docs load no remote assets