MCP server · Claude Code
Your agent writes UI it can’t see.
So it guesses at layout. It can’t tell whether anything actually showed up on the screen. And it asks you whether it looks right. Ocular gives it sight — starting with your dev server.
from $2.50/mo · unmetered on localhost · cancel any time
One line in your MCP config, then sign in once.
Checkout
Delivering to United Kingdom · Est. delivery Sep 8–10
Delivery route
Contact
Shipping address
Payment
By placing this order you agree to the Terms of Sale and the Returns Policy.
Returns & exchanges
Free returns within 30 days, in the original packaging. Exchanges are processed as a refund and a new order.
One line to set up. Nothing to wait for.Your dev server and the open web, from the same connection.
The capture
Two readings of the same page
Every capture comes back twice. You get a picture of the page, and a list of everything on it — what you can see, what's scrolled out of view, and exactly where each thing sits.
localhost:3000 · 1440 × 900
Latency overview
Last 24 hours · all services · refreshed 40 seconds ago
Response time distribution
Slowest regions
| Region | p95 | Errors | Requests |
|---|---|---|---|
| eu-west-1 | 214 ms | 0.02% | 1,284,902 |
| us-east-1 | 188 ms | 0.01% | 3,940,117 |
| ap-south-1 | 402 ms | 0.14% | 612,455 |
| sa-east-1 | 365 ms | 0.04% | 208,730 |
Sampled at 1% · figures are illustrative and do not describe a real service.
element tree · 0 nodes
the picture stops at the fold · the tree doesn’t
Motion
Your agent sees it move
Animations, transitions, anything that moves when you scroll — they all come back as a strip of still pictures in one image. Your agent can see the whole sequence without needing video.

