Stop taking screenshots, and stop trying to describe what you see. No more dragging images into the chat or copy-pasting. Ask your actual question and your assistant will know what you are referring to.
Give your AI assistant visibility. Claude, ChatGPT, Codex, Gemini, any of them. If it speaks MCP, it can see what you see.
What it looks like
Ask your assistant to take a look.
Now you can get your assistant's input without figuring out how to grab the correct context.
session.ts · npm run build
~/acme/web npm run build vite v5.4.2 building for production... transforming (312) src/checkout/session.ts Build failed in 4.21s [vite]: Rollup failed to resolve import "@/lib/money" from "src/checkout/session.ts". 12 | import { Cart } from '@/lib/cart' 13 | import { format } from '@/lib/money' 14 | import { taxFor } from '@/lib/tax' This is most likely unintended because it can break your application at runtime. ~/acme/web █
Claude Code
> I have a build failing in my terminal, can you take a look ● Calling desktop-vision-mcp… (ctrl+o to expand)
Your build is failing on one unresolved import, not on the 312 files it transformed. Line 13 of src/checkout/session.ts imports @/lib/money, and the two imports either side of it resolve fine, so the @ alias itself is working. The path is the problem, not the config. Check whether that file is actually at lib/money.ts, and whether its casing matches; this is the classic one that passes on a Mac and fails in CI.
github.com/acme/api/pull/482
Open retry the webhook · 2 files changed
src/webhooks/deliver.ts async function deliver(evt: Event) { let attempt = 0 - while (attempt < 3) { + while (attempt < MAX_RETRIES) { const res = await post(evt) if (res.ok) return res + await sleep(2 ** attempt * 1000) attempt++ } throw new DeliveryError(evt.id) } src/config.ts + export const MAX_RETRIES = 8
ChatGPT
Something is off about the code in a PR I am reviewing, can you help me pinpoint the issue?
desktop-vision-mcp · screenshot
Yes. The backoff is exponential and the ceiling moved from 3 to 8, so the final wait is 2^7, about 128 seconds, and the total run is over four minutes. That is fine in a worker and a problem if deliver is ever awaited inside a request handler. Also worth checking: the sleep runs after the last failed attempt too, so you pay the longest wait before throwing.
Q3 headcount plan
E6fx=SUM(B6:D6)
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Team | Jul | Aug | Sep | Q3 total |
| 2 | Engineering | 14 | 16 | 19 | 49 |
| 3 | Design | 3 | 3 | 4 | 10 |
| 4 | Sales | 8 | 9 | 11 | 28 |
| 5 | Support | 5 | 6 | 6 | 17 |
| 6 | Total | 30 | 34 | 40 | 96 |
| 7 | Budget | 104 |
Codex
> I'm looking at some figures and something does not add up, can you double check? ● Calling desktop-vision-mcp… (ctrl+o to expand)
No. The Q3 total row says 96, but the four team totals are 49, 10, 28 and 17, which come to 104. The monthly columns are consistent with the teams, so the error is in the total row itself, not the inputs. Worth noting the number it should be, 104, is also exactly your budget line, which is the kind of coincidence that makes a wrong cell look right.
localhost:3000/team
Our team
Claude Code
> The images on my website are not correctly aligned, help me figure out how to fix them ● Calling desktop-vision-mcp… (ctrl+o to expand)
The names are not on a shared baseline because the images are different heights and each card is sizing itself. Your grid is laying out the cards, but nothing inside them is constrained, so the caption starts wherever its own image ends. Give the image a fixed height with object-fit: cover, or make each card a grid with grid-template-rows: 1fr auto so the captions line up whatever the image does.
Draft
Subject Purchase order 4471, confirmation
Hi Elena,
Confirming we would like to procede with the order: 1,500 units of the XR-9 bracket at $12.40 each, for a total of $1,860.
Please invoice against PO 4471. We can recieve from the 22nd.
Thanks,
Gorka
Send
Gemini
I'm about to send an important email message, can you proof read it?
desktop-vision-mcp · screenshot
Do not send it yet. The total is wrong by a factor of ten: 1,500 units at $12.40 is $18,600, not $1,860. On a purchase order that is the kind of number a supplier will hold you to. Two spellings as well, procede should be proceed and recieve should be receive.
What it changes
You stop being the middleman
Right now you read the error, retype it, describe the layout, explain which tab you are on. Every one of those steps is a chance to leave out the thing that mattered. Ask instead, and the screen speaks for itself.
Fewer confidently wrong answers
Most bad answers are not reasoning failures, they are missing context. When the assistant can see the actual stack trace, the actual diff, the actual spreadsheet, it stops guessing at what you meant.
It works with every AI assistant
A plain MCP server, so it fits whichever assistant you already use and whichever you switch to next. Nothing about your setup has to change and there is no new app to live in. The tool appears where you already ask your questions.
Privacy
What it does and does not do.
It does
Capture a screen when your assistant asks
Show its state in the menu bar at all times
Require screen recording permission first
Stop completely when you stop it
It does not
Watch continuously or record video
Draw anything on your screen
Click, type or automate anything
Act on your machine in any way
Shut lid, stopped. Open eye, running. The same drawing in a light or dark menu bar, tinted by macOS, state is carried by shape, never by colour alone.
Setup
Setup lives inside the app.
01
A menu item copies the install instructions to your clipboard.
02
You paste them to your assistant, which does the install itself.
03
It runs a dry run and confirms everything works as expected.
Mon 15:41
DesktopVisionMCP 1.0.0
Stop
AI assistant instructions (copy)
About
Check for Updates…
Quit
One menu item is the whole setup. You never read the instructions, and after the dry run you never open the app again.
Stop explaining
your screen.