plate
Resolves visual nouns against Google Fonts, returning font licences, sizes, and load snippets so agents can use real typography in their projects.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@platecapture the site at localhost:5173 and tell me what is wrong with the hierarchy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Give your agent a clear view of what it builds. Plate captures the running project, returns the actual image, and supplies asset references and source checks for the next revision.
Connect it to Claude Code, Codex or Cursor over MCP. Your existing agent does the work; Plate provides the tools and keeps captures on your computer.
Built with Plate Pro
Night Pitch — a playable floodlit arena, keyboard and on-screen touch controls, real stadium turf and a rigged character. Its complete implementation is included in Plate Pro. Play it
These are demonstrations from the Plate example set, not benchmarks, and not something the free Starter produces for you. The Starter gives your agent the evidence loop and the material; Pro adds the systems and worked implementations behind these examples.
Related MCP server: RenderProof
Install
Install into an isolated virtual environment; your agent will be pointed at that interpreter.
git clone https://github.com/ohad6k/plate.git
cd plate
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
python -m pip install .
python -m plate_toolkit doctorPython 3.11 or newer. For screenshots, add python -m pip install playwright and python -m playwright install chromium in the same environment.
Connect your agent
Print the snippet for your client and merge it into that client's config. The command only prints; it never edits your files.
python -m plate_toolkit config claude # or codex, or cursorClaude Code (.mcp.json) and Cursor (.cursor/mcp.json):
{
"mcpServers": {
"plate": {
"command": "/path/to/plate/.venv/bin/python",
"args": ["-m", "plate_toolkit", "mcp"]
}
}
}Codex (~/.codex/config.toml):
[mcp_servers.plate]
command = "/path/to/plate/.venv/bin/python"
args = ["-m", "plate_toolkit", "mcp"]The printed snippet carries the absolute path of the interpreter you installed into, so generate it in the environment your agent actually runs in. Restart the client and the ten tools are connected.
Three things to ask for
Look at what it just built.
Serve the site on http://localhost:5173, capture it with Plate at 1440x900 and again at 390x844, and tell me what is wrong with the hierarchy.
plate_capture opens an isolated Chromium with none of your logged-in sessions, waits for fonts and readiness, and returns a real image plus overflow, missing images and page errors. It asks for reduced motion by default so two captures are comparable; pass reduced_motion: false when you need an animated state. plate_inspect does the same for a screenshot you already have.
Load real material instead of drawing it.
Brief a night stadium scene, resolve the nouns with Plate, then read plate_kit stadium and plate_stack three-r128 and wire the HDRI, turf and rigged character in.
plate_resolve looks each visual noun up in its supported account-free sources — Poly Haven, the Quaternius animation library and Google Fonts — and returns the licence, size and a load snippet. Anything those sources cannot honestly supply, such as a face, a photograph or a brand mark, comes back resolved: false with the reason instead of a plausible substitute.
Find out why it looks generated.
Run plate_check on index.html, fix the three highest-weighted tells, capture before and after, and build the comparison with plate_pair.
plate_check reads the source and counts primitives against loaded assets, gradient heroes, emoji headings, pill buttons, purple by hue, a centred column under a nav, missing type and three.js with no post-processing. It reports what it cannot see rather than scoring the picture.
The ten free tools
plate_brief · plate_catalog · plate_resolve · plate_kit · plate_stack · plate_check · plate_pair · plate_capture · plate_inspect · plate_license
Arguments, limits and protocol notes are in docs/TOOLS.md. Two ready-to-load kits ship with the repository, each asset byte-identical to its upstream original with KIT.md and LICENSES.md next to the files: stadium (rigged humanoid with 46 clips, night HDRI, turf, concrete) and product-card (studio HDRI, hero object script).
Starter and Pro
Starter (this repository) | Pro | |
MCP server, CLI and agent skill | Yes | Yes |
Free tools | All ten | All ten |
Asset kits with licences |
| Same two |
Design systems | — | Four: editorial, product, software, data |
Worked implementations with real previews | — | Included, with one-call project assembly into a new folder |
Project contract and before/after review record | — | Included |
Studio, the local project workbench | — | Included in Pro, installed by the Pro distribution |
Online library and private saved briefs | — | Included |
Licence | MIT source, free | One-time individual licence |
Pro is a separate distribution with its own installer, published on the Plate site. The free tools in this repository work without a purchase.
Both distributions install as plate-toolkit at the same version, so pip will not replace one with the other on its own:
python -m pip install --force-reinstall <the Pro wheel>That swaps the installed package only. Your Plate home directory — ~/.plate by default, or wherever PLATE_HOME points — is never touched by an install, so captures, cache and any saved work survive the upgrade.
What Plate does not do
It does not host a model, generate images or rank designs. plate_check reads source, never pixels: its score finds known tells and is not a rating — do not optimize against it and do not present it as proof that one design beats another. A capture is one still frame and says nothing about timing or how motion reads over its length. The example pages above are selected demonstrations, not controlled experiments. Resolved assets come from third-party sources whose terms you should read before shipping.
Docs and community
Quickstart · Install · Tools · Agent skill · Contributing · Security
Bugs and feature requests belong in GitHub issues. Anything with a security impact goes through private reporting as described in SECURITY.md.
Licence
MIT, see LICENSE. Kit assets keep their own licences, including CC0 dedications and font licences; each kit's KIT.md and LICENSES.md record the source, size and terms per file, and those files travel with the assets.
Available Tools
10 toolsplate_briefA
Create a structured design starting point from a prompt, domain, style and constraints. Deterministic templates, not image generation or visual analysis. Returns hierarchy, candidate visual nouns, next tool calls and verification criteria.
| Name | Required | Description | Default |
|---|---|---|---|
| nouns | No | ||
| style | No | ||
| domain | No | ||
| prompt | Yes | ||
| constraints | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden. It discloses deterministic template-based behavior, explicitly rules out image generation and visual analysis, and lists the output categories, giving the agent a solid understanding of what will and will not happen.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, each adding distinct value: the core action, the behavioral boundary, and the expected outputs. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what the tool produces reasonably well given there is no output schema, but it leaves parameter semantics and selection criteria under-specified. It is adequate for a minimum viable call using only the required prompt, but weaker for correctly using optional fields like nouns and constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only repeats parameter names (prompt, domain, style, constraints) without explaining their meaning, formats, or acceptable values. The 'nouns' parameter is not mentioned at all, and no guidance is given for constraints or the domain enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Create a structured design starting point' and explicitly states what it returns. It also distinguishes itself from image generation and visual analysis, which helps separate it from visually-oriented siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'starting point' implies this tool is used early in the design workflow, and 'next tool calls' hints at follow-up actions. However, it does not explicitly identify siblings as alternatives or state when this tool should be chosen over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_captureA
Capture a running local website with an isolated Chromium browser. Returns an actual MCP image plus overflow, image loading and page error evidence. No authenticated sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| width | No | ||
| height | No | ||
| wait_ms | No | ||
| reduced_motion | No | Ask the page for reduced motion. Default true. Pass false to capture an animated state; a still frame still says nothing about timing, easing or how the motion reads over time. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses meaningful behavior: an isolated Chromium browser, return of an actual MCP image plus overflow/image-loading/page-error evidence, and no authenticated sessions. It does not mention failure modes or rate limits, but it covers the most important behavioral traits for this kind of tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the primary action and scope, with each sentence adding a distinct piece of useful information: what it captures, what it returns, and a key limitation. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should clearly explain return values and parameter semantics. It mentions the return evidence but only vaguely ('overflow, image loading and page error evidence'), and it leaves width/height/wait_ms meaning to the schema. It is adequate for a simple capture tool but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, and the tool description does not explain url, width, height, or wait_ms. Saying 'Capture a running local website' only loosely implies the url parameter. The schema provides ranges but not semantic meaning, and the description fails to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete action ('Capture') and a specific resource ('a running local website') with an isolated Chromium browser, and adds what it returns (MCP image plus evidence). It is clear and unique among the plate_* siblings, though it does not explicitly contrast itself with any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use this for a running local website that needs an isolated-browser capture, and it explicitly warns 'No authenticated sessions,' which functions as a when-not constraint. It does not name alternative sibling tools, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_catalogA
Search locally available finishing stacks, kits, paid-library presets and recipes. Reports missing or invalid library state honestly; no network or model call.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| query | No | ||
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it does a reasonably good job: it states the tool is local-only, makes no network or model call, and honestly reports missing or invalid library state. It does not disclose output format or detailed error behavior, but the honesty guarantee is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy: it front-loads the search action and resource, then adds key caveats about local behavior and reporting. Every sentence earns its place without wasting token budget.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Core purpose, local-only behavior, and honest state reporting are covered, which is enough to avoid catastrophic misuse. However, there is no output schema, so the missing return-value description is a notable gap, and parameter usage and sibling alternatives are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate for the four optional parameters. It partially maps to the kind enum by mentioning stacks, kits, presets, and recipes, but it says nothing about query, limit, or domain and does not explain how filters combine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a search operation over locally available finishing stacks, kits, presets, and recipes, which conveys the core purpose. It also hints at differentiation through 'locally available' and 'no network or model call', but it does not explicitly distinguish itself from sibling tools like plate_inspect or plate_check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for searching local library contents and notes that it makes no network or model calls, which gives useful selection context. However, it never explicitly states when to use this tool over alternatives or when not to use it, leaving routing largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_checkA
The tell checker. Run it on the output, never on the prompt. Given an .html it counts primitives against loaded assets and flags the web tells: gradient hero backgrounds, emoji in headings, pill buttons, purple, a centred column under a nav, no font loaded, three.js with no post-processing. Given a .png it reports size and mean luminance and flags a dead frame. It says unknown where it cannot tell.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to an .html file or a .png/.jpg frame. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does this well: it discloses what counts are performed, the specific tells that get flagged, what is reported for PNGs, and the unknown fallback behavior. It does not describe the exact output format or whether any state changes occur, but for a checker tool the main behaviors are clearly surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the critical usage warning, and uses a clean conditional structure for HTML versus PNG inputs. Every sentence adds operational value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives enough context for the agent to select and invoke the tool correctly: it covers both input branches, enumerates the tells, and states the unknown fallback. However, with no output schema, the return format is unspecified, and the description only mentions .png while the schema also allows .jpg, leaving a small but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers the single path parameter 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema by clarifying that the path must point to an output file, not a prompt, and that .html and .png are the relevant file types. It does not fully mention the schema's .jpg allowance, but the added guidance still improves the agent's understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: it checks output artifacts (.html or .png) for web tells and dead frames. It is distinctive enough to be understood, but it does not explicitly differentiate itself from siblings like plate_inspect, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction 'Run it on the output, never on the prompt' provides explicit context for when this tool should be used, and it also specifies the accepted input types (.html and .png). It does not name alternative tools or give explicit when-not-to-use conditions beyond 'never on the prompt', so it is clear but not fully exclusionary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_inspectB
Return an actual local screenshot as an MCP image block for the agent to visually inspect, plus objective image facts.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose a key trait: it returns a real local screenshot as an image block plus objective facts, not a summary or placeholder. However, it does not state whether the operation is read-only, whether it can access arbitrary local files, or what sort of side effects or permissions are involved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler; the most important deliverable (the screenshot image block) is front-loaded before the secondary facts payload. It earns its length, though it relies on other dimensions for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter, no output schema, and no annotations, the description leaves significant gaps: what 'path' means, what 'objective image facts' are, and how the returned image block is structured. The agent would need additional context to invoke the tool correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'path', has zero schema description and the description never explains what path should point to (a file, directory, or screenshot source). Because schema coverage is 0%, the description needed to compensate but did not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Return'), a concrete deliverable (a local screenshot as an MCP image block), and an additional payload (objective image facts), so the agent can tell what the tool produces. It does not explicitly differentiate from sibling tools such as plate_capture, so it falls just short of full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers only a vague purpose ('for the agent to visually inspect') and gives no conditions for when to choose plate_inspect over the many plate_* siblings. No when-not-to-use or alternative tool guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_kitA
The manifest for a local Plate kit: every file with its size, licence and local path, the exact upstream download URLs, how to load it, and the gotchas that cost hours. Call with no name to list the kits.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Kit name, for example 'stadium' or 'product-card'. Omit to list what is available. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It is rich in this regard, spelling out exactly what kind of information the manifest exposes and noting the no-name listing behavior. It does not mention side effects, permissions, or failure modes, but nothing in the text suggests destructive behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it first states the core resource and contents, then gives the key usage variant. Every sentence adds value and there is no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, this description gives sufficient context for an agent to know what it returns, what its scope is, and how to invoke the listing variant. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents the optional name parameter and the omit-to-list behavior. The description reinforces this by saying 'Call with no name to list the kits,' but adds little meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as a local Plate kit manifest and enumerates its contents (sizes, licenses, local paths, upstream URLs, loading instructions, gotchas), plus the no-name call to list kits. It lacks an explicit verb like 'retrieves' or 'returns', but the usage instruction makes the operation clear and it is distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear operational instruction: call with no name to list kits. However, it does not explicitly state when to choose this tool over siblings such as plate_license, plate_catalog, or plate_inspect, or provide exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_licenseA
Report local Plate activation status without exposing the key. The Starter reports an unactivated install honestly.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does a solid job by disclosing two meaningful behaviors: it does not expose the activation key, and it reports an unactivated Starter install honestly. 'Report' also implies a read-only operation. It stops short of describing the output format or possible status values, but it provides more transparency than most simple status tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded, with the core action and object in the first sentence. The second sentence adds a valuable behavioral guarantee without unnecessary detail. Every word contributes to agent understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter tool, the description is mostly sufficient: the agent knows what is reported and a key edge-case behavior. However, there is no output schema and the description does not describe the return format or possible status values, leaving interpretation of the result open. The term 'Starter' is also unexplained, which may confuse agents unfamiliar with Plate editions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema already covers the empty input structure with 100% coverage, so no parameter documentation is needed. The description appropriately focuses on behavior rather than repeating schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Report', and a clear object, 'local Plate activation status', which tells the agent exactly what operation is performed. It also distinguishes itself from the sibling tools by focusing on activation status rather than resolution, kits, checks, pairing, or inspection. The extra note about not exposing the key reinforces the tool's specific role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied clearly: use this tool when you need the local activation status of Plate. However, the description does not explicitly mention alternatives, when not to use it, or how it relates to sibling tools like plate_check or plate_inspect, leaving some routing decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_pairB
Composite two frames into the before/after image the product ships everywhere: stacked vertically on black, a label above each, nothing else on the image.
| Name | Required | Description | Default |
|---|---|---|---|
| out | Yes | Path to write. .jpg or .png. | |
| after | Yes | Path to the packed frame. | |
| before | Yes | Path to the naked frame. | |
| labels | No | The two labels. Defaults to ['Before:', 'After:']. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does disclose the key output behavior: vertical stacking on black, labels above each frame, and a clean image. It does not mention side effects like overwriting, failure behavior, or label defaults, though the schema covers defaults and file extensions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence contains the operation, output purpose, layout, background, labels, and exclusion of extra content with no filler. The core verb and result are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple compositing operation, the description covers the important visual/output behavior while the schema covers paths, required fields, file extensions, and label defaults. It could be slightly richer on what happens when the tool runs, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description reinforces the roles of before/after and labels via 'before/after image' and 'a label above each', but it adds little beyond what the schema already names and describes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Composite') and resource ('two frames into the before/after image'), and adds concrete visual detail (stacked vertically, black, labels). It does not explicitly differentiate from siblings such as plate_stack, though the product-image phrasing narrows the intended use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided, and no alternative tool is named. The 'ships everywhere' phrasing hints at a specific product context, but the agent is left to infer when plate_pair should be chosen over plate_stack or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_resolveA
Resolve every visual noun in a brief to a real asset, or to an honest null. Call this BEFORE writing a line of scene or page code. Live sources that need no account: Poly Haven for HDRIs and PBR materials, the Quaternius Universal Animation Library for rigged humans, Google Fonts for type. A noun with no real asset (a face, a photograph, a brand mark) comes back resolved:false with the reason. Draw only architecture; never draw a body, a material, a font or a mark.
| Name | Required | Description | Default |
|---|---|---|---|
| nouns | Yes | Every visual noun in the brief: people, ground, sky, light, props, type, marks, imagery. | |
| domain | No | Which domain the brief is in. Defaults to 3d. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It reveals that unresolved nouns return resolved:false with a reason, that sources require no account, and that the agent must not draw bodies, materials, fonts, or marks. It does not describe the shape of a successful resolved:true result, but it is meaningfully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose, call timing, no-account sources, failure behavior, and the drawing constraint. There is no filler, and the most important operational instruction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers when to invoke, which sources are available, what happens for unresolved nouns, and a key design constraint. Since there is no output schema, the main gap is the lack of detail on what a successful resolution returns, but the description is still complete enough for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the nouns array and domain parameter. The description adds context about how nouns are treated and what unresolved resolution means, but it does not explain domain-specific behavior or the exact success payload. This is adequate but not additive beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: resolve every visual noun in a brief to a real asset or an honest null. It also clarifies its role relative to the broader workflow by saying to call it before writing any scene or page code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use guidance: before any code is written. It also explains that certain live sources need no account and that unresolved nouns come back with a reason. However, it does not explicitly contrast itself with sibling tools like plate_inspect or plate_check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_stackA
The finishing stack for an engine, in order: the exact script tags, the code for each step, why each step exists, and the gotchas. 'three-r128' for a 3D scene, 'web' for a landing page, 'video' for motion. The stack is not the last step; build it in before judging anything.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Optional. Adds the measured finishing values for that domain, read out of the run whose published frame used them. Needs a library on disk (PLATE_LIBRARY); without one the general stack is returned and the reply says so. Known domains: 3d-product, 3d-scene, game, data, web, web-dark. | |
| engine | Yes | Which stack to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses what the output contains and warns that the stack is not the last step, but it does not mention side effects, permissions, rate limits, or failure behavior such as the missing PLATE_LIBRARY caveat.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences deliver content definition, engine mapping, and a workflow caution with no filler. The most important information is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description conveys what the output contains and how to choose an engine, which is adequate given the schema covers parameter details. It does not explain how the tool relates to siblings or what the domain parameter affects in the stack, but the schema's domain description fills that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds meaningful semantics for the engine enum by explaining what each value is for. The domain parameter is not mentioned in the description, yet the schema already covers it thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource, 'the finishing stack for an engine,' and details its ordered contents: script tags, code, reasons, and gotchas. It lacks an explicit verb like 'returns' or 'gets,' and does not differentiate from sibling tools, so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear selection context by mapping engine values to use cases: 'three-r128' for a 3D scene, 'web' for a landing page, 'video' for motion. It also gives a workflow directive, 'build it in before judging anything,' but does not state when not to use the tool or name alternatives among the plate_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v1.1.0- First observed
plate_brief - First observed
plate_capture - First observed
plate_catalog - First observed
plate_check - First observed
plate_inspect - First observed
plate_kit - First observed
plate_license - First observed
plate_pair - First observed
plate_resolve - First observed
plate_stack
TDQS
Most tools have clearly distinct purposes: resolve assets, inspect kits, get finishing stacks, check output, capture pages, pair frames. The only mild boundary is between plate_catalog and plate_kit (both deal with local kits) and between plate_inspect and plate_capture (both return images), but their inputs and outputs are different enough to avoid real confusion.
All tools share the plate_ prefix and snake_case style, which gives visual consistency. However, the second element mixes verbs (resolve, check, pair, inspect, capture) with nouns (kit, stack, brief, license), so there is no predictable verb_noun pattern across the set.
Ten tools is a well-scoped set for a design/build assistant. Each tool serves a distinct step in the workflow from brief through asset resolution, stacking, checking, capture, and final pairing, with no obvious dead weight.
The tool surface covers the full intended lifecycle: create a brief, resolve visual nouns, gather kits and stacks, validate output, capture/inspect results, and produce before/after composites. Minor gaps exist around explicit serving/building or license activation, but these seem outside the server's stated responsibility.
Maintenance
Related MCP Connectors
Design intelligence for coding agents: audits, design systems, and a taste profile agents consult.
UI design from prompts, screenshots, and URLs for AI coding agents and theme tokens.
Comment on AI-generated webpages; feedback flows back to your coding agent. Free, MIT, local-first.
Focused full-screen UI references and hosted design materials for coding agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceBridges AI coding agents with the browser to provide visual debugging, real-time error capture, screenshot capabilities, DOM inspection, and interactive wireframing through a reverse proxy with injected developer tools.5819Apache 2.0
- AlicenseAqualityBmaintenanceA local-first MCP server that captures rendered web evidence including screenshots, motion, pixel diffs, and CSS animation metadata for coding agents.71MIT
- AlicenseNot gradedqualityBmaintenanceCaptures website design evidence across responsive conditions and packages it into a portable design system for reuse by other agents.2MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI coding agents to plan, build, and review websites and product interfaces with a persistent, user-led process, including design direction, component contracts, and implementation review.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ohad6k/plate'
If you have feedback or need assistance with the MCP directory API, please join our Discord server