5 frames · one image · one request · captured by Ocular
Two paths
Both, from one connection
Your own dev server runs on your machine, so there's no daily limit on it. Pages on the open web use a daily allowance you can see. Your agent doesn't need to know which one it's about to use. A page captured recently comes straight back.
localhost:3000
unmetered
https://stripe.com/pricing
12 / 40 today
Most of the open web comes back fine. Some sites work hard to keep automated browsers out, and a request against one of those can still fail. When it does, you get a clear failure with a reason instead of a hang — and it costs half as much as a normal request, not the full amount.
Read-only
It can look. It can't act.
No clicking, no typing, no navigation. The boundary is the product, not a setting you could turn off.
What that removes is the risk of your agent doing something on a page. Read-only doesn’t make the page itself safe to read. Whatever Ocular captures still becomes part of what your agent sees — the same as anything else it reads from the web. And a page can contain text written to trick an agent that reads it. Read-only is a real promise about actions. It isn’t a promise about the words on a page.
In practice
What your agent looks at
Every one of these is a moment where the code compiles, the tests pass, and the only way to know is to look.
- Canvas, WebGL, and anything drawn instead of marked up
- A chart, a 3D scene, a map, a game view. The element tree can tell your agent a canvas is there. It can't tell your agent anything about what the canvas drew. There is no structure to read, only something to look at.
- A component that compiles but doesn't render
- The build is green, the test passes, and the screen is empty. Your agent looks at the page it just changed and finds out in the same turn, instead of asking you.
- An animation that's supposed to run
- A transition, a hover state, a scroll-driven effect. Your agent gets the sequence back as frames and can say whether it ran, and whether it ran the way you described it.
- Layout that breaks at one width
- The desktop view is fine and the 390px view is a stack of overlapping boxes. Your agent can look at both without you resizing anything or taking a screenshot.
- A page on the open web that your agent needs to read
- A component in someone else's docs, a pricing table you're matching, the reference your client sent as a link. Same connection as your dev server, no second tool, no handing the job back to you.
How it works
Two steps, then it's automatic
One line in your config and one sign-in. After that, Ocular comes up with every session. Your agent looks whenever it needs to. You never touch it again.
- 01
Add one line to your MCP config
The same block in Claude Code, Cursor, Windsurf, Cline, Zed. There's nothing client-specific in it.
- 02
Sign in once
One tab, one click, and it closes. You won't be asked again on this machine.
- →
Your agent connects. Ocular wakes.
Ocular comes up in the background the moment your session starts, and waits there. Nothing cold-starts when your agent first asks to look.
- →
Your agent decides when to look
You don't call a tool and you don't paste a screenshot. You just describe what you're building. Your agent calls Ocular on its own, whenever it needs to see the result.
- →
Your agent looks, then keeps building
Rendered pixels come back, plus the element tree behind them. Your agent reads both, changes the code, and looks again.
↻ every session, without you
Pricing
From $2.50 a month
Your own dev server is unmetered on every plan. It's your machine doing the work, so there's nothing for us to meter. The daily allowance is for the open web, where each capture costs us a real amount of money.
Basic
$2.50/mo
or $25/year
Unlimited captures of your own dev server
40 open-web requests a day
Motion capture on both
Pro
$20.00/mo
or $180/year
Everything in Basic
150 open-web requests a day
Deeper reach into pages that block automated browsers
A successful capture costs one request. One that comes back empty, after Ocular has tried everything, costs half. An error costs nothing.
Basic clears most of the open web, not all of it. If you mostly work against sites that work hard to keep automated browsers out, that’s what Pro is for. And if it’s mostly your own dev server, Basic’s cap will never come up.
- Does it slow my agent down?
- Ocular starts up the moment your agent connects, not when it first asks to look. So the slow first-time wait people worry about happens before you’d ever notice it. After that, capturing your own dev server happens right on your machine — nothing has to travel over the internet. Capturing a page on the open web takes as long as that page takes to load.
- I already have something that takes screenshots. What does this add?
- Reach, and not thinking about it. The same connection covers your dev server and pages on the open web. Your agent never has to hand the job back to you because the target was on the wrong side of a line. It comes up with the session rather than on the call that needs it, and it sits at ten-odd megabytes when nothing is happening. If what you have does all of that and you haven’t touched it in six months, you don’t need this.
- Which clients does it work with?
- Any MCP client. Claude Code, Cursor, Windsurf, Cline, Zed, Claude Desktop — it's one line in the MCP config and there's nothing client-specific in it. If your client speaks MCP, it works.
- What happens when a site can't be reached?
- You get a failure with a reason: the site blocked automated access, or the site itself was down. Those are different problems. Ocular tells your agent which one it hit, so your agent can decide whether retrying is worth anything. It never hangs, and it never quietly returns a blank page as if it worked. Your own dev server doesn’t fail this way. Nothing there is trying to block you.
- Is this safe?
- Ocular cannot act on your browser. Neither you nor a page it looks at can make it click, type, or navigate. That is a real promise, and it is the one worth making. Here is what it isn’t: whatever Ocular captures still reaches your agent, the same as anything else pulled from the web. And a page can contain text written to trick an agent that reads it. That risk exists with any tool that reads the web. Read-only doesn’t remove it.
- Is something running on my machine all the time?
- Yes, and it is meant to be dull. Ten to fifteen megabytes, no window, no dock icon. The moment your agent connects, it starts a browser. After about half an hour of nothing happening, that browser shuts down, so what’s left sitting there between sessions is small. It only accepts connections from your own computer, never from outside, so you won’t see a firewall prompt. You will find it in Activity Monitor if you go looking. That’s the honest answer, and it’s why the idle number is the one worth quoting.
- What about pages I have to be logged into?
- On your own machine, that’s coming. You’ll sign into a site once, in Ocular’s own browser profile, and the session stays on your device. Ocular never receives a password and never stores a credential. On the open web, Ocular doesn’t do this, and it isn’t planned. Moving a session off the device where it was created is always a worse idea, not a temporary one — and browsers are already shutting that door anyway.
- Who built this?
- One developer. It does one narrow thing on purpose. If something is broken or missing, there is exactly one person to tell, and he reads it.
Give your agent eyes.
One line in your MCP config, then sign in once. There’s no API key to copy, and none to leak.
from $2.50/mo · unmetered on localhost · cancel any time