Skip to main content
Glama

Why does this MCP App render blank?

mcp_liveness_check_apps
Read-only

Checks a remote MCP server's MCP Apps UI (SEP-1865 ui:// resources) from outside, with no credential and without calling any tool, and returns the first step that stops the view rendering, whose it is (server, or host for a known host bug with its issue URL), the fix, and the source (the spec, or the host's published page, with the date read).

It opens the server as an MCP Apps host would, then reads tools/list, resources/list and resources/read: each tool's link to its view (_meta.ui.resourceUri, or ChatGPT's openai/outputTemplate alias), the view's MIME type (text/html;profile=mcp-app) and HTML, what the HTML loads against the CSP a host builds from _meta.ui.csp, whether it sends ui/initialize, ui.domain for Claude and for ChatGPT, and what OpenAI's directory review checks (explicit tool annotations, descriptions, a public https endpoint, the domain-verification file). Verdicts per host — spec, claude, chatgpt, chatgpt-directory — are judged from each host's published pages; no host is run.

Use it when a user says an MCP App or ChatGPT app shows a blank or invisible frame, 'Resource not found: ui://', 'Invalid ui.domain format', or a submission error such as annotations_required. verdict is ok, at_risk, broken, no_ui, needs_sign_in or unreachable. The URL must be public https; checks are limited to 30 a minute per caller.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesThe server's Streamable HTTP endpoint, exactly as a user adds it to a host, e.g. `https://example.com/mcp` (Claude's ui.domain is a hash of this exact string). Public https only.
hostNoJudge for one host only: `spec` (any MCP Apps host), `claude` (claude.ai and Claude Desktop), `chatgpt`, or `chatgpt-directory` (OpenAI's review of a submitted app). Omit to get all four.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, openWorldHint, destructiveHint=false), and the description adds genuinely new behavioral context: no credential is needed, no tool is called, the server is opened as a host would, host-verdicts are judged from published pages rather than by running hosts, and there is an explicit limit of '30 a minute per caller'. The rate limit and the read-only method of inspection are exactly the operational facts an agent can't get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first sentence and the usage triggers are grouped cleanly. The middle paragraph enumerating internal probes (tools/list, resources/read, CSP, ui/initialize, directory-review checks) is longer than an agent needs strictly for selection, but it earns some of its length by signalling diagnostic depth.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on return-value explanation and does so fully: fault attribution, the fix, the source with the date read, and the enumerated verdict set (ok, at_risk, broken, no_ui, needs_sign_in, unreachable). Combined with annotations and a fully documented two-parameter schema, nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (the exact Streamable HTTP URL and the four-value host enum) are already documented in the schema, including the ui.domain hash note. The description adds little parameter-level meaning beyond restating 'must be public https' and listing the verdict vocabulary; baseline 3 is appropriate when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It names a specific verb and resource ('Checks a remote MCP server's MCP Apps UI (SEP-1865 ui:// resources)') and states exactly what it returns (the first failing render step, fault owner, fix, source). The scope — external, credential-free, no tool invocation — makes it unmistakably the Apps-UI renderer diagnostic rather than the generic liveness, auth, or drift siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies concrete trigger phrases ('blank or invisible frame', 'Resource not found: ui://', 'Invalid ui.domain format', 'annotations_required') that map user symptoms to this tool. It does not, however, name the sibling alternatives (e.g. mcp_liveness_check for plain reachability) or state when to prefer them, so routing against the family is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.