Agents

Two kinds of agent meet UISet. Agents that use your app read it through UI SDK’s agent bridge and work its controls directly. Agents that build your app read UISet’s skill and docs and put the right pieces together.

Agents that use your app

UI SDK’s bridge gives an agent the page as data: each control’s name, value and actions. UISet names every control and gives each kit actions that mean something: a data grid sorts, filters and edits, a scheduler adds events, the rich text editor reads and writes Markdown. Destructive steps carry a confirmation, so a person approves them.

An agent's view
await agent.snapshot()
// [{ ref: "c12", component: "data-grid", label: "Orders", actions: ["sort", "filter", "edit", ...] }, ...]

await agent.act({ steps: [{ ref: "Orders", action: "filter", args: ["Region", "Europe"] }] })

The benchmark

UI SDK measured agents doing a project-settings task with browser tools on another library, and with the bridge on UI SDK. We ran the same comparison on UISet’s own kits: the same tasks, done once by an agent with browser tools (a page snapshot, click, type) and once by an agent with the bridge (snapshot, act, query).

Across 3 tasks on UISet's kits, agents using the bridge made 40% fewer tool calls, read 79% less text and finished 40% sooner than agents using browser tools, and every run of both finished its task (medians of 3 runs each).

Project settings

“Rename the project to Atlas, make it public, move it to Europe, turn on the weekly digest, and save the project.”

Median of runsBrowser toolsUISet and the bridgeChange
Tool calls106−40%
Text read (characters)3.9k3.0k−24%
Time21 s16 s−21%
Tokens, with Claude Code’s own68.9k68.4k−1%
Finished the task3 of 33 of 3

Data grid

“In the Orders grid, show only the orders from Europe, sorted by amount from highest to lowest.”

Median of runsBrowser toolsUISet and the bridgeChange
Tool calls660%
Text read (characters)54.3k9.7k−82%
Time25 s15 s−40%
Tokens, with Claude Code’s own74.1k72.3k−2%
Finished the task3 of 33 of 3

Scheduler

“Add a 30-minute event called Roadmap sync on Wednesday this week, starting at 10:00 AM.”

Median of runsBrowser toolsUISet and the bridgeChange
Tool calls113−73%
Text read (characters)17.5k3.7k−79%
Time30 s13 s−56%
Tokens, with Claude Code’s own70.5k68.8k−2%
Finished the task3 of 33 of 3

Method: Claude Sonnet 5.5, run through Claude Code on 2026-11-15. Both approaches get the same prompt and the same page, and only the tools that approach allows; the harness checks the page afterwards, so a run counts as finished only if the page shows the result. Text read counts the characters the tools returned. Time is the agent’s whole run. Tokens include about 67,000 of Claude Code’s own instructions and tool definitions, the same for both. Claude Code shortens very long command output, so on the data grid the browser agents saw less than the full page snapshot, which favors them. The harness, the prompts and every run’s raw numbers are in the repository.

Let an agent work in your app, and stay in charge

The Agent Console is the human side of the bridge. Risky steps wait for your approval right in the app. Every change the agent makes is listed, highlighted where it happened, and can be undone without losing your own edits. It works with any model. Try a prompt below.

Visibility
Region

Agent

Idle
Agent

Hi. Tell me what to change in the project settings.

Simulated model, no API key. The bridge, approvals, history and undo are real.

pnpm dlx shadcn@latest add superzero11/uiset/agent-console
Agent Console docs

Agents that build your app

Coding agents tend to hand-wire arrow keys and ARIA instead of using the behaviors that already exist. UISet’s skills teach them the items, the skins and the rules, and llms.txt points them at the docs.

Install the skills

One skill for UISet, and one for each kit.

npx skills add superzero11/uiset

Or give it the docs

llms.txt lists every page; llms-full.txt holds them all in one file. Every docs page has its Markdown one click away.

A prompt to start from

Prompt
This project uses UISet (components, kits, templates and themes for Vercel's UI SDK).
Read https://uiset.dev/llms.txt for what's available, and the docs page for each item you use.
Install items with: npx shadcn@latest add superzero11/uiset/<item>
Wrap the app in <UISet skin="base"> from @/components/ui/uiset.
Don't hand-write keyboard handling or ARIA that a UI SDK component covers, and give every control a name.