An AI says what it sees.
plain-sight wraps Florence-2 as an MCP server and a CLI: prose descriptions at three detail tiers, OCR, and exact-basename .txt caption sidecars for LoRA training sets. Deterministic against a pinned model revision, and every payload names the weights that produced it. No cloud, no telemetry, never trust_remote_code.
Install
pip install -e .
Preview
plain-sight batch ./dataset --dry-run
Dataset lane
plain-sight batch ./dataset --prefix "mcpt_style, "
Features
The describing sibling of ai-eyes — it narrates, ai-eyes measures.
Three detail tiers
Florence-2's native ladder: one sentence (low), a few sentences (medium), a full paragraph (high) — plus OCR for reading text off pixels.
The dataset lane
Exact basename pairing (img_0042.png → img_0042.txt), bare prefix+caption+suffix, atomic writes, and colliding stems refused outright rather than silently merged into one caption.
Reproducible, and provable
do_sample=false + beam search against a pinned model revision. Every payload carries the resolved revision, and --manifest records a whole run, so a caption set can be attributed to the weights that made it.
MIT end to end
The tool is MIT and the model is pinned to florence-community/Florence-2-large — MIT, loaded with native transformers classes. trust_remote_code is never used.
MCP + CLI, one engine
Five MCP tools for Claude (describe_image, describe_batch, read_text, sight_status, sight_selftest) and a five-command CLI share the same Florence2Engine.
Honest about what it cannot know
Captions can invent detail, and OCR cannot report the absence of text -- a blank image still returns a string. plain-sight qualifies both rather than hiding them, and pairs with ai-eyes-mcp (SigLIP2) when a claim needs measuring.
Usage
Install
git clone https://github.com/mcp-tool-shop-org/plain-sight
cd plain-sight
pip install -e . Describe + OCR
plain-sight describe hero.png --detail high
plain-sight ocr screenshot.png Caption a training set
plain-sight batch ./dataset \
--prefix "mcpt_style, " --detail high Claude Code (MCP)
{
"mcpServers": {
"plain-sight": { "command": "plain-sight-mcp" }
}
}