MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Data access / search

uxgen

Ecommerce conversion for coding agents: AOV bundles, cart, upsell, imagery, page audit.

Checks passed
11 / 22

3 failed · 8 not measured

Median response
1113 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
14

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Outdated check

Last connection measurement is over 24 hours old. Current availability is unknown.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
220
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 1113 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name uxgen.

  • Pass
    Lists tools

    tools/list returned 14 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 1113 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 1113 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Fail
    Parameters documented

    0 of 121 parameters have a description (0%). The bar is 80%.

  • Fail
    Safety hints

    14 tools set neither readOnlyHint nor destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-08-25T07:56:54.082782Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using uxgen

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http uxgen https://www.uxgen.ai/mcp

Capabilities

Tools 14

uxgen_ameliorer

⛔ NOT AVAILABLE ON THIS HOSTED SERVER — do not call it, it will refuse. WHAT IT DOES WHERE IT RUNS: it ADJUSTS THE CSS OF ONE SECTION — one to five scoped rules — and NEVER ADDS A SECTION. It is not the tool that adds a missing mechanic. WHY IT REFUSES HERE: its judge is a VISION MODEL and no vision key is configured, and its engine is not deployed on this server; a tool that "improves" a page without looking at it would be inventing its corrections. TO IMPROVE AN EXISTING PAGE: `uxgen_brief` in `improve` mode, then `uxgen_audit` with `conserver: true` — it names what to ADD and where — and `uxgen_piece` at the anchor. 🎯 THE ONLY EXTERNAL JUDGE IN THE PRODUCT, ~30 SECONDS BY DEFAULT. It is the only piece of the chain that says whether the page is BEAUTIFUL — uxgen_audit only says whether it is clean. At scope "pli" (THE DEFAULT) it judges the first screen at 390 px only: 2 to 3 vision calls, ~0.004 $. `portee: "page"` takes the whole page: ~50 calls, 20 to 40 minutes. HOW IT JUDGES: each section is captured ALONE and submitted to an external vision model that returns NO SCORE — what is wrong, what it costs, and the CSS gesture with its values. The gesture is applied, the section recaptured, and both images go back to the judge IN A RANDOMISED ORDER: if it does not pick the new one, THE GESTURE IS REVERTED. ⚠ LOOK AT THE before|after BOARDS it writes, with your image-reading tool, before you announce anything at all.

Discovered
uxgen_audit

MEASURES A PAGE FOR REAL, IN HEADLESS CHROME, ON THIS SERVER — five widths (360, 390, 768, 1100, 1440), the computed styles, the scroll, and a robot that CLICKS the buying path. Send `html` (the page content, as text) or `url` (a live page). It writes NOTHING anywhere: it returns named gaps, each with the selector and the gesture that closes it, and NO score to chase. ⏱ EXPECT 45 TO 65 SECONDS. Measured 25/08 on a 2 KB page: 47 s at five widths. This is not a hang — do not retry, and tell your user it is running. 🧷 `conserver: true` — THE AUDIT OF A PAGE YOU KEEP (default after a brief in `improve` mode). It returns only what can be ADDED (a missing mechanic, each with its ANCHOR: « after the buy box », « before the footer ») or FIXED in place (a dead link, an image without dimensions, an illegible text). The rebuild families — canon sequence, grounds, radii, header grid, typography, signature gesture, animations, page length — are set aside, and the report says how many and which. It never points you to a tool this server does not run: an absent part is added with `uxgen_piece` at its anchor. MEASURES the page and RETURNS NAMED GAPS. A real audit in headless Chrome at 360, 390, 768, 1100 and 1440 px, on a block (`blockId`), an HTML file (`path`) or a URL (`url`). It returns the profile it used and every gap with its SELECTOR, its WEIGHT and THE GESTURE that closes it, most expensive first. 🚨 AUDIT THE PAGE, NOT THE BLOCKS: colors, radii, breathing room and distance to the price only show up on the assembled page. 🚨 NO SCORE, NO THRESHOLD, NO GO-AHEAD, and that is deliberate: nothing to clear, nothing to push up. YOU are the one who decides to ship, after LOOKING at the screenshots. Fix by the GESTURE the gap names, never by pushing a number. The response stays under 10,000 characters and SAYS what it leaves out; the full report is written next to the page in `_bloom-audit/`.

