Agents

MCP tools

Every tool the Archetype MCP server publishes, with its arguments, the domains get_brand reads, and an example call for each.

A connected agent gets six tools: three that read the brand, two that make something new (images and video, or a whole campaign), and one that changes the brand. This page lists every argument exactly as the server declares it. The same reference, generated from the same source, is served to agents at /llms-full.txt.

ToolWhat it's forMarked as
get_brandRead the brand, one domain at a time: an index, then one item's detail.Read-only
search_brandFind anything in the brand by keyword.Read-only
check_against_brandGrade code, copy or a live page against the brand.Read-only
generate_mediaMake a new photo or video clip and keep it in the brand's library.Write (creates)
create_campaignPlan a whole campaign from one brief, then make its designs, images and videos.Write (creates)
update_brandChange one item in the brand, or apply, discard or undo a change.Write (destructive)

The server works index first, then detail. Call a domain bare to see what it holds, then call it again with the handle the index gave you. Fetch only the item you need, because every response lands in the agent's context.

get_brand

Reads the brand. With no arguments it returns the brief, which is where an agent should start: BRAND.md, then every token and the logo rules inline, then an inventory of everything else with the handle that fetches each item.

ArgumentTypeRequiredWhat it does
domainstring, one of the domains belowNoWhich part of the brand to read. Defaults to brief.
handlestringNoThe item within the domain, as its index gave it. Leave it out for the index. Ignored by brief and info.
taskstringNoOne sentence on what you are about to make. Returns a brief of just what that work needs: the template to start from, files to read, photos by tag, parts and gaps. Leave domain unset.
examplestringNocomponents only. An example's name or id, to narrow a component to one example.
modestringNotokens, or components and templates with a handle. The mode to resolve colors in, such as dark.
include_tokensbooleanNocomponents with a handle only. false leaves out the :root block of tokens, which is the same for every component.
variantstringNoDeprecated alias for example.
intentstringNoicons only. What the icon needs to mean, to pick one from a custom set, such as download.
include_codebooleanNoartifacts only, with no handle. Includes the full source of every artifact. Large.
typestring: social, web, app or filesNotemplates only, with no handle. Only templates of this kind.
framestring, number, or an array of eitherNotemplates with a handle only. Only these frames, by name or by number from 1.
tagstring or array of stringsNofiles only. Assets carrying this tag. Several tags narrow further: an asset must carry all of them.
searchstringNofiles only. Substring match over name, description, usage and tags.
pagesstringNofiles with a handle only. Which pages of a PDF to read, such as 3 or 5-12.

Domains

DomainWhat handle selectsWhat it returns
brief(none)BRAND.md, all tokens and logo rules inline, and an index of components, templates, artifacts, icons, library tags and knowledge files. The default.
info(none)The brand's name and slug, and a count of everything served. The cheapest way to see what exists.
tokenstoken category: color, typography, spacing, radius or shadowDesign tokens as W3C Design Tokens (DTCG) JSON. Where the brand has modes, each semantic color carries its other values.
assetsasset name, such as Logo DarkLogos, favicons and other identity assets: inline SVG or a stable file URL, plus usage rules (when-to-use tags, guidance, clearspace, minimum size, misuse).
componentscomponent key, such as buttonBare: every component's key, name and example names. With a key: each example's real HTML and CSS, with values as var(--token).
iconsicon set slug, such as lucideBare: the icon sets the brand uses. With a slug: import syntax and license for a referenced set, or every icon as inline SVG for a custom set, plus the set's when-to-use tags and guidance.
artifactsartifact handleBare: an index of the brand's bespoke code (backgrounds, patterns, generative graphics, motion), with when-to-use tags and guidance. With a handle: its full source, usage snippet and brand defaults.
templatestemplate keyBare: every template with its type and frames. With a key: the finished markup with the brand's real logo, images and colors bound in, plus a slots list of what may change.
filesfile name or idThe asset library: photos, illustrations and PDFs, with tags, descriptions and a stable embedUrl. A PDF returns its text, page by page.
voicedocument slug, or allThe brand's voice and messaging documents. Bare: an index with each document's slug, status and word count.
schema(none)How to write with update_brand: every domain's value shape, the component model and every limit. Read it before the first write.
Read one component
{ "domain": "components", "handle": "button", "example": "Primary" }
Brief for one piece of work
{ "task": "Instagram story announcing our spring sale" }

search_brand

Keyword search across token names and roles, logo usage, component and example names, artifacts and their code, library files (including the text inside PDFs), templates and voice documents. Every hit carries the exact get_brand call that fetches it.

ArgumentTypeRequiredWhat it does
querystringYesA case-insensitive keyword or phrase. A phrase that matches nothing is retried term by term.
domainsarray of tokens, assets, components, icons, artifacts, templates, files, voiceNoLimit the search to these domains. Leave it out for all.
Example
{ "query": "pricing table", "domains": ["components", "templates"] }

