A simulated workplace for AI agents.
Let your agent act and learn without breaking real integrations. The tools behave like production and the data looks real. Every run comes back with a full trace and an evaluation that shows what to improve.
Works with any tool-calling agent, over API or MCP.
Hover overTap a numbered agent to see what it is working on.
- OpenAI Agents SDK
- Claude Agent SDK
- LangGraph
- Vercel AI SDK
- Mastra
- CrewAI
- or any agent that calls tools over HTTP
You cannot test an agent on the real thing.
An agent does its work inside live systems: inboxes, calendars, documents, chat. Testing it there is slow, unsafe and impossible to repeat, so most teams ship on a demo and a feeling.
Not repeatable
Live systems change under you. You cannot tell a regression from a different day.
Hard to evaluate
Did it finish the task, or just stop? With live systems you read logs and guess.
Risky
A test run that emails a customer or deletes a document is not a test.
Build, run, evaluate.
Three steps. Every run returns one object with the trace and the evaluation.
A few lines to a first run.
Your agent runs where it already runs. Create a run, point your agent at its tools, and read back the trace and the evaluation on one object.
Docs and API reference. The SDKs are coming.
curl -X POST https://api.testworld.dev/v1/runs \
-H "Authorization: Bearer $TESTWORLD_KEY" \
-d '{"environment": "offsite-planning",
"task": "Schedule the Q4 offsite"}'
# {"id": "run_7f3a", "tools_url": ".../runs/run_7f3a/tools", ...}
# point your agent at tools_url, then read the result:
curl https://api.testworld.dev/v1/runs/run_7f3a \
-H "Authorization: Bearer $TESTWORLD_KEY"
# {"status": "done", "trace": {...}, "evaluation": {"score": 1.0, ...}}
from testworld import Environment, run
env = Environment.from_template("offsite-planning")
result = run(env, agent=my_agent,
task="Schedule the Q4 offsite")
print(result.score, len(result.trace)) # 1.0 5
import { Environment, run } from "testworld";
const env = await Environment.fromTemplate(
"offsite-planning");
const result = await run(env, { agent: myAgent,
task: "Schedule the Q4 offsite" });
console.log(result.score, result.trace.length); // 1.0 5
One run, end to end.
The agent gets a task, works through the office, and comes back with a trace and an evaluation.
| # | Tool | Action | Result | Time |
|---|---|---|---|---|
| 1 | Read thread “Q4 offsite” | 3 messages, two dates proposed | 1.8 s | |
| 2 | Check availability for 6 people, Nov 12–14 | Nov 13 free for everyone | 2.1 s | |
| 3 | Post date poll in #leadership | 6 of 6 reacted | 3.4 s | |
| 4 | Create “Q4 offsite”, Nov 13, all day | Event created, 6 invites sent | 1.2 s | |
| 5 | Post the date and agenda in #general | Posted, 6 people notified | 2.6 s | |
| Evaluation | Event exists#general toldNo email sent | 1.0 | ||
The tools you can simulate.
Each tool is seeded with realistic data and reset between runs. Missing one? Request a tool
Gmail
Inbox, threads, labels, drafts and send
Slack
Channels, threads, DMs, reactions, search
Notion
Pages, databases, properties, comments
Calendar
Events, invites, availability
Drive
Files, folders, sharing, document text
100+ more via Composio
GitHub, Linear, Jira and the rest of the catalog
What you can use it for.
Start with one. All three run on the same seeded office.
Regression suites before release
Forty tasks, the same seeded office, run on every version. A score that drops tells you which change broke what.
Model and prompt comparisons
Same task, same data, different agent. Compare traces side by side instead of arguing from one demo.
Training data from real behaviour
Failed runs become test cases, good runs become examples your agent learns from. Export is coming.
Questions
The short answers. The long ones ship with the docs.
Does the agent know it is simulated?
No. The tools expose the same APIs and data shapes as the real ones, so your agent calls them the way it would in production.
Which agent frameworks work, and where does my agent run?
Your agent runs where it already runs, on your machine or your servers. testworld hosts the tools. Create a run over HTTP and point your agent at its tools address, or connect an MCP client to the run's MCP address. The agent only swaps its base URL and key.
Can I use my own data?
Templates come seeded and ready. Importing your own anonymised data comes later.
How is a run evaluated?
Each template ships with checks on the end state: did the event get created, was #general told, was no email sent. You can add your own. The score is the share of checks that passed, with a one-line note on each.
Can the agent learn from runs?
Export is coming. Then failed runs become regression cases and good runs become examples or training data.
Does anything reach real systems?
No. Each run gets its own isolated environment with seeded data and no real credentials. Nothing the agent does leaves it. Traces belong to your workspace and are stored in the EU.
What does it cost?
Early access is free while we onboard the first teams. After that you pay per call to the simulated tools, with monthly plans and a free plan.
Industry packs. Same traces, same evaluations.
A simulated office with the systems your kind of business uses. Accounting first: Tripletex, Fiken and PowerOffice.
A simulated workplace for AI agents.
Get early access. We are onboarding a few teams at a time.