Template
Kanban board widget for MCP Apps
Show work grouped by status right inside the conversation. The model sorts your tasks into columns and the board draws them as cards with labels, dates and people.
Where are we with the beta launch? Show me the board before the stand-up.
Used show_kanban
The house design: black outline, butter yellow and a marker swipe under the title.
The data it takes
| Field | Type | What it is |
|---|---|---|
| titlerequired | string | Board name |
| subtitle | string | |
| columnsrequired | object[] | |
| └ namerequired | string | |
| └ cardsrequired | object[] | |
| └ titlerequired | string | |
| └ due | string | ISO 8601 date |
| └ members | string[] | Full names |
| └ labels | object[] | |
| └ namerequired | string | |
| └ color | string | Any CSS color. Optional: without it the label takes a color of the design palette |
Sample data
{
"title": "Beta launch",
"subtitle": "Product team",
"columns": [
{
"name": "To do",
"cards": [
{
"title": "Write the pricing page",
"labels": [
{
"name": "Web"
}
],
"members": [
"Anna Reed"
]
},
{
"title": "Prepare the investor demo",
"due": "2026-10-09",
"labels": [
{
"name": "Sales"
}
]
}
]
},
{
"name": "In progress",
"cards": [
{
"title": "MCP endpoint per organization",
"due": "2026-10-05",
"labels": [
{
"name": "Backend"
}
],
"members": [
"Luke Grant",
"Martha Sands"
]
},
{
"title": "Launch video",
"labels": [
{
"name": "Marketing"
},
{
"name": "Sales"
}
],
"members": [
"Martha Sands"
]
}
]
},
{
"name": "Done",
"cards": [
{
"title": "Template gallery",
"labels": [
{
"name": "Web"
}
],
"members": [
"Anna Reed",
"Luke Grant"
]
}
]
}
]
}The tool that shows it
A widget made from this template is shown by one tool. The model reads its description to decide when to call it and fills the input schema with the data. This is the definition Widgetry exports:
{
"name": "show_kanban",
"title": "Board",
"description": "Shows a kanban board: columns with cards, each card with optional labels, due date and assignees. Use it to display tasks, tickets or any work grouped by status.",
"inputSchema": {
"type": "object",
"required": [
"title",
"columns"
],
"properties": {
"title": {
"type": "string",
"description": "Board name"
},
"subtitle": {
"type": "string"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"cards"
],
"properties": {
"name": {
"type": "string"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"type": "string"
},
"due": {
"type": "string",
"description": "ISO 8601 date"
},
"members": {
"type": "array",
"items": {
"type": "string"
},
"description": "Full names"
},
"labels": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"color": {
"type": "string",
"description": "Any CSS color. Optional: without it the label takes a color of the design palette"
}
}
}
}
}
}
}
}
}
}
}
}
}More templates
- Aurora cardA featured announcement with a headline, a figure and a button, dressed differently by each design.
- 3D globeA WebGL globe with three.js that spins on its own and can be dragged, with a dot per place.
- WeatherThe weather for a place with animated SVG icons and the coming hours; each design paints its own sky.
- Progress ringsGoals as SVG rings that fill up as they appear, with their percentage.
- Area chartA series over time as an SVG curve with a gradient fill that draws itself in.
- 3D carouselCards on a ring that spins in 3D with CSS perspective. Pauses on hover.
- CountdownDays, hours, minutes and seconds to an event, ticking live with a little jump.
- MilestonesFigures that count up from zero and cascade in, animated with GSAP.
- DonutParts of a whole with Chart.js: animates in and responds to the mouse.
- MetricsA row of key figures with their change against the previous period.
- Bar chartHorizontal bars with their values, in the order they arrive.
- TableRows and columns with a sticky header; the caller decides the columns.