check_against_brand

Grades work against the brand and returns a worst-first list of fixes. A finding is either a lookup (a color or typeface the brand never defined, with the token to use instead) or a judgment with a confidence (a control rebuilt from raw elements when the brand already has it). Each finding is marked as drift, a hardcoded value, or a gap the brand has no answer for.

ArgumentTypeRequiredWhat it does
subjectstringOne of subject or urlThe code, CSS, markup or copy to grade. One file at a time, up to 80,000 characters. A longer subject is refused, not cut.
kindstring: code or copyNoDefaults to code. Pass copy for prose people will read, and each sentence is also checked against the brand's voice documents.
urlstringOne of subject or urlA live page to check as a visitor sees it. It is drawn in a browser, takes up to a minute, spends the brand's AI credits and returns a reportUrl for a person.
gapsarray of stringsNoWhat you had to invent because the brand didn't define it, one short sentence each. They reach the brand's team.
Example
{ "subject": ".cta { background: #0a84ff; border-radius: 10px; }", "gaps": ["No focus ring color for dark surfaces"] }

Nothing about the brand is changed by a check. A url check keeps its report on the brand's Check page. See Check.

generate_media

Makes a new photograph or video clip and keeps it in the brand's library. It costs credits, so an agent should look in the library first. The brand's imagery rules are added to the prompt for it. It needs a role that can add files to the library; it does not need edits allowed on the connection.

ArgumentTypeRequiredWhat it does
kindstring: image or videoNoDefaults to image.
promptstringYes, unless checkA photographer's brief: subject, setting, light, framing, mood. Describe a scene, never a logo or lettering.
aspectstringNoImages: 1:1, 4:5, 3:2, 2:3, 16:9, 9:16. Videos: 16:9, 9:16, 1:1, 4:3, 3:4.
qualitystring: high or mediumNoImages only. Defaults to high.
sizestring: 1k, 2k or 4kNoImages only. Defaults to 1k (about 1 megapixel). 2k is about 4 and 4k about 8, at 8 times the credits of 1k.
secondsnumber: 5, 10 or 15NoVideos only. Defaults to 5.
audiobooleanNoVideos only. Defaults to true.
fromarray of stringsNoLibrary files to start from, by name or id: up to 4 for an image, 1 for a video.
checkstringNoThe id an earlier video call returned, to see whether it is ready. Pass it on its own.

An image comes back when it's made, in about a minute. A video takes minutes: the call returns an id, and the agent calls again with check until the status is ready. Either way the result names the library file it became, with an embedUrl.

Example
{ "kind": "image", "prompt": "Morning light over a rooftop garden, wide shot, calm", "aspect": "16:9", "size": "2k" }

create_campaign

Has Archetype make a whole campaign from one brief: it plans the idea, the line and the look the pieces share, then makes every piece side by side. Pieces are designs from the brand's templates, components, photos and voice, and generated images and videos in the same look. It spends the brand's credits: about one Create design per design or image, and many times that per video.

It needs a role with the Designs and checks permission; images and videos also need permission to edit the Library. Like generate_media, it does not need edits allowed on the connection.

ArgumentTypeRequiredWhat it does
briefstringYes, unless make, discard or checkWhat the campaign is for, who it speaks to, where it runs, and any facts (dates, prices, offers) it must carry, in the person's words. Up to 3 full https:// links in it are read for their words, logo and pictures, which the pieces use as that party's own.
attacharray of objectsNoUp to 6 files for this campaign, such as a partner's logo or the brief as a PDF. Each is {"source": "<public URL>"} or {"data": "<base64>"}, with a name. Pictures (PNG, JPEG, WebP, GIF or SVG), PDFs and text. They're held with the campaign and never added to the library.
piecesnumberNoHow many pieces, 2 to 16. Defaults to 6. Counts written in the brief ("four posts and two photos") set it when it is left out.
formatsarray of stringsNoUp to 48 format ids, such as instagram-post, instagram-story, linkedin-landscape or email-header, or platform ids such as instagram, whose formats the plan chooses from the brief. Left out, the channels the brief names hold the plan to their formats, or with none named the plan picks. An unknown id is refused with the full list.
kindsarray of design, image, videoNoWhat the pieces may be made as. Defaults to all three where generation is on and the role may add to the library. The plan picks the mix, with at most 3 videos.
latitudestring: brand, first or freeNoHow far the materials may stretch past what the brand owns, as on Create. Defaults to brand.
photosbooleanNoAllow up to 2 new photographs, made once and shared by every piece. Defaults to false.
makestringNoA campaign id whose plan the person has said yes to: make every piece as planned. Pass it on its own.
discardstringNoA campaign id whose plan the person doesn't want: drop it. Pass it on its own.
checkstringNoThe id an earlier call returned, to see how the pieces are getting on. Pass it on its own.

