WorkspaceBench: Measuring Agents That Operate OpenBB Workspace
A few weeks ago at NY Tech Week I gave a talk on centralizing dashboards and agentic workflows in OpenBB Workspace. At the end I talked about how I'm seeing more analysts and quants using Claude Code and Codex to drive their work - and so we need to adapt the workspace to make it agent first.
And this is why we had just announced Workspace MCP, which enables agents to work with the workspace by reading data, building dashboards, and assembling whole apps.
If agents are going to drive this workspace for real analysts, we (OpenBB) need to find a way to measure how well they can navigate our software. And by navigate I mean being able to inspect data, call right tools, change widget parameters, build a dashboard, add new widgets on the dashboard, leverage skills, etc..
This has lead me to build WorkspaceBench.
It includes the harness, a deterministic workspace simulator, 300 different synthethically generated scenarios, graders, and everything else. The Stark Industries mock enterprise apps, which I used for the demo above, is where the benchmark's scenarios come from — the same widgets and apps, turned into tasks.
Why a benchmark
The workspace was built on a lot of feedback from users (and a few millions in R&D). An agent driving it over Workspace MCP leaves (kinda) similar traces to a person and acts on the same durable state - the dashboards, widgets, and apps.
But the feedback loop is different.
Humans drive with a mouse, and you can infer a lot from it: hesitation, rage clicks, even aha moments. When I see how a user utilizes the workspace, I can immediately spot paper cuts or ways to improve the product, without the user even raising these. And then I can always ask the user directly about their experience - well, not always, but often!
An agent doesn't give me this. It won't hover around like a human would and I can't ask that agent what it was trying to do at that time. Although, the actions (via MCP tools) are legible, they state exactly what it's doing, but without knowing what it was trying to accomplish, I can't tell the overall goal.
A benchmark fixes that half: I wrote the task, so intent is known by construction. And once intent is pinned down, I can run multiple rollouts (from different models) to understand how they get that task done; and as a byproduct where they succeed or fail.
There are many benches in the wild. Some relevant ones:
- SWE-bench (Jimenez et al., 2023) — resolve a real GitHub issue, graded on whether the patch passes the tests.
- Terminal-Bench — finish a task in a shell, graded on what actually happened.
- WebArena (Zhou et al., 2023) — reach a goal across real websites, verified programmatically.
- OSWorld (Xie et al., 2024) — full desktop tasks across real applications.
Each of these allows labs to represent via a single number how good their model is at that specific domain. (Debatable if this is a good thing or not, particularly with test-time scaling)
With WorkspaceBench I'm trying to assess how a model can operate our financial workspace with the MCP tools we offer.
A few of the things I'm looking to get out of this:
- Finding workspace bugs. Our own test suite catches most of those already, so I don't expect to run into many here - but you never know.
- Where the tool surface can be improved — the schemas, names, and error messages they models trip on. This is the biggest lever, because fixing the MCP surface once makes every agent better at the same time. At the same time you don't want to overfit the tools to a small 8b model, as this can impact performance of a bigger model.
- Which models I can honestly recommend. When a user asks which agents can drive their workspace best, I'd love to be able to point to some hard data rather than vibes.
- What to train on. With every run we have a full graded trace, and those traces could potentially be used to post-train a small, cheap model to drive the workspace. Could we push to HuggingFace a small agent that clients can run in their own environment to navigate their workspace.
Then, this also can work as a way to catch regressions as the product surface increases with new features, or we add more MCP tools.