World Monitor
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.
Deterministic visual inspection for AI agents. Overlap, overflow, contrast, quality.
Pick the AI app you use, then copy the settings.
Passed 3/3 checks · Runs on your computer
First: which AI do you use?
Pick your app and the steps appear below.
Claude cannot connect Cornea, deterministic visual inspection yet
The maker has not listed install details in the MCP Registry yet
ChatGPT cannot connect Cornea, deterministic visual inspection yet
The maker has not listed install details in the MCP Registry yet
B · Others in Other that work with ChatGPT
Picked from the most used in the same category, only ones that connect by address with no key
Claude Code cannot connect Cornea, deterministic visual inspection yet
The maker has not listed install details in the MCP Registry yet
Cursor cannot connect Cornea, deterministic visual inspection yet
The maker has not listed install details in the MCP Registry yet
VS Code cannot connect Cornea, deterministic visual inspection yet
The maker has not listed install details in the MCP Registry yet
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
GooseLM StudioMsty StudioCherry StudioVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 16, 2026
The registry name was verified with the GitHub account AbduljabbarBXR, which owns the repo
Code last changed 2 months ago
Uses MIT
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Not checked: only npm and PyPI packages with a version can be checked
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
No reviews yet
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed 2 months ago, and the latest version (0.2.2) reached the registry 2 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Rust on your computer.
In the same category: World Monitor, openstatus, Oh My Posh Validator, Strata, Jitsu
Same category, other makers, commands already checked. Official ones first, then by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.
Manage monitors, status pages, incidents and maintenances in your openstatus workspace.
Validate oh-my-posh configurations and segment snippets against the official schema.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Manage Jitsu data pipelines: destinations, streams, connections, functions, live events.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Deterministic visual inspection for AI agents. The eyes a coding agent never had.
Cornea gives a coding agent that builds web pages a real way to *see* them. As a token-cheap, deterministic structural model it can reason over exactly, instead of megabytes of screenshots and raw DOM dumped into context.
An agent doesn't need a *photo* of a page. It needs to know is my layout broken, and how. Cornea computes an abstract *visual geometry model* of every element (box, position, z-order, computed styles) and derives inspection conclusions. overlap, overflow, contrast, quality. Then exposes them as native tools on three surfaces: CLI, MCP, and HTTP API.
One promise holds everything together: same input → byte-identical output. No Chromium, no sub-pixel variance, no server. A single ~1.4 MB binary.
# Build (Rust 1.98+, edition 2024)
cargo build --release
./target/release/cornea tests/fixtures/sample-bugs.html 360
Requires only
cargo. No browser, no Node, no system dependencies. Builds fine on a phone-class device.
Or install the `cornea` command from npm (no Rust toolchain needed):
npm install -g optrex # provides the cornea command
cornea --help
Take this page below. It looks fine as source. But it's hiding four layout bugs. Cornea finds every one.
<!-- tests/fixtures/sample-bugs.html (excerpt) -->
Card 1 Card 2 Card 3
Left overlap Right overlap ... Hard to read on white
Run it and Cornea reports the damage instantly:
$ ./target/release/cornea tests/fixtures/sample-bugs.html 360
{ "html_file": "tests/fixtures/sample-bugs.html", "viewport_w": 360.0, "element_count": 17, "est_tokens": 1068, // <-- entire page read for ~1k tokens "report": { "total_elements": 17, "visible_elements": 14, "overlaps": [ ... 7 collisions ... ], "overflows": [ ... 1 clipped ... ], "contrast": [ ... 2 AA failures ... ], "quality": { "score": 0.06, "label": "broken" } } }
Each finding is precise and actionable:
| Finding | Detail |
|---|---|
| Overlap | section.row ⇄ div.overlap-right, area 20000 px². The absolutely-positioned boxes cover the cards |
| Overflow | div.overflow-bad: right edge 600 exceeds viewport 360 → clipped |
| Contrast | black on blue: ratio 2.44:1. Fails WCAG AA (needs 4.5) |
| Contrast | #cccccc on white: ratio 1.61:1. Fails WCAG AA |
That is the value: hundreds of tokens, not hundreds of kilobytes, and a deterministic answer the agent can act on and re-verify.
Cornea is one engine, three doors. All three returns identical inspection JSON because they funnel through a single shared dispatch.
cornea <file.html | http(s)://url> [viewport_width] [viewport_height] [--js]
$ cornea page.html 360
{ "html_file": "page.html", "viewport_w": 360.0, "element_count": 42, "json_bytes": 8124, "est_tokens": 2193, "report": { "total_elements": 42, "visible_elements": 38, "overlaps": [], "overflows": [], "contrast": [], "quality": { "score": 1.0, "label": "good" } } }
cornea --serve
An agent calls layout.* tools directly; it passes the page source, or a live URL (see URL capture below), per call:
→ {"method":"tools/call","params":{"name":"layout.overlaps",
"arguments":{"html":" A ..." ,"width":360}}} ← {"id":1,"result":{"content":[{"text":"[{\"a_sel\":\"...div \u21c4 ...div\",\"area\":20000}]"}]}}
| Tool | Returns |
|---|---|
layout.inspect | Full visual model + report |
layout.overlaps | Elements whose boxes collide |
layout.overflow | Clipped / collapsed / off-screen |
layout.contrast | WCAG AA ratios for text elements |
layout.quality | 0..1 health score + issue list |
layout.fidelity | Which CSS features are exact vs approximated |
cornea --serve-http [addr] # default 127.0.0.1:8080
curl -s -X POST http://127.0.0.1:8080/inspect \
-H 'Content-Type: application/json' \ -d '{"html":" bady ","width":360}'
{"total_elements":1,"contrast":[{"selector":"...>p","fg":"#cccccc","bg":"#ffffff",
"ratio":1.61,"pass_aa":false}]}
| Route | Method | Returns |
|---|---|---|
/inspect | POST | Full report |
/overlaps | POST | Collisions |
/overflow | POST | Clipped / collapsed / off-screen |
/contrast | POST | WCAG ratios |
/quality | POST | Health score |
/fidelity | GET | Engine capabilities |
/health | GET | Liveness |
Every surface accepts a URL where the HTML would go. Cornea fetches the page, inlines its external stylesheets and external scripts (relative URLs resolved against the page), then inspects what a browser would actually show. That is the live coding session loop: run your dev server, point cornea at it, read the layout verdict.
cornea http://localhost:3000 390
{ "url": "http://localhost:3000", "width": 390, "height": 844 } // HTTP /inspect
{ "method": "tools/call", "params": { "name": "layout.quality",
"arguments": { "url": "http://localhost:3000", "width": 390 } } } // MCP
Honesty around capture:
height emulates a fixed viewport (screenshot frame, iframe, email) and enables below the fold clipping checks. Default 0 means an unbounded scrolling page. ┌─────────────────────────────────────┐
HTML + CSS ──► │ cornea (one binary) │ │ │ │ dom.rs html5ever ──► tree │ │ css.rs + inline │ │ │ │ layout.rs deterministic layout │ │ (block/inline/flex, │ │ box model, z-index) │ │ │ │ │ model.rs Visual Geometry Model │ │ │ │ │ inspect.rs overlap / overflow / │ │ contrast / quality │ │ │ │ │ rest.rs canonical dispatch │ └───────┬─────────────┬───────────────┘ │ │ ┌─────┴────┐ ┌────┴───────────────┐ │ CLI │ │ MCP (stdio) / HTTP│ │ cornea │ │ layout.* / REST │ └──────────┘ └────────────────────┘
Read the full technical spec: CORNEA-ARCHITECTURE.md
Cornea never silently fakes precision. layout.fidelity tells an agent exactly what it can trust, and every report carries its own warnings for sources the engine saw but did not apply (external stylesheets, external scripts, media queries, unresolved colors):
{
"exact": ["box model", "block flow", "inline text estimates", "flex row/column (no wrap)", "z-index", "visibility", "absolute/fixed left/top", "inline styles", "class/id/tag selectors", "WCAG contrast (hex, rgb, hsl, alpha)"], "approximate": ["text glyph width (not shaping)", "flex-grow/flex-basis distribution", "percentage widths", "overlap semantics ignore intentional stacking"], "deferred": ["grid (parsed as block flow)", "media queries", "border-radius", "external stylesheet when not captured", "complex selectors (combinators, pseudo)"], "js": { "engine": "boa", "phase": "A", "enabled": "opt-in via --js / js:true", "dom_shim": "static HTML mirrored in first; getElementById; innerHTML parses markup", "unsupported": ["async APIs", "event dispatch", "selector engine", "React/SPA mounting (Phase B)"] } }
Cornea can execute inline ` ` that builds its DOM via a minimal shim, then run the result through the same deterministic layout engine:
cornea page.html 360 --js # inline scripts build the DOM first
{ "html": "<p>…</p>", "width": 360, "js": true } // HTTP /inspect and MCP layout.*
document.getElementById, and innerHTML parses real markup into elements. Static content survives script runs.style.* assignments are serialized back to style="…" and participate in overlap/contrast checks.setTimeout, fetch, …) rather than hung. Any such use is surfaced in the report's js_notes, so determinism stays a guarantee. runs only when a capture layer (URL capture) inlined its body first.ROADMAP-JS.md.54 tests run clean with cargo test; CI enforces fmt, clippy `-D warnings`, release build, tests, and a CLI smoke test on every push.
$ cargo test
Running unittests src/lib.rs ... 36 passed // determinism, overlap, overflow, Running unittests src/main.rs ... 9 passed // contrast, inline flow, flex, Running tests/endpoints.rs ... 9 passed // nesting, empty input, MCP, CLI, JS, capture
layout.* is called over real stdio MCP.display:none, long text, flex row/col, inline wrapping.| Feature | Status |
|---|---|
| Block flow, box model (content/border-box) | exact |
| Inline text runs (horizontal, wrapping) | exact |
| Flex row / column (simplified, no wrap) | approximate |
| Absolute / fixed positioning (left/top) | exact |
z-index, visibility, display:none | exact |
.class / #id / tag selectors + inline styles | exact |
| WCAG contrast (hex, rgb, hsl, al