Skip to main content
An agent connected to your widgentic catalog can do most of the drafting. It reads the authoring guide and your existing entries over MCP, produces the JSON, and hands it to you; you import it in the matching designer, review what the validators say, and save. The split is deliberate: agents draft, people publish.

Why there is no registration tool

The MCP server exposes read-only discovery tools and nothing that writes. API keys are read-only credentials that travel into third-party hosts and prompt-injectable contexts, so a write requires your authenticated session in the app. An agent that looks for a registration tool will not find one, and get_authoring_guide tells it so. The execute scope lets a widget run http actions; it does not let anyone write. See Trust model and Keys and scopes.

What the agent reads

The guide is derived from the live validators when it is called: reserved kinds from the catalog, limits from the store defaults, tokens from the registry, patterns from the validators’ own constants. It cannot drift from what the store will accept. Catalogs are per key and change between calls, so the agent should call list_widgets fresh rather than answer from an earlier listing. The tools are described in MCP tools.

The workflow

1

Connect a host with your key

Register the server in your MCP host with one of your API keys; a read-only key is enough for drafting. See Connect a host.
2

Ask for a draft

Describe the widget, theme or schema you want. A prompt that names the tools works well:
3

Review the JSON

You receive one object in the shape the store persists: { kind, template, descriptor } for a widget, { name, label?, description?, tokens } for a theme, { name, label?, description?, schema } for a shared schema, { name, label?, description?, definition } for an action.
4

Import in the matching section

Sign in at widgentic.dev and open Widgets, Themes, Data schemas or Actions. Each designer has an Import section before its Export section. Import treats the JSON as untrusted: it re-validates everything and, if the entry fails, shows the structured errors and leaves your current draft untouched. With a valid import, check the preview against your own sample data and themes.
5

Save

Save to my catalog writes the entry through your session. It appears in your MCP catalog on the next tool call made with your key, with no further step. An http action must pass a Test call before it can be saved.
When a widget references a shared schema, import and save the schema first. The dataSchemaRef is validated against your saved schemas when the widget is saved. See Data schemas.

What a good draft looks like

The guide steers the agent toward these, and they are what to look for in review:
  • A kind that does not collide. Built-in kinds are reserved, and existing kinds come from list_widgets.
  • Bindings on schema-declared properties. Schema-declared data fails fast with dotted paths; $meta.* is outside schema validation, so a heading belongs in the schema as an optional title.
  • A dataExample that validates. The designer cross-checks it against the schema and uses it as preview data.
  • A reference, not a copy, of a saved schema. A reconstructed inline schema forks the moment you edit the shared one.
  • Styles on .wg- selectors using var(--wg-<token>). Themes then restyle the widget; custom x-* variables get a fallback.
  • A theme delivered as an importable entry. An inline token map passed to render_widget styles one render; the entry is what you save.
The rules behind each point are in the Authoring contract and Template DSL.

Actions drafted by an agent

The guide documents the action vocabulary too. Inline action bindings arrive inside the widget template and import with it; a shared action arrives as its own entry for the Actions section. An http action still has to pass the Test call before Save is available, a prompt action asks you to acknowledge that the proposed message is your responsibility, and any { "secret": "<name>" } the definition references must already exist in Secrets. See Actions and secrets.

After saving

The agent sees the result on its next call: list_widgets lists the new kind with its descriptor, render_widget renders it, and a saved theme resolves by name. Two tails on render_widget output help the agent correct itself without your involvement: Hint notes: for misaimed hints and Action notes: for what the widget’s buttons do and why any are disabled.