Discovered
uxgen_brief

TWO MODES, AND `improve` IS THE DEFAULT WHENEVER THE MERCHANT ALREADY HAS A STORE. `mode: "improve"` — their page is KEPT: the theme is inherited (`uxgen_theme` with `heriteDe`), `uxgen_audit` runs in conservation (`conserver: true`) and returns only what can be ADDED at an anchor or FIXED in place, each addition is inserted with `uxgen_piece` at the anchor the audit names, and a per-section diff (kept / changed / added) is shown before `uxgen_publier`. There is no « write the page » step. `mode: "rebuild"` — the construction path below. THE RULE WHEN `mode` IS NOT GIVEN: improve when `idea` says a site EXISTS (« existing », « already have », « keep », « don't rebuild », « j'ai déjà », « my store is at <URL> »); rebuild when a NEW store is the request (« build / create my store », « a brand-new site », « I don't have a store yet ») or when asked for in those words (« rebuild », « from scratch »). A new-store request wins over the possessive: « build my store » = rebuild, « improve my store » = improve. The answer names the mode and the words that decided it. CALL THIS FIRST for any page or site you are about to build, before writing a single line. It takes the user's own sentence and returns (a) the full text of the design law, (b) the CONTRACT for that trade — what has to be present, and the objection each presence kills, (c) the commerce-kit verdict, which DECIDES which mechanics apply given the nature of the object, (d) the proposed theme, (e) the seven-step path. 🚨 IT RETURNS NO PAGE PLAN AND NO BLOCK IDS, deliberately: a default plan once produced the same page for five unrelated trades. Structure, composition and the graphic gesture are YOURS; the page is written by hand. Calling this tool after you have started coding is good for one thing only: surveying the damage.

Discovered
uxgen_catalogue

La vitrine. Sans argument : les rôles disponibles. Avec un rôle : les pièces de ce rôle. Ne servez-vous-en que si le client demande autre chose que ce que le squelette a posé.

Discovered
uxgen_demarrer

⚠️ REMOTE SERVER — THE RECIPE COMES BACK IN THE ANSWER, IT IS NOT WRITTEN TO YOUR DISK. Read it, fill it with your file editor, and pass it back to `uxgen_poser` as `recette`. Everything below is true of this tool; only the delivery differs. PREMIER GESTE, avant toute ligne de code : donnez la phrase du client telle quelle, sans rien lui demander de plus. Rend le squelette choisi, l’univers de couleur, et un gabarit de recette sur disque où il ne reste que des textes à remplacer.

Discovered
uxgen_image

THE MATERIAL OF THE PAGE — scene OR packshot. Start with `emploi` and `categorie`: two words, and the prompt is written to the codes of that sector (background, light, human presence, set density, a quiet zone measured for the headline). 🚨 IT DOES NOT ONLY DO PACKSHOTS: a free `prompt` + `cutout: false` produces THE SCENE (dining room, consulting room, workbench, shopfront) — the trades with no object to cut out need exactly that. `cutout: true` = the cut-out packshot chain. It writes the image to disk, cut out once, trimmed, framed to the ratio, in WebP, and returns the <img> tag with its real dimensions. LIGHTING IS GRADED AND MEASURED AUTOMATICALLY: do not write "soft light" or "cream background", you would switch back on what the chain switches off. The details of the grading, of the uses and of the categories are returned IN THE RESPONSE.

Discovered
uxgen_packshot

PUTS THE BRAND'S OWN LABEL ON A PRODUCT SHOT, and returns the produced image IN THIS RESPONSE — nothing is written to any disk. Send the photograph as `photoBase64` (raw base64, no `data:` prefix) or `photoUrl`. It checks the subject really is that product and REFUSES a dirty result rather than shipping it. COMPOSES THE CLIENT'S PRODUCT ONTO A REAL PHOTOGRAPH. It takes a studio photograph of a container with a BLANK WHITE label, detects the edges of that label at pixel level, and inlays the brand's label with a `multiply` blend: the drop shadow and the curve of the cylinder pass through the artwork, so the jar stays believable. THE FONT IS MANDATORY AND IT IS THE SITE'S FONT. No fallback — with no font, no brand or no ink, the tool REFUSES rather than printing something generic. 🚨 IT TAKES TWO CALLS. First call without `zone`: it detects, writes the proof image (magenta rectangle) and REFUSES, handing you the four numbers. You OPEN the proof. Second call with `zone`: it composes. Detection on its own mistakes a label for a blank screen or a tablecloth — composing without looking means printing the brand onto a scrap of tablecloth. 🚨 The label lives INSIDE the image, never on top of it: an HTML text overlay laid over the photo to fake a label is a named gap (V3, uxgen_audit).

Discovered
uxgen_piece

One part of the library, in the format your target wants: `format:"html"` (default) gives the self-contained HTML and the prompt that built it; `format:"liquid"` gives the SAME part as a Shopify theme section — {% schema %}, settings, presets — with the filename it goes under and the template entry to write. Give the id `uxgen_catalogue` showed you (CAPTCHA-01, PANIER-03...). Free accounts open 10 parts; a paid plan opens all 173. A locked part answers with a refusal that carries the checkout link: it is a decision, not an outage.

Discovered
uxgen_poser

⚠️ REMOTE SERVER — SEND THE FILLED RECIPE AS TEXT, GET THE ASSEMBLED PAGE AS TEXT. It has no access to your disk: you send `recette`, you receive the complete HTML and you write the file. Bank photographs come back as absolute URLs on https://www.uxgen.ai — the page works the moment you save it, nothing to download. Everything below is true of this tool; only the delivery differs. DEUXIÈME GESTE, après avoir rempli la recette rendue par uxgen_demarrer. Assemble la page et la contrôle. Rend le chemin de la page et les écarts : textes trop longs, clés introuvables, fragments figés, textes de démonstration restés. Rappelez-le autant de fois que vous corrigez un texte — une repose ne coûte rien et ne décompte rien. Ensuite : `uxgen_render`. ⏱ compte 15 à 20 secondes, c’est normal : il assemble, ouvre la page et la capture.

Discovered
uxgen_publier

THE LAST GATE BEFORE YOU ANNOUNCE IT IS DONE — and on this hosted server it PUBLISHES NOTHING: it returns the verdict and the CONTENT to write, and YOU write the file. Send `html`. It refuses a page that carries a third party's legal identity, an invented customer review, an invented activity figure, a hand-redrawn third-party logo, two different current prices for one product, or two different dark grounds. 🔴 IT NOW REQUIRES THE RENDER SEAL. Call `uxgen_render` on the EXACT html you are about to publish, OPEN the images, then pass its `rendu` field back here unchanged. Without it the page is REFUSED — until today the absence of render data DISARMED the checks instead of refusing, which is the opposite of a guard rail. A page assembled outside the chain (taken from the merchant site, hand-written) passes with a written `motifHorsChaine`: a written reason passes, silence does not. ⚠️ The seal proves the RENDER happened on this page, never that anyone LOOKED at it. A refusal is not a failure of the tool: it names the reason, and the content it returns is then a DRAFT — write it to a `.brouillon.html` with a noindex, never to the publishable path. CALL THIS BEFORE ANNOUNCING THAT IT IS DONE, on the page you have just written. It refuses to write the page to the publishable path if it carries a third party's legal identity, an invented customer review, an invented activity statistic, a THIRD-PARTY BRAND LOGO REDRAWN BY HAND, two different current prices for the same product, or two different dark grounds. A refusal destroys nothing: the draft goes to ".brouillon.html" with a noindex, and whatever already sat at the publishable path stays INTACT. 🛒 A MULTI-ITEM SHOP HAS TO BE DECLARED: as soon as the page carries the commerce configuration written by `uxgen_theme` (two real items or more), prices are counted PRODUCT BY PRODUCT. This is not an exemption: WITHIN one product, two current prices reject the page exactly as they would on a single-product page. With no configuration, the page is judged as single-product.

Discovered
uxgen_render

RENDERS YOUR PAGE AND GIVES YOU THE IMAGES BACK, in this response — nothing is written to any disk. Send `html` (the page content, as text) or `url`. You get the first screen and the full page at 390 and 1440 px, as real images you must OPEN and LOOK AT before you change anything. A page that was never looked at is the first cause of an ugly site. ⚠️ THE 8-FRAME SCROLL STRIP IS NOT RETURNED BY DEFAULT: measured at 698 KB for a text-only page, several MB for a real one. Ask for it with `bande: true` and it is served up to a hard weight cap, which the answer states. ⏱ Expect 10 to 25 seconds. MAKES THE PAGE VISIBLE. Call it as soon as the page is assembled, and after every visual fix, BEFORE the audit. It opens the page in headless Chrome (no server left running) and WRITES TO DISK: the first screen alone, the full page, and a strip of 8 frames captured during a scripted scroll, at 390 and 1440 px. It also returns what a screenshot cannot show: horizontal overflow per width, approximate LCP, transferred weight, images without dimensions. THE PATHS IT RETURNS MUST BE OPENED WITH YOUR IMAGE-READING TOOL: this tool does not judge for you, it hands you the view. Writing a page you never look at is the number one cause of ugly sites.

Discovered
uxgen_seo

Turns one seed keyword into an SEO PLAN built on live Google data: the keywords around it, their monthly traffic, their difficulty, who currently holds the top of each result page, and what to write to take it. It is a plan, not a report: every target comes back with the format Google is already rewarding on that query, read from the live result page rather than guessed. The search-data key lives on the uxgen server and never reaches you: you call this tool, the server calls the provider. Included from the Pack plan upwards, with a monthly allowance in dollars; one plan costs about 0.020 $ of it. When that allowance or the platform budget is spent, the refusal says so, says when it reopens, and carries `reessayable`: it is a decision, not an outage, and everything else on uxgen keeps working.

Discovered
uxgen_status

🚨 DO NOT CALL THIS TO GET YOUR BEARINGS: the path is returned by uxgen_brief, and this response is LONG (~5,500 tokens; "complet" makes it ~14,700). Two uses, and only two. (1) RESUME a build already started: with "projectDir" it reads bloom.json and returns the brand, the committed style, the images produced, the current step — the answer to "where were we?" without asking anything again. (2) DIAGNOSE a refusal: licence and tier, credits left, whether the image key is present, manifests in error. When a tool refuses to run, the cause is here. On a brand-new page, this call teaches you nothing.

Discovered
uxgen_theme

THE LOCKED GRAMMAR — call it right after `uxgen_brief` and BEFORE the first tag. Its CSS is pasted as is at the top of the page and is not retouched: that is what stops two dark grounds stacking. 🛒 THE COMMERCE KIT. Pass `commerce` and the kit is BUILT: you get back TWO VERSIONED URLS with their `integrity` — a `<link>` and a `<script>` to paste — plus the marking contract. The kit holds the buying path BY CONSTRUCTION (cart, drawer, quantity, total, free-shipping threshold, delivery date, a button that carries its amount) — it is the answer to a `uxgen_audit` that refused the transaction. ⚠️ WHY URLS AND NOT BYTES. The two files are the SAME for every merchant — measured, not assumed: the kit carries no merchant data at all, your configuration lives in your page's `<script data-ux-commerce>` tag. Sending them as text cost 400 KB (~100 000 tokens) of YOUR context, every time, for a constant. Pass `kit: true` to get the bytes anyway — for an offline page, or one that must not fetch anything at runtime. Turns a brand color and an adjective into a COMPLETE set of CSS variables: palette (3 roles + 2 derived), font pair, radii, shadows, rhythm, motion. Works in OKLCH, holds WCAG contrast, and corrects luminance when a pair fails. CALL IT RIGHT AFTER uxgen_brief AND BEFORE THE FIRST TAG, then run it again as soon as the client gives their real color. Its CSS is pasted AS IS at the top of the page and never touched up: that is what stops two dark grounds from stacking. ⚠️ YOU MUST PASS "color" OR "paletteId": "adjective" alone is REFUSED.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected1113 ms14