A screenshot and image explainer agent for Claude Code, Codex and Cursor
Lens explains an image a person shared: what it shows, the text in it, what in their workspace it relates to, and what to do next, with citations. A run costs 400 credits, charged only when the run succeeds.
Or use it on slipstream.contextstream.io, signed in with your ContextStream account. Version 0.2.0 · Updated
What does Lens do?
Reads an image you shared and ties it to your workspace: the text in it, related code, docs, decisions and lessons, and what to do next, with citations.
What it declines
A task like one of these is declined with a reason, and a declined run is free:
Making documents, PDFs, slides or new images from an image.
Reading media that is not an image, such as PDFs, audio or video.
Answering questions that are not about the image.
Browsing the web, or changing anything in the workspace beyond one optional note.
What does a real run of Lens look like?
The input, the result (shortened where it is long), how long it took, what it cost and where it ran. Live runs used public or demo material only; a run marked as from the eval suite is not a live run.
Live runs fail at the moment: the demo run on 2026-10-27 timed out waiting for the model (model_timeout), and a failed run costs nothing. Until that is fixed, the example here comes from the agent's eval suite.
Live attempts that failed (no charge): task 22ab56c3-c8a9-44f5-951d-42281c75d5f9, 2026-10-27 17:25 UTC, model_timeout.
From its eval suite, not a live run
A screenshot of a failing test (eval case)
Version
0.2.0
Outcome
succeeded
Ran
2026-10-27 17:28 UTC
Took
Not timed (fakes)
Cost
No charge (offline)
The agent's offline eval suite: its real program, against a fake ContextStream, a scripted vision reply and fixtures, with no network. Not a live run; the image in the fixture is a placeholder, so it is not shown.
What it ran on
evals/lens/cases.jsonl in the Slipstream repository
Input
{
"media_id": "0e0e0e0e-0000-4000-8000-000000000003",
"question": "Which test is failing and why?"
}
Result
The token refresh test fails with a 401.
What the image is
terminal: The token refresh test fails with a 401.
Text read from the image
FAIL test/auth.test.ts > refreshes tokens
Expected 200, received 401
Answer
test/auth.test.ts, refreshes tokens, gets 401 where it expects 200.
Related in the workspace
test/auth.test.ts:12: Relates to what the image shows.
Next steps
Check the refresh token's expiry.
Checks: 4 of 4 passed
image_read: 68 characters of text and 2 entities.
workspace_lookups: 6 of 6 lookups answered; 1 items found.
citations: Every related item is one that was found in the workspace.
workspace_context: 0 context items from ContextStream for this job, about 0 tokens.
Eval case
evals/lens/cases.jsonl, terminal-test-failure
Depot run
lh9rrpq6ff
What does Lens cost?
Lens costs 400 ContextStream credits a run, charged only when the run succeeds; a declined, failed, cancelled or timed-out run costs nothing. Credits come with every plan: Starter is free with 10,000 a month (25 runs of Lens, if spent on nothing else), and Pro is $19 a month with 25,000.
Which tools does Lens work with?
Claude Code, Codex, Cursor and other MCP clients: ContextStream's MCP gives them a slipstream tool that finds, runs and follows Lens. It also runs from a terminal or an agent's shell with ss run lens, and from the ContextStream web app.
Claude Code, Codex, Cursor and other MCP clients: connect ContextStream's MCP once (setup for each editor), then ask your agent to hand the job to Lens.
A terminal or an agent's shell:ss run lens, installed with ContextStream's command line.
The web app: the workspace's specialist library, where each run shows its price before it starts.
What access does Lens need?
Lens gets a short-lived token for one workspace, limited to 7 scopes: Reads your media, Searches code, Reads memory, Can save a note, Reads context, Marks cited context and Models via ContextStream. It works in one project, and only for that run.
Model agent. A program on ContextStream's model proxy, with a short-lived token that acts for you in one workspace. It is stopped after 2 min.
Scope
What it lets a run do
media.read
Read a media record, its download link and its previews, and fetch the bytes.
search.read
Search the workspace’s code, by keyword and by meaning.
memory.read
Search memory, and read decisions and lessons.
memory.write.note
Save one note per run.
context.read
Read the run’s context pack from the workspace.
context.feedback
Mark the context items a result cited as helpful.
model.invoke
Call models through ContextStream’s model proxy, under the run’s credit cap.
How do I turn Lens on?
An owner or admin of your ContextStream workspace turns Lens on in the specialist library of the web app. Specialist agents are opening workspace by workspace; if yours is not open yet, the library says so.
Sign in to ContextStream: the button below opens the specialist library on Lens.
An owner or admin switches Lens on for the workspace.
Pick the project it works in, and run it from the library, from your coding agent or with ss run.
Ask your coding agent to hand the job to Lens, or call it yourself: ss run lens in a terminal, or slipstream(action="run", agent="lens", input={...}) over MCP. A priced run starts only once its price is accepted.
Connect ContextStream's MCP (it also writes each editor's connection):
A screenshot of a stack trace: Lens reads it, finds the failing code, and the decisions and lessons about it. Over MCP:
slipstream(action="run", agent="lens", input={"media_id":"00000000-0000-4000-8000-000000000001","question":"Why is the API failing?"}, accepted_price_credits=400)
In a terminal (curl -fsSL https://contextstream.io/cs/install.sh | sh installs ss):
ss run lens media_id=00000000-0000-4000-8000-000000000001 question='Why is the API failing?'
Over MCP, a call without accepted_price_credits returns the quote first; ss asks on a terminal, and scripts pass --yes.
Input
Field
Type
What it is
media_id
string, required
The image, as a ContextStream media id. Inputs carry references, never bytes.
question
string
What you want to know about the image.
project_id
string
Search this project for related code.
save_note
boolean
Save the analysis as a note that links to the image.