Skip to content
Slipstream agent · Workspace

Lens

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.

ScopeWhat it lets a run do
media.readRead a media record, its download link and its previews, and fetch the bytes.
search.readSearch the workspace’s code, by keyword and by meaning.
memory.readSearch memory, and read decisions and lessons.
memory.write.noteSave one note per run.
context.readRead the run’s context pack from the workspace.
context.feedbackMark the context items a result cited as helpful.
model.invokeCall 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.

  1. Sign in to ContextStream: the button below opens the specialist library on Lens.
  2. An owner or admin switches Lens on for the workspace.
  3. Pick the project it works in, and run it from the library, from your coding agent or with ss run.

How do I call Lens from Claude Code or Codex?

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):

curl -fsSL https://contextstream.io/scripts/mcp.sh | bash

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

FieldTypeWhat it is
media_idstring, requiredThe image, as a ContextStream media id. Inputs carry references, never bytes.
questionstringWhat you want to know about the image.
project_idstringSearch this project for related code.
save_notebooleanSave the analysis as a note that links to the image.
Documents

PDF

docs to PDF agent

PDF lays out a source the person names (a doc, a plan, notes or markdown) as a PDF and stores it in the workspace.

600 credits a runEvals 11/11v0.1.0
Workspace

Memory Gardener

workspace cleanup agent

The Memory Gardener finds duplicate or conflicting decisions and lessons and stale open items, and proposes merging, superseding or closing them.

400 credits a runEvals 12/12v0.1.0
Workspace

Plans & Tasks Keeper

plans and tasks status agent

Plans & Tasks Keeper answers one question about the status of the workspace's plans and tasks, citing their ids.

FreeEvals 106/106v0.1.0

Every Slipstream agent