Every campaign stops at its plan. The first call waits for the plan (about a minute) and returns it with status review: the idea, the line, the look, any notes, each piece's title, kind, format and brief, and a reviewUrl. Nothing is made yet. The agent shows the person the plan and, once they say yes, calls again with make. The person can also edit the plan at the reviewUrl and press Make all there.

Pieces take a few minutes, so the agent calls with check until status is ready. Each ready design has a previewUrl picture and each image or video a fileUrl, both to show the person, plus an openUrl. The reviewUrl opens the whole campaign in Archetype to edit and download. See Campaigns.

Example
{ "brief": "Launch our spring range on Instagram: three posts and a story, sale ends 15 May", "latitude": "first" }
After the person approves the plan
{ "make": "<campaign id>" }

update_brand

Changes one item in the brand per call, only when the person asked for that change. It needs a connection approved with Change the brand when you ask it to, and the person's role must allow edits in that area. By default the change becomes a draft that waits for review. See Changes from agents.

ArgumentTypeRequiredWhat it does
domainstring: tokens, voice, info, assets, files, icons, components, artifacts, templates, designsYes, unless undo, apply or discardWhat kind of thing to change. designs saves a document made from a template's pages (create only).
handlestringNoWhich item: a token path (color.brand.500, or modes), a voice slug, a logo name, a file name, an icon set slug, a component key, an artifact handle or a template key. Not used for info.
examplestringNocomponents only. The example to edit, add or delete, by name, such as Primary · Hover.
iconstringNoicons only. An icon's key within a custom set.
framestring or numberNotemplates only. The frame to edit or delete, by name or number from 1, or the new frame's name with create.
valueanyNoWhat the item becomes: a bare value (a hex, a number of px, a family name) or an object of only the fields to change. Artwork goes in as {source}, {svg} or {data}.
findstringNoExact text to change in a voice document, a component example, an artifact's code or a template frame. Must occur exactly once.
replacestringNoWhat find becomes. "" removes it.
createbooleanNoAdd a new item at handle.
deletebooleanNoRemove the item at handle. It can be put back with undo.
importobjectNotokens, components or icons: many items in one call, from {"source": "<https URL>"} or {"document": ...}. "dryRun": true previews.
applystringNoA draft id: make that change for real, only after the person said yes. Pass it on its own.
discardstringNoA draft id: drop it. Pass it on its own.
replacesstringNoA pending draft id this call revises.
undostring or objectNoA changeId, "last", or {"since": "<changeId>"} for that change and every later one you made. Pass it on its own.
Example
{ "domain": "tokens", "handle": "color.brand.500", "value": "#2179ef" }

The exact value shape for every domain, and the limits, are in get_brand with {"domain": "schema"}. A few shapes worth knowing:

  • Font files. typography.<family> takes {"fonts": [...]} to upload the family's files, each as {"source": "<https URL>"} or {"data": "<base64>", "name": "<file name>"}. Files are .woff2, .woff, .ttf or .otf, at most 3 MB each and 24 a call (1.5 MB each sent as data). Weight and style come from the file name unless given, and an upload replaces only the file at its weight and style. Font files are licensed, so an agent should ask before uploading them.
  • When to use and guidance. Logos, icon sets and artifacts take whenToUse as short tags of at most 40 characters, such as "Dark background", and guidance as free text for sentences such as sizes and pairings. A sentence sent as a tag is refused.
  • How a photo fits its slot. In a template's bindings or a design's slots, a file binding takes "fit": "fill" covers the box (the default for a photo), "fit" shows the whole picture inside it, and "tile" repeats it. With "fill", "focus": {"x": 50, "y": 20} keeps that point in view; with "tile", "size" is a tile's width in percent of the box.
Upload font files
{ "domain": "tokens", "handle": "typography.gt-walsheim", "value": { "fonts": [{ "source": "https://example.com/GT-Walsheim-Bold.woff2", "weight": 700 }] } }
Fit a photo in a template slot
{ "domain": "templates", "handle": "launch-post", "frame": 1, "value": { "bindings": { "hero": { "file": "team-offsite.jpg", "fit": "fill", "focus": { "x": 50, "y": 30 } } } } }

Older tool names

Before version 3 the server published one tool per domain, such as get_brand_tokens and get_brand_components. Those names still answer and map to the matching get_brand domain, but they are no longer listed. Use get_brand.

Resources and limits

For clients that prefer MCP resources, the server also lists archetype://context (the brief), archetype://tokens (DTCG JSON), and one resource per voice document, artifact, component and icon set.

Each person can make up to 240 calls a minute to a brand, and a brand takes up to 20,000 calls a day.

Something missing or wrong on this page? Write to support@heyarchetype.com.