> ## Documentation Index
> Fetch the complete documentation index at: https://docs.worksong.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Boards, columns and items

> Column types, views, forms, dashboards, docs and archiving.

This page is the short tour. Each part has its own page: [Columns, formulas and lookups](https://docs.worksong.ai/work/columns-and-formulas.md), [Views, forms and dashboards](https://docs.worksong.ai/work/views-forms-dashboards.md), [Automations reference](https://docs.worksong.ai/work/automations-reference.md) and [People and permissions](https://docs.worksong.ai/work/people-and-permissions.md).

## Column types

Text, Long text, Number, Date, Status, Multi-select, Person, Link, File, Doc, Connect (a relation to another board), Lookup, Formula, AI, Created at and Updated at.

* **Status and Multi-select** have labels you define, each with an optional color.
* **Number** can display as plain digits, a percent or a currency. This changes display only.
* **Connect** links an item to items on another board. **Lookup** reads a column through a Connect.
* **Formula** computes from other columns of the same item. You write column names in square brackets. A formula result is a Number, Text or Date. Renaming a column does not break a formula.
* **AI** columns are filled by an Agent from a prompt, on request, on create or on update.

## Views, forms, dashboards and docs

A board can have several **views** (Table, Kanban, Calendar and Timeline). A **form** creates items on a board. A public form lets people who are not members submit; it runs as a restricted intake member that can only write the form's board and columns, and is rate-limited. A **dashboard** shows widgets such as counts and charts. **Docs** are Markdown documents with their own pages.

## Column summaries

The footer under a column in a table can show a summary of that column. Tap the footer cell and choose one, or choose **No summary**. Only people who may change the column see the choice. The numbers are worked out on the server over every item the table's filter and search keep, not only the rows on your screen, so a board of 20,000 items totals correctly. When the table is grouped, each group header shows the same numbers for that group.

| Column | You can show |
| - | - |
| Any column | Count, Filled, Empty, % filled |
| Text, Status, Person, Connect, Number, Date | Unique values |
| Number and number Formula | Sum, Average, Median, Min, Max, % of total |
| Date, Created at, Updated at | Earliest, Latest, Date range (with the number of days) |
| Status, Multi-select, Person, Connect | Distribution: how many items hold each value, with "No value" last |

* **% of total** is a group's sum as a percent of the whole board's sum.
* A column nobody has set keeps the old **Total** under the first Number column.
* Agents can ask for the same numbers with the MCP tool `boardy_aggregate_items`: `columns` lists the column and function pairs (at most 24), `by` cuts the rows by group or by a column, and `filter` and `search` are the ones `boardy_list_items` takes. `boardy_update_column` takes `summary` to set a column's footer. Over REST it is `GET /v1/boards/{id}/aggregate`.

## Working with items

* **Edit a cell** with `PATCH /v1/items/{id}`, or many cells at once with `POST /v1/items/batch`.
* **Move** an item to another group or place it after another item (`move`, `move-after`). The order of items on a board is kept.
* **Updates** are the comments of an item. They can mention members and carry attachments. Mentioning a member can start an [automation](https://docs.worksong.ai/work/automations-reference.md) or call an [Agent](https://docs.worksong.ai/work/agents.md).
* **Activity** lists what changed on the item and who changed it.
* **Attachments** are added in two steps, upload then finalize. See [Integrations, imports and realtime](https://docs.worksong.ai/work/integrations-and-realtime.md).
* An **AI column** can be filled again with `regenerate`.
* **Docs** are created with a `title` and `content`. To add text, call `POST /v1/docs/{id}/append` with the text and the `expectedVersion` you read. The text is added to the end exactly as given, so start it with a new line if you need one. A stale version is refused so that nobody's edit is lost.
* **Workspaces** are created, renamed, archived and deleted like boards, and have folders.

## Read a board with a query

A board can hold tens of thousands of items, so a client does not need to download it. `GET /v1/boards/{id}/items` (and the MCP tool `boardy_list_items`) take a small versioned `query`, and the server answers it:

* **`filter`** is a tree of `and` / `or` groups (up to 4 deep, 40 conditions). A condition names a column (its id or exact name), an operator that fits the column type (`is`, `anyOf`, `contains`, `gt`, `between`, `relative`, `empty` and more) and a value. Dates such as `@today` use the time zone you send as `tz`.
* **`search`** keeps rows where every word appears in some text cell.
* **`sort`** takes up to 4 keys. Empty cells always come last.
* **`groupBy`** returns the rows group by group. **`sum`** totals Number columns. **`facets`** counts rows for several filters at once, for filter chips.
* **`summary=true`** adds the total, the sums, the group counts and the facet counts for the whole match, not only for the page.
* **Paging** uses an opaque `cursor` (valid only for the same query), or `offset` to jump to row N of the same ordering.

A bad query is a `400` problem response. Without `query`, `summary` or `offset` the route answers exactly as before. The Work app uses this to open a board of 20,000 items on its first rows at once, and keeps the filter, search, sort and grouping in the page address, so a copied link opens the same view for a teammate.

## Groups

A board is split into **groups**: named, coloured sections such as Now, Later and Done. Every board has at least one group, called "Items" by default. A group knows nothing about what its items are.

* In the Table, each group is a section with a header: collapse arrow, colour bar, name and item count. **+** adds an item into that group. The **…** menu is for people who can manage the board.
* You can create, rename, recolour, reorder, duplicate, archive and restore groups. A board always keeps at least one live group, so the last one cannot be archived. A board can have up to 200 groups. Duplicate copies at most 1000 items.
* Move an item to another group in the web app by dragging its row. On a phone use **Move to group** in the item menu.
* Archiving a group archives its items with it. Restoring the group restores only those items; an item you archived on its own stays archived.
* Collapsing a group is remembered per person and per device.
* This is not the same as a view's **Group by**, which sections rows by a Status column and does not change where an item lives.
* API: `GET /v1/boards/{id}/groups`, `POST /v1/boards/{id}/groups`, and `POST /v1/items/{id}/move-to-group`. Agents use `boardy_list_groups`, `boardy_create_group`, `boardy_update_group`, `boardy_archive_group`, `boardy_restore_group`, `boardy_duplicate_group` and `boardy_move_item`. See [Work MCP tools](https://docs.worksong.ai/work/mcp-tools.md).

## Subitems

An item can have **subitems**: a small checklist of steps with a progress count such as "2/4". A subitem is an ordinary item with its own name, Status, comments and activity.

* Open an item and use the **Subitems** section: tick a subitem, open it, or use **…** to rename, move up or down, archive or delete it. **Add** asks for a name.
* In the Table, a row shows a progress badge. On the web, tap it to open the subitems under the row. On a phone the card shows "Subitems 1/3".
* Subitems have one level only. A subitem cannot have subitems.
* Archiving, restoring or deleting the parent item does the same to its subitems. A subitem you archived on its own stays archived when the parent is restored.
* Subitems are kept on a hidden board, so they do not appear in the list of boards or in board search. They do appear in item search.
* Whoever may use a board may use its subitems.
* API: `GET /v1/items/{id}/subitems` and `POST /v1/items/{id}/subitems`. Agents use `boardy_create_subitem` and `boardy_list_subitems`.

## Archive and restore

You can archive items and boards instead of deleting them, and restore them later. Archived items are hidden from the board, search and counts, and cannot be edited until restored. Delete remains available.

<sub>Source: `worksong-ai/worksong:services/work/src/Boardy.Schema/Domain/Column.cs@9f0684f`, `worksong-ai/worksong:services/work/src/Boardy.Boards@9f0684f`, `worksong-ai/worksong:services/work/CLAUDE.md@9f0684f`, `worksong-ai/worksong:services/work/docs/board-query.md@687f1fa`, `worksong-ai/worksong:services/work/docs/board-aggregate.md@9f5aa83`. Docs version: Worksong 2.0 with Work 1.2.</sub>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.