Skip to main content
Glama

Brand kit from a website

make_brand_kit

Reads a website as rendered and saves its brand assets—logos, colors, fonts, first screen, app store visuals, and BRAND.md/brand.json files—into one folder for design and agent use.

Instructions

Reads a website in a headless browser, the way it is drawn, and saves its brand in one folder: the logo files cut from their real background (PNG and SVG), the colors with where each one is used, the fonts, the first screen, a brand card, and the app store icon and screenshots when the site links to its apps. BRAND.md is for people and agents, brand.json for tools, _brand.yml for Quarto and Shiny. With facts, it also lists what the site claims about itself, each claim with its page, in FACTS.md. Read BRAND.md before designing anything for that product. (easybrandkit 0.4.0, on this machine.)

Input Schema

NameRequiredDescriptionDefault
urlYesThe website, like https://linear.app
factsNoAlso read what the site claims about itself from its home, pricing, customers, security, integrations and about pages. Takes longer.
storesNoSet to false to skip app store listings and social profiles.
out_dirNoFolder to save into, absolute or relative to /app. Default: easybrandkit-{host}.
wait_secondsNoHow long to wait for the result before returning a job_id to wait on. 45 is safe for clients that stop a tool call after 60 seconds.
timeout_secondsNoGive up after this many seconds (default 120, or 240 with facts).

Output Schema

NameRequiredDescriptionDefault
kitYes
toolYes
filesNo
folderNoWhere the kit saved its files.
job_idYes
passedNoFor checks: whether the check passed.
statusYes
exit_codeNo
last_lineNoWhat the kit was doing last.
next_actionNo
elapsed_secondsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare it is a non-read-only, open-world, non-idempotent but non-destructive write operation. The description adds valuable behavioral detail beyond the annotations: it uses a headless browser, writes files into a folder, produces specific file formats and manifests, and includes optional app-store capture when the site links to apps. It does not discuss permissions, rate limits, or failure modes in depth, but the core behavior is well disclosed.

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 description is dense but front-loaded, opening with the core read-and-save behavior before listing outputs. It is longer than typical, but most sentences earn their place by naming concrete artifacts and file consumers. Minor repetition exists around the generated files, but it remains readable and purposeful.

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

Completeness4/5

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

For a complex tool with six parameters and an output schema, the description covers the main artifacts, output files, optional facts behavior, and the recommended reading order. It does not need to explain return values because an output schema exists, but it could say more about long-running job behavior and failure handling. Overall it is complete enough to invoke correctly.

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 coverage is 100%, so the schema already documents all six parameters thoroughly, including defaults and limits. The description reinforces what facts adds (claims with pages in FACTS.md) and what stores controls, but does not add much parameter meaning beyond the schema. A baseline 3 is appropriate when the schema does the heavy lifting.

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?

The description states a specific verb and resource: it reads a website in a headless browser and saves its brand assets into one folder. The long artifact list (logos, colors, fonts, first screen, brand card, app store assets) makes clear this is a brand-kit extraction tool, not a launch-film or job tool.

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 gives clear context for when to use the output (e.g., read BRAND.md before designing anything for that product) and explains the optional facts behavior. It does not explicitly name when to choose this over a sibling tool or when not to use it, but the purpose is narrow enough that the usage context is largely implied.

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