chameleon-webmcp.ryan-970.workers.dev
Chameleon
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 3 · Act 11 · Transact 1 · Score: Not yet scored
Tool inspector
add_widget
Creates one widget and returns widgetId plus required next. Repeated logs (blood sugar, applications) must be type=form, then create_form_tool. Pipeline/status board: kanban with a select groupByField, never table. Bind omitted fields for table, kanban, chart, or form. Checklist: skip bind_data, then add_rows with text/done/due/note. Notes: config.markdown only. "No rows yet" / "No items yet" means unfinished. Omit position to auto-place.
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
type |
string | yes | table = flat records; kanban = pipeline/status board (needs a select groupByField); checklist = todos via add_rows; note = markdown prose only, not data; chart and form also exist. |
title |
string | yes | — |
config |
object | no | Type-specific config. Kanban defaults: groupByField "status", cardTitleField "title" — pass those field keys, or override config to match. Notes: config.markdown for prose only. |
fields |
array | no | Column schema at creation (same as bind_data). Prefer this when you already know the columns. Fields alone leave "No rows yet" — call add_rows next. For kanban include a select field matching config.groupByField (default key "status") plus a title field (default key "title"). |
position |
object | no | Grid placement on a 12-column grid. One row unit is ~40px. Omit to auto-place below existing widgets. |
expectedStateVersion |
integer | no | The stateVersion from your latest describe_current_state call. Pass it on static mutations to avoid overwriting a newer human or agent change. If stale, the tool returns STALE_STATE without changing the board. |
rationale |
string | no | One sentence explaining why you are making this change. Shown to the human in the activity log. |
Raw JSON schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"table",
"kanban",
"checklist",
"chart",
"note",
"form"
],
"description": "table = flat records; kanban = pipeline/status board (needs a select groupByField); checklist = todos via add_rows; note = markdown prose only, not data; chart and form also exist."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"config": {
"description": "Type-specific config. Kanban defaults: groupByField \"status\", cardTitleField \"title\" — pass those field keys, or override config to match. Notes: config.markdown for prose only.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"fields": {
"description": "Column schema at creation (same as bind_data). Prefer this when you already know the columns. Fields alone leave \"No rows yet\" — call add_rows next. For kanban include a select field matching config.groupByField (default key \"status\") plus a title field (default key \"title\").",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,39}$",
"description": "Stable snake_case identity for this field."
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Display name shown on the widget."
},
"type": {
"type": "string",
"enum": [
"text",
"number",
"date",
"select",
"boolean",
"url"
],
"description": "Value type. select requires options; other types forbid options."
},
"required": {
"default": false,
"type": "boolean"
},
"options": {
"description": "Required when type is \"select\"; forbidden otherwise.",
"minItems": 1,
"maxItems": 30,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"description": {
"type": "string",
"maxLength": 200
}
},
"required": [
"key",
"label",
"type"
],
"additionalProperties": false
}
},
"position": {
"type": "object",
"properties": {
"x": {
"type": "integer",
"minimum": 0,
"maximum": 11
},
"y": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"w": {
"type": "integer",
"minimum": 2,
"maximum": 12
},
"h": {
"type": "integer",
"minimum": 2,
"maximum": 20
}
},
"required": [
"x",
"y",
"w",
"h"
],
"description": "Grid placement on a 12-column grid. One row unit is ~40px. Omit to auto-place below existing widgets."
},
"expectedStateVersion": {
"description": "The stateVersion from your latest describe_current_state call. Pass it on static mutations to avoid overwriting a newer human or agent change. If stale, the tool returns STALE_STATE without changing the board.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"rationale": {
"description": "One sentence explaining why you are making this change. Shown to the human in the activity log.",
"type": "string",
"maxLength": 300
}
},
"required": [
"type",
"title"
],
"additionalProperties": false
}
Similar websites
econsor.de
German digital agency building portals, e-commerce sites and online marketing, combining strategy, design and AI to grow clients' visibility and customer base.
inkframe-eta.vercel.app
Browser-native Elah video editor for 9:16 and 16:9 exports
agentdesk-demo.vercel.app
Meridian Ops
eworker.ca
E-Worker is business infrastructure powered by AI, with focused apps and connected business work.