Kater in your chat: results, comparisons and changes as cards

5 minute read
Yvonne Chou

Most questions about your data now start in a chat with an agent. Until now, an agent that used Kater had to describe a chart in words, paste a table of rows, and explain a change in prose. Large answers did not fit at all: one query reply that returned a single row was 2,173,898 characters long, most of it field menus.

The Kater MCP server now answers with cards. In a host that supports MCP Apps, such as Claude, a result arrives as an interactive chart, a comparison arrives as a row-by-row diff, and every write arrives as a change you can undo.

A compare card in chat: three queries, two with the same numbers and one with 15 cells that differ

Two tools, one vocabulary

The server gives an agent two tools:

  • Run a Command (kater) runs one kater CLI command. It reads anything you can read, and writes only in your own brainstorm folder.
  • Run a Command That Changes Content (kater_apply) runs a command that changes shared content. The agent uses it after you say yes.

Every command your agent runs is a command you can run in a terminal or in the Files terminal. A new CLI command reaches chat with no new MCP tool.

Replies lead with the answer. Rows come in pages of about 30 KB, and Read More Rows (read_rows) reads the next page without running the query again. Field menus and SQL come only when the agent asks for them. The reply that used to be 2,173,898 characters is now 12,904.

When someone already ran a saved query with the same inputs, the agent reads the stored result instead of running it again, and says when the rows were read. Results older than 15 minutes run again in the background.

The cards

Each card is drawn from the same components as the Kater portal.

  • Result: the chart and its rows, from a run of one saved query, drawn with the same chart shell as the portal.
  • Compare: which queries match and which differ, and the cells that differ, from kater compare.
  • Copy: what a workspace copy changed since it was copied, with Compare and Apply.
  • Apply: what applying a copy will change, checked before anything is written.
  • Promotion: a proposal to move a repeated definition into a shared one, with the places it replaces.
  • Page, note and scratch file: a brainstorm page, a Markdown note, or a scratch file’s statements, each with Run.
  • Change: any write that commits, with Undo.

A copy card: Copy of Shop changed two files since it was copied, with Compare and Apply

A comparison of one query in the original and the copy, with each differing Revenue cell shown old and new

Try a change without touching anyone’s work

Each person has a brainstorm folder where their agent can try things without asking. The usual loop for changing a workspace looks like this:

Terminal window
kater brainstorm copy connections/<connection>/workspaces/shop --topic promote_roas
# the agent edits the copy
kater compare --left <copy> --right connections/<connection>/workspaces/shop
kater workspace apply <copy> --dry-run

The copy holds the edits. kater compare runs both sides on the warehouse and pairs their rows, so you see which numbers changed before anything else does. Apply writes the copy’s changes to the workspace through Run a Command That Changes Content, after you agree. A dry run shows each file’s diff first. If a file changed in the workspace after the copy was made, Apply refuses that file and says how to copy again.

An apply card: two files to apply to Shop, one with 15 of 16 rows that differ and one with the same rows

Scratch files, pages and promotions

kater brainstorm show draws a brainstorm page, a note, a scratch file, a workspace copy or a draft app in the chat. A scratch file shows each statement with its own Run.

A scratch file in chat, with three statements that each read the shop model or a warehouse table

kater model promote shows a promotion card: the field it would add to a shared model, its expression, and every place that defines the same thing today.

A promotion card proposing Revenue per Customer as a new field on Shop, replacing one definition

A draft app draws as its pages, and the card says whether each Kater tag on the page can draw.

A draft User Journeys app drawn in chat, with KPIs, a purchase rate chart and a journey flow

How to connect

The Kater MCP server runs locally over stdio with kater serve, or hosted over Streamable HTTP at /mcp behind PropelAuth sign-in. The hosted server checks its own sign-in token and never forwards it.

In the portal, select Ask, then Connect your agent, to copy the MCP address. The skills and workflows in your connection’s library also show up in your agent as MCP prompts. In Claude Code, for example, “Brief me” is /mcp__kater__brief-me.

Current limits

  • Cards need a host that supports MCP Apps. In a host without them, replies from show, compare, model promote and a run of one query carry a link to the same view in Kater.
  • We checked the cards in the MCP Apps reference host and in Claude. Other hosts may draw them differently.
  • Rows held for Read More Rows expire 30 minutes after the last read.
  • Some hosts draw the view full screen over the chat, so details open in place rather than in a new panel.
Ask ChatGPTAsk Claude