← WebMCP Directory

Tool tree

demo.widgentic.dev

Developer ToolsTools verified
Website
widgentic
Explore capabilities
    widgentic_widget_draft_getAnswer

    Read the widget definition currently open in the widget designer, in its export shape { kind, template, descriptor, load? } — kind: a unique id that is not a built-in (card, table, tree, group); template: the widgentic template DSL (data SELECTS, you supply every literal; no expressions); descriptor: { description (required), dataSchema? | dataSchemaRef?, dataExample?, … }; load?: an http action binding run on first render. Returns { definition, diagnostics } — diagnostics is the designer's verdict (previewable, kind/template/example/style issues). Call this first: it is what the person is looking at.

    View tool JSON
    {
      "name": "widgentic_widget_draft_get",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the widget definition currently open in the widget designer, in its export shape { kind, template, descriptor, load? } — kind: a unique id that is not a built-in (card, table, tree, group); template: the widgentic template DSL (data SELECTS, you supply every literal; no expressions); descriptor: { description (required), dataSchema? | dataSchemaRef?, dataExample?, … }; load?: an http action binding run on first render. Returns { definition, diagnostics } — diagnostics is the designer's verdict (previewable, kind/template/example/style issues). Call this first: it is what the person is looking at.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    widgentic_widget_draft_loadAction

    Replace the draft in the widget designer with a complete definition { kind, template, descriptor, load? } — kind: a unique id that is not a built-in (card, table, tree, group); template: the widgentic template DSL (data SELECTS, you supply every literal; no expressions); descriptor: { description (required), dataSchema? | dataSchemaRef?, dataExample?, … }; load?: an http action binding run on first render. The designer validates it: applied → { ok: true, diagnostics } and the person sees it immediately; refused → { ok: false, code: 'REJECTED', errors } with the exact messages the designer shows. Keep the person's kind unless asked to change it. Nothing is saved by this tool: the person reviews the result in the designer and saves. TEMPLATE DSL (data, not code): nodes are a STRING, { bind } (text of a dot path; '.' = the scope; $root.x, $parent.x, $index, $meta.x), { each: "path", template, empty? }, { when: "path", template, else? }, or { tag, attrs?, children? }. Value transforms, ONE per value and always with bind: map { "<value>": "<your literal>", default? } (the value SELECTS a literal you wrote — semantic classes, status wording), prefix "mailto:" (attribute values only), format { type: number|currency|date|count|join|truncate|pluralize, decimals?, locale?, currency?, currencyDisplay?, pattern?, separator?, last?, field?, length?, ellipsis?, forms? } (render-time presentation, payload keeps the typed value; count/join/truncate/pluralize present lists and text, e.g. pluralize forms { one: "{count} item", other: "{count} items" }). A text bind may instead carry markdown: true (paragraphs, lists, emphasis, code, links — the parser chooses the tags, raw HTML stays text; never with map or format). Forbidden: script/iframe/object/embed/style/link/meta/base/template/noscript tags, on*/srcdoc attributes, non-https URLs (mailto:/tel: allowed on href), expressions of any kind. descriptor.description is REQUIRED; give dataShape and dataExample; dataSchema (type/properties/required/items/enum/pattern) makes bad data fail with a path instead of rendering blank. styles: { ".wg-<class>": { "css-property": "value" } } — .wg- selectors only, var(--wg-<token>) for colours and spacing. kind/name: ^[a-zA-Z0-9._-]+$, not a built-in kind. Call widgentic_authoring_guide for the full contract and widgentic_widget_definition_check to validate before loading.

    View tool JSON
    {
      "name": "widgentic_widget_draft_load",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the draft in the widget designer with a complete definition { kind, template, descriptor, load? } — kind: a unique id that is not a built-in (card, table, tree, group); template: the widgentic template DSL (data SELECTS, you supply every literal; no expressions); descriptor: { description (required), dataSchema? | dataSchemaRef?, dataExample?, … }; load?: an http action binding run on first render. The designer validates it: applied → { ok: true, diagnostics } and the person sees it immediately; refused → { ok: false, code: 'REJECTED', errors } with the exact messages the designer shows. Keep the person's kind unless asked to change it. Nothing is saved by this tool: the person reviews the result in the designer and saves. TEMPLATE DSL (data, not code): nodes are a STRING, { bind } (text of a dot path; '.' = the scope; $root.x, $parent.x, $index, $meta.x), { each: \"path\", template, empty? }, { when: \"path\", template, else? }, or { tag, attrs?, children? }. Value transforms, ONE per value and always with bind: map { \"<value>\": \"<your literal>\", default? } (the value SELECTS a literal you wrote — semantic classes, status wording), prefix \"mailto:\" (attribute values only), format { type: number|currency|date|count|join|truncate|pluralize, decimals?, locale?, currency?, currencyDisplay?, pattern?, separator?, last?, field?, length?, ellipsis?, forms? } (render-time presentation, payload keeps the typed value; count/join/truncate/pluralize present lists and text, e.g. pluralize forms { one: \"{count} item\", other: \"{count} items\" }). A text bind may instead carry markdown: true (paragraphs, lists, emphasis, code, links — the parser chooses the tags, raw HTML stays text; never with map or format). Forbidden: script/iframe/object/embed/style/link/meta/base/template/noscript tags, on*/srcdoc attributes, non-https URLs (mailto:/tel: allowed on href), expressions of any kind. descriptor.description is REQUIRED; give dataShape and dataExample; dataSchema (type/properties/required/items/enum/pattern) makes bad data fail with a path instead of rendering blank. styles: { \".wg-<class>\": { \"css-property\": \"value\" } } — .wg- selectors only, var(--wg-<token>) for colours and spacing. kind/name: ^[a-zA-Z0-9._-]+$, not a built-in kind. Call widgentic_authoring_guide for the full contract and widgentic_widget_definition_check to validate before loading.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "definition": {
            "type": "object",
            "description": "The widget definition in export shape."
          }
        },
        "required": [
          "definition"
        ],
        "additionalProperties": false
      }
    }
    widgentic_widget_example_data_setAction

    Replace the draft's example data (descriptor.dataExample) — the data the preview renders and the example saved with the widget. Send { data } matching the draft's data schema (the shape descriptor.dataShape sketches; bind paths in the template must exist in it). Returns the diagnostics; a mismatch with the schema is reported in diagnostics.example rather than silently previewed. Nothing is saved by this tool: the person reviews the result in the designer and saves.

    View tool JSON
    {
      "name": "widgentic_widget_example_data_set",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the draft's example data (descriptor.dataExample) — the data the preview renders and the example saved with the widget. Send { data } matching the draft's data schema (the shape descriptor.dataShape sketches; bind paths in the template must exist in it). Returns the diagnostics; a mismatch with the schema is reported in diagnostics.example rather than silently previewed. Nothing is saved by this tool: the person reviews the result in the designer and saves.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Example data for the widget (any JSON value the data schema accepts)."
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      }
    }
    widgentic_widget_theme_setAction

    Set the theme tokens the widget preview is rendered with: { tokens: { <token>: <css value> } } over the --wg-* tokens (list them with the theme_token_specs tool; author variables are x-<name>). Validated by the theming rules; refused → { ok: false, code: 'REJECTED', errors }. The tokens layer over the preview theme the person chose in the designer, which stays selected with its shared styles; each call replaces the previous layer, so { tokens: {} } returns to the chosen theme exactly. The result carries the effective tokens and previewTheme, the chosen theme's name (absent when none is chosen). This is the preview theme of the draft, not a saved theme entry.

    View tool JSON
    {
      "name": "widgentic_widget_theme_set",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the theme tokens the widget preview is rendered with: { tokens: { <token>: <css value> } } over the --wg-* tokens (list them with the theme_token_specs tool; author variables are x-<name>). Validated by the theming rules; refused → { ok: false, code: 'REJECTED', errors }. The tokens layer over the preview theme the person chose in the designer, which stays selected with its shared styles; each call replaces the previous layer, so { tokens: {} } returns to the chosen theme exactly. The result carries the effective tokens and previewTheme, the chosen theme's name (absent when none is chosen). This is the preview theme of the draft, not a saved theme entry.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tokens": {
            "type": "object",
            "description": "Token name → CSS value.",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "required": [
          "tokens"
        ],
        "additionalProperties": false
      }
    }
    widgentic_theme_getAnswer

    Read the theme entry open in the theme designer: { entry: { name, label?, description?, tokens, styles? } } — tokens is a map of --wg-* token names (and x-<name> author variables) to CSS values; styles maps .wg- selectors to { property: value } (shared classes every widget under the theme can use). Returns { entry, diagnostics: { styles } } — styles lists every style entry the renderer would drop, with its reason (empty when all apply).

    View tool JSON
    {
      "name": "widgentic_theme_get",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the theme entry open in the theme designer: { entry: { name, label?, description?, tokens, styles? } } — tokens is a map of --wg-* token names (and x-<name> author variables) to CSS values; styles maps .wg- selectors to { property: value } (shared classes every widget under the theme can use). Returns { entry, diagnostics: { styles } } — styles lists every style entry the renderer would drop, with its reason (empty when all apply). ",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    widgentic_theme_loadAction

    Replace the WHOLE entry in the theme designer: { entry: { name, label?, description?, tokens, styles? } } — read it with theme_get first and keep its styles, or they are dropped. name: letters, digits, '.', '_' or '-'; light and dark are reserved. tokens: bare --wg-* token names (colours: bg, surface, fg, muted, accent, accent-fg, border; shape: radius, radius-sm, radius-lg, spacing, border-width; type and status tokens — list them all with theme_token_specs) and author variables x-<name>, to plain CSS values. Token values are plain CSS values. Rejected: anything matching [;{}<>\\], a comment marker (/* or */), an unclosed bracket or string, and calls to url(, expression(, image-set(, src( (case-insensitive, whitespace-tolerant). Keep values to colors, lengths, and font stacks. styles: shared .wg- classes, { ".wg-btn": { "padding": "4px 8px" } }, under the widget style rules. A dark theme sets bg/surface/fg/muted/border together so contrast holds. Returns { entry, diagnostics: { styles } } — styles lists every style entry the renderer would drop, with its reason (empty when all apply). Refused → { ok: false, code: 'REJECTED', errors }. Nothing is saved by this tool: the person reviews the result in the designer and saves.

    View tool JSON
    {
      "name": "widgentic_theme_load",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the WHOLE entry in the theme designer: { entry: { name, label?, description?, tokens, styles? } } — read it with theme_get first and keep its styles, or they are dropped. name: letters, digits, '.', '_' or '-'; light and dark are reserved. tokens: bare --wg-* token names (colours: bg, surface, fg, muted, accent, accent-fg, border; shape: radius, radius-sm, radius-lg, spacing, border-width; type and status tokens — list them all with theme_token_specs) and author variables x-<name>, to plain CSS values. Token values are plain CSS values. Rejected: anything matching [;{}<>\\\\], a comment marker (/* or */), an unclosed bracket or string, and calls to url(, expression(, image-set(, src( (case-insensitive, whitespace-tolerant). Keep values to colors, lengths, and font stacks. styles: shared .wg- classes, { \".wg-btn\": { \"padding\": \"4px 8px\" } }, under the widget style rules. A dark theme sets bg/surface/fg/muted/border together so contrast holds. Returns { entry, diagnostics: { styles } } — styles lists every style entry the renderer would drop, with its reason (empty when all apply). Refused → { ok: false, code: 'REJECTED', errors }. Nothing is saved by this tool: the person reviews the result in the designer and saves.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "entry": {
            "type": "object",
            "description": "The theme entry."
          }
        },
        "required": [
          "entry"
        ],
        "additionalProperties": false
      }
    }
    widgentic_theme_tokens_setAction

    Change some tokens of the theme entry open in the theme designer without retyping the rest: { tokens: { <token>: <css value> }, remove?: [<token>] }. The result is validated as a whole; an invalid value leaves the entry unchanged and returns { ok: false, code: 'REJECTED', errors }. Returns { entry, diagnostics: { styles } } — styles lists every style entry the renderer would drop, with its reason (empty when all apply). Nothing is saved by this tool: the person reviews the result in the designer and saves.

    View tool JSON
    {
      "name": "widgentic_theme_tokens_set",
      "kind": "act",
      "impl": "imperative",
      "description": "Change some tokens of the theme entry open in the theme designer without retyping the rest: { tokens: { <token>: <css value> }, remove?: [<token>] }. The result is validated as a whole; an invalid value leaves the entry unchanged and returns { ok: false, code: 'REJECTED', errors }. Returns { entry, diagnostics: { styles } } — styles lists every style entry the renderer would drop, with its reason (empty when all apply). Nothing is saved by this tool: the person reviews the result in the designer and saves.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tokens": {
            "type": "object",
            "description": "Token name → CSS value to set.",
            "additionalProperties": {
              "type": "string"
            }
          },
          "remove": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Token names to drop."
          }
        },
        "additionalProperties": false
      }
    }
    widgentic_schema_getAnswer

    Read the shared data-schema entry open in the schema designer: { entry: { name, label?, description?, schema } } — schema is a JSON Schema object widgets reference by name (dataSchemaRef).

    View tool JSON
    {
      "name": "widgentic_schema_get",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the shared data-schema entry open in the schema designer: { entry: { name, label?, description?, schema } } — schema is a JSON Schema object widgets reference by name (dataSchemaRef).",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    widgentic_schema_loadAction

    Replace the entry in the schema designer: { entry: { name, label?, description?, schema } }. name: letters, digits, '.', '_' or '-'; schema: a JSON Schema object in the supported subset — type (object/array/string/number/integer/boolean/null or an array of those), properties, required, items, enum, pattern (bounded); unknown keywords are ignored. What the validator would ignore (another type name, a pattern it will not run, a keyword of the wrong shape) still loads, with { warnings } naming each — fix them, or the schema checks less than you meant. Widgets reference it as descriptor.dataSchemaRef: "<name>" instead of an inline dataSchema. Refused → { ok: false, code: 'REJECTED', errors }. Nothing is saved by this tool: the person reviews the result in the designer and saves.

    View tool JSON
    {
      "name": "widgentic_schema_load",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the entry in the schema designer: { entry: { name, label?, description?, schema } }. name: letters, digits, '.', '_' or '-'; schema: a JSON Schema object in the supported subset — type (object/array/string/number/integer/boolean/null or an array of those), properties, required, items, enum, pattern (bounded); unknown keywords are ignored. What the validator would ignore (another type name, a pattern it will not run, a keyword of the wrong shape) still loads, with { warnings } naming each — fix them, or the schema checks less than you meant. Widgets reference it as descriptor.dataSchemaRef: \"<name>\" instead of an inline dataSchema. Refused → { ok: false, code: 'REJECTED', errors }. Nothing is saved by this tool: the person reviews the result in the designer and saves.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "entry": {
            "type": "object",
            "description": "The schema entry."
          }
        },
        "required": [
          "entry"
        ],
        "additionalProperties": false
      }
    }
    widgentic_action_getAnswer

    Read the action entry open in the action designer: { entry: { name, label?, description?, definition } } — definition is a prompt action ({ kind: 'prompt', text }) or an http action ({ kind: 'http', … }).

    View tool JSON
    {
      "name": "widgentic_action_get",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the action entry open in the action designer: { entry: { name, label?, description?, definition } } — definition is a prompt action ({ kind: 'prompt', text }) or an http action ({ kind: 'http', … }).",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    widgentic_action_loadAction

    Replace the entry in the action designer: { entry: { name, label?, description?, definition } }. name: lowercase letters, digits and dashes, starting with a letter. Refused → { ok: false, code: 'REJECTED', errors }. Secrets are referenced by name only and never pass through this tool. Nothing is saved by this tool: the person reviews the result in the designer and saves.

    View tool JSON
    {
      "name": "widgentic_action_load",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the entry in the action designer: { entry: { name, label?, description?, definition } }. name: lowercase letters, digits and dashes, starting with a letter. Refused → { ok: false, code: 'REJECTED', errors }. Secrets are referenced by name only and never pass through this tool. Nothing is saved by this tool: the person reviews the result in the designer and saves.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "entry": {
            "type": "object",
            "description": "The action entry."
          }
        },
        "required": [
          "entry"
        ],
        "additionalProperties": false
      }
    }
    widgentic_authoring_guideAction

    The complete authoring contract for widgets, themes, shared schemas and actions, derived from the validators the designers enforce: the widget shape, the template DSL (bind/each/when/element, the map/prefix/format transforms with every format type, the Markdown text bind, paths, actions), safety rules, style rules, data-schema subset, theme tokens, identifier patterns and limits. Read it once before drafting anything non-trivial; the editing tools carry only a summary.

    View tool JSON
    {
      "name": "widgentic_authoring_guide",
      "kind": "act",
      "impl": "imperative",
      "description": "The complete authoring contract for widgets, themes, shared schemas and actions, derived from the validators the designers enforce: the widget shape, the template DSL (bind/each/when/element, the map/prefix/format transforms with every format type, the Markdown text bind, paths, actions), safety rules, style rules, data-schema subset, theme tokens, identifier patterns and limits. Read it once before drafting anything non-trivial; the editing tools carry only a summary.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    widgentic_widget_definition_checkAction

    Validate a widget definition WITHOUT touching the designer: { definition: { kind, template, descriptor, load? } }. Returns exactly what the load tool would — { ok: true, diagnostics } (previewable, example-vs-schema verdict, style entries the renderer would drop) or { ok: false, code: 'REJECTED', errors } with the designer's messages. Iterate here until it is clean, then load it into the designer. TEMPLATE DSL (data, not code): nodes are a STRING, { bind } (text of a dot path; '.' = the scope; $root.x, $parent.x, $index, $meta.x), { each: "path", template, empty? }, { when: "path", template, else? }, or { tag, attrs?, children? }. Value transforms, ONE per value and always with bind: map { "<value>": "<your literal>", default? } (the value SELECTS a literal you wrote — semantic classes, status wording), prefix "mailto:" (attribute values only), format { type: number|currency|date|count|join|truncate|pluralize, decimals?, locale?, currency?, currencyDisplay?, pattern?, separator?, last?, field?, length?, ellipsis?, forms? } (render-time presentation, payload keeps the typed value; count/join/truncate/pluralize present lists and text, e.g. pluralize forms { one: "{count} item", other: "{count} items" }). A text bind may instead carry markdown: true (paragraphs, lists, emphasis, code, links — the parser chooses the tags, raw HTML stays text; never with map or format). Forbidden: script/iframe/object/embed/style/link/meta/base/template/noscript tags, on*/srcdoc attributes, non-https URLs (mailto:/tel: allowed on href), expressions of any kind. descriptor.description is REQUIRED; give dataShape and dataExample; dataSchema (type/properties/required/items/enum/pattern) makes bad data fail with a path instead of rendering blank. styles: { ".wg-<class>": { "css-property": "value" } } — .wg- selectors only, var(--wg-<token>) for colours and spacing. kind/name: ^[a-zA-Z0-9._-]+$, not a built-in kind. Call widgentic_authoring_guide for the full contract and widgentic_widget_definition_check to validate before loading.

    View tool JSON
    {
      "name": "widgentic_widget_definition_check",
      "kind": "act",
      "impl": "imperative",
      "description": "Validate a widget definition WITHOUT touching the designer: { definition: { kind, template, descriptor, load? } }. Returns exactly what the load tool would — { ok: true, diagnostics } (previewable, example-vs-schema verdict, style entries the renderer would drop) or { ok: false, code: 'REJECTED', errors } with the designer's messages. Iterate here until it is clean, then load it into the designer. TEMPLATE DSL (data, not code): nodes are a STRING, { bind } (text of a dot path; '.' = the scope; $root.x, $parent.x, $index, $meta.x), { each: \"path\", template, empty? }, { when: \"path\", template, else? }, or { tag, attrs?, children? }. Value transforms, ONE per value and always with bind: map { \"<value>\": \"<your literal>\", default? } (the value SELECTS a literal you wrote — semantic classes, status wording), prefix \"mailto:\" (attribute values only), format { type: number|currency|date|count|join|truncate|pluralize, decimals?, locale?, currency?, currencyDisplay?, pattern?, separator?, last?, field?, length?, ellipsis?, forms? } (render-time presentation, payload keeps the typed value; count/join/truncate/pluralize present lists and text, e.g. pluralize forms { one: \"{count} item\", other: \"{count} items\" }). A text bind may instead carry markdown: true (paragraphs, lists, emphasis, code, links — the parser chooses the tags, raw HTML stays text; never with map or format). Forbidden: script/iframe/object/embed/style/link/meta/base/template/noscript tags, on*/srcdoc attributes, non-https URLs (mailto:/tel: allowed on href), expressions of any kind. descriptor.description is REQUIRED; give dataShape and dataExample; dataSchema (type/properties/required/items/enum/pattern) makes bad data fail with a path instead of rendering blank. styles: { \".wg-<class>\": { \"css-property\": \"value\" } } — .wg- selectors only, var(--wg-<token>) for colours and spacing. kind/name: ^[a-zA-Z0-9._-]+$, not a built-in kind. Call widgentic_authoring_guide for the full contract and widgentic_widget_definition_check to validate before loading.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "definition": {
            "type": "object",
            "description": "The widget definition in export shape."
          }
        },
        "required": [
          "definition"
        ],
        "additionalProperties": false
      }
    }
    widgentic_theme_token_specsAnswer

    List every --wg-* theme token with its value type, default, purpose and fallback token — the vocabulary for theme entries and preview themes. Author-defined variables are x-<name>.

    View tool JSON
    {
      "name": "widgentic_theme_token_specs",
      "kind": "answer",
      "impl": "imperative",
      "description": "List every --wg-* theme token with its value type, default, purpose and fallback token — the vocabulary for theme entries and preview themes. Author-defined variables are x-<name>.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }