Filterable List

A list of items, each with a title, an optional detail line and a status or category, above a row of chips (All plus one per status, with counts) that actually filter it. Tapping a chip shows only the matching rows and updates the "Showing X of Y" count. Self-contained, so it works without any other atom; on a static surface it degrades to the full list.

Surfaces
webmcp-appsandroid
Live preview
Showing 2 of 2
Nothing matches this filter.
Fields
FieldTypeRequired
titlestring (optional, heading above the list)optional
itemsarray (required). Array of {title (or name), detail? (or subtitle), status? (or whichever field filter_field names), meta? (right-aligned small text), icon? (an emoji)}. Items with no value for the filter field show only under All.required
filter_fieldstring (optional, default "status"). Which item field the chips filter on, e.g. "category" or "assignee".optional
filtersarray. Chips to show, as plain strings or {value, label?, color? (hex)}. Default: one chip per distinct value, in first-seen order.optional
colorsobject. Map from a status or category value to a hex colour for its chip and row badge. Default: a distinct colour per chip.optional
show_countsbool (optional, default true). Show how many rows each chip matches.optional
empty_textstring (optional, shown when a filter matches nothing)optional
Example payload
{
  "type": "filterable_list",
  "items": [
    {
      "label": "Item 1"
    },
    {
      "label": "Item 2"
    }
  ]
}
ARD catalog entry
{
  "identifier": "urn:air:a2uicatalog.ai:atom:filterable_list",
  "displayName": "Filterable List",
  "type": "application/vnd.a2ui.atom+json",
  "url": "https://a2uicatalog.ai/atoms/filterable_list",
  "capabilities": [
    "web",
    "mcp-apps",
    "android"
  ],
  "description": "A list of items, each with a title, an optional detail line and a status or category, above a row of chips (All plus one per status, with counts) that actually filter it. Tapping a chip shows only the matching rows and updates the \"Showing X of Y\" count. Self-contained, so it works without any other atom; on a static surface it degrades to the full list.",
  "representativeQueries": [
    "show a list with status chips that filter its rows \u2014 items with title, detail, status; All plus one chip per status, with counts",
    "a list of items, each with a title, an optional detail line and a status or category, above a row of",
    "render a filterable list"
  ]
}
← Full ARD catalog
Deploy your own Google Apps Script renderer

The renderer is an open-source Google Apps Script web app. Deploy your own instance in 4 commands — you own the URL, no dependency on the demo endpoint.

git clone https://github.com/a2uicatalog/a2ui
cd a2ui/apps-script-surface/gas-wired-renderer
clasp push && clasp deploy
Full deploy guide →