Restaged

Give your agents a place to experiment.

A whole synthetic company — its people, repos, tickets, threads, docs and mail — served over the real protocols of 13 vendors that have never heard of each other: Slack, GitHub, Gmail, Drive, Calendar and the rest. Nothing here reaches a real vendor and nothing in it is real, so an agent can read everything, write anything, get it wrong, and reset.

Create a twin See the Northwind twin

No signup, no login, no card. Your own twin of it in milliseconds — private, writable, and gone when the lease runs out.

Nothing above talks to a real vendor. It is one JSON world, projected through 13 wire formats.

13vendors
MCP + RESTand OAuth, per vendor
4companies to twin
55people in the largest

00 · The one rule

Change the host. Change nothing else.

Restaged mirrors each vendor's URL path byte for byte, and those paths collide — Slack, Linear, Discord, Notion, Zendesk and AWS all answer on /mcp; Gmail, Drive and Calendar all answer on /mcp/v1. So every vendor gets its own host, and your config changes in exactly one place.

VendorYour config todayPointed at a twin
Slack mcp.slack.com/mcp northwind-mcp-slack.sandbox.restaged.dev/mcp
GitHub api.githubcopilot.com/mcp/ northwind-mcp-github.sandbox.restaged.dev/mcp/
Gmail gmailmcp.googleapis.com/mcp/v1 northwind-mcp-gmail.sandbox.restaged.dev/mcp/v1
Drive drivemcp.googleapis.com/mcp/v1 northwind-mcp-drive.sandbox.restaged.dev/mcp/v1
Calendar calendarmcp.googleapis.com/mcp/v1 northwind-mcp-calendar.sandbox.restaged.dev/mcp/v1
Linear mcp.linear.app/mcp northwind-mcp-linear.sandbox.restaged.dev/mcp

…and 4 more. Same for REST: set GITHUB_API_BASE and keep the vendor's paths. OAuth is there too — each one runs the real flow and approves whoever asks, because there is no account here and therefore nothing to phish.

01 · Pick

Pick a company to twin

Every one is a whole workspace, not a fixture per tool: the same people, the same week, the same story, seen from 13 sides. Each is already running as a public, read-only twin you can walk into right now — and a click gives you a private, writable one of your own, so nobody rewrites the demo you are in the middle of.

Acme

acme.test

Acme is a small engineering org shipping a web app and a data pipeline. This simulated workspace captures a few hours around a production incident — a failed deploy, the scramble to roll it back, and the follow-up.

  • 4 people
  • 3 Slack channels
  • 2 repos
  • 3 orders
  • 3 support tickets
  • 4 Linear issues

SlackGitHubGmailDriveCalendarLinearDiscordJiraConfluenceNotionSalesforceZendeskAWS

Private, writable, and yours for 1 day.

Cascade Works

cascadeworks.test

Cascade Works is a 50-person B2B SaaS company selling field-service management software to HVAC, plumbing and electrical contractors. This simulated workspace is a whole operating company mid-quarter — every department at once: engineering shipping the…

  • 55 people
  • 37 Slack channels
  • 7 repos
  • 31 Linear issues
  • 38 Jira issues
  • 52 Confluence pages

SlackGitHubGmailDriveCalendarLinearDiscordJiraConfluenceNotion

Private, writable, and yours for 1 day.

Helios Analytics

helios.test

Helios Analytics is a product-analytics SaaS. Customer orgs pipe events in and pull them back out as exports. This simulated workspace captures a SEV1 the day a customer reported seeing another company's data — a cross-org export IDOR plus a public storage…

  • 6 people
  • 4 Slack channels
  • 1 repos
  • 5 Linear issues
  • 4 Drive files
  • 1 mail threads

SlackGitHubGmailDriveCalendarLinearDiscord

Private, writable, and yours for 1 day.

Northwind

northwind.test

Northwind Traders imports and distributes speciality food and drink — 77 lines across eight categories, from 29 suppliers, to 91 wholesale and retail customers in 21 countries.

  • 23 people
  • 13 Slack channels
  • 3 repos
  • 830 orders
  • 12 support tickets
  • 5 Linear issues

SlackGitHubGmailDriveCalendarLinearDiscordJiraConfluenceNotionSalesforceZendesk

Private, writable, and yours for 1 day.

Your company

soon

None of these is your company. A bespoke twin is one built to your shape — your teams, your repo names, your tools, and the incident you actually need an agent to work through — served over the same 13 vendors, behind the same one-line host swap.

In the works. See what goes into one.

02 · Point

Point your agent at it

Creating a twin hands you this block with its own hostnames in it. Below is the public, read-only Northwind — paste it and your agent is connected to all of them at once.

.mcp.json
{
  "mcpServers": {
    "slack": {
      "type": "http",
      "url": "https://northwind-mcp-slack.sandbox.restaged.dev/mcp"
    },
    "github": {
      "type": "http",
      "url": "https://northwind-mcp-github.sandbox.restaged.dev/mcp/"
    },
    "gmail": {
      "type": "http",
      "url": "https://northwind-mcp-gmail.sandbox.restaged.dev/mcp/v1"
    },
    "drive": {
      "type": "http",
      "url": "https://northwind-mcp-drive.sandbox.restaged.dev/mcp/v1"
    },
    "calendar": {
      "type": "http",
      "url": "https://northwind-mcp-calendar.sandbox.restaged.dev/mcp/v1"
    },
    "linear": {
      "type": "http",
      "url": "https://northwind-mcp-linear.sandbox.restaged.dev/mcp"
    },
    "discord": {
      "type": "http",
      "url": "https://northwind-mcp-discord.sandbox.restaged.dev/mcp"
    },
    "jira": {
      "type": "http",
      "url": "https://northwind-mcp-jira.sandbox.restaged.dev/v1/mcp"
    },
    "confluence": {
      "type": "http",
      "url": "https://northwind-mcp-confluence.sandbox.restaged.dev/v1/mcp"
    },
    "notion": {
      "type": "http",
      "url": "https://northwind-mcp-notion.sandbox.restaged.dev/mcp"
    },
    "salesforce": {
      "type": "http",
      "url": "https://northwind-mcp-salesforce.sandbox.restaged.dev/platform/mcp/v1/platform/sobject-reads"
    },
    "zendesk": {
      "type": "http",
      "url": "https://northwind-mcp-zendesk.sandbox.restaged.dev/mcp"
    }
  }
}

No MCP client? Change the base URL instead — the same world is served as each vendor's own REST, with the vendor's paths underneath it.

environment
GITHUB_API_BASE=https://northwind-api-github.sandbox.restaged.dev
DRIVE_API_BASE=https://northwind-api-drive.sandbox.restaged.dev
GMAIL_API_BASE=https://northwind-api-gmail.sandbox.restaged.dev
LINEAR_API_BASE=https://northwind-api-linear.sandbox.restaged.dev
DISCORD_API_BASE=https://northwind-api-discord.sandbox.restaged.dev
CALENDAR_API_BASE=https://northwind-api-calendar.sandbox.restaged.dev
JIRA_API_BASE=https://northwind-api-jira.sandbox.restaged.dev
CONFLUENCE_API_BASE=https://northwind-api-confluence.sandbox.restaged.dev
NOTION_API_BASE=https://northwind-api-notion.sandbox.restaged.dev
ZENDESK_API_BASE=https://northwind-api-zendesk.sandbox.restaged.dev
SALESFORCE_API_BASE=https://northwind-api-salesforce.sandbox.restaged.dev

03 · Ask

Ask it something only a colleague would know

The answer has to be assembled out of four tools, which is the part a single-vendor mock cannot test.

  • Acme · NorthwindWhy did the last deploy fail, who is on it, and what have they tried?
  • Cascade WorksWhich teams are blocked on the release, and what did each of them say about it this week?
  • Helios AnalyticsWhat happened here, who is handling it, and what is still open?

04 · How it works

Not a mock server. A mock company.

One world, 13 faces

All 13 vendors read the same in-memory object. Ask Slack who reported the incident and ask GitHub who filed the issue and you get the same person, because there is only one person. Cross-vendor answers are consistent by construction, not because somebody keeps 13 fixtures in sync.

Two protocols, same data

MCP for clients like Claude Code, and the vendor's own REST for agents that curl. The format is a label in the hostname — -mcp- or -api- — so the real gh CLI works against a twin's GitHub without knowing anything has changed.

A clock that moves

Timestamps are anchored to now, not to the day the fixture was written, so "yesterday's deploy" is always yesterday. Worlds reset in milliseconds, and a trigger can change one under a running agent — the thing you cannot do with a recorded transcript.

05 · Where it stops

Four things this isn't

  • Not vendor-complete. These are deliberate semantic subsets. An endpoint we have not built returns the vendor's own 404 shape and lands in restaged coverage — so you find out in seconds, not in production.
  • Not every vendor in every company. AWS, Salesforce, Zendesk, Jira, Confluence, Notion are seeded by some companies and not others — Cascade Works and Helios Analytics and Northwind answer AWS empty, for instance. Each tile above lists what its world actually seeds; a vendor with nothing behind it is never advertised.
  • Not writable in public. The public twins are served read-only, so a write gets the vendor's own permission error — still realistic training. Create your own to write.
  • Not a place for real data. Nothing here is authenticated and nothing here is private. Sandboxes are unauthenticated by design, capped, and reaped when the lease ends.

06 · The guarantee

It says simulated on every page. That is the feature.

The apps inside a twin look like the products they imitate, because an agent that has only seen tidy mock data has not been tested. That realism is worth exactly nothing if it can be turned into a phishing page, so the line is drawn in four places and none of them move.

  • No vendor name, logo or wordmark inside any workspace. The layout is the genre; the branding is ours.
  • A simulation bar on top of every page, always, including this one.
  • No login screen. Ever. There is no password field anywhere in Restaged — you pick who you are from a list, because none of these people are real.
  • Hostnames that give it away: northwind-app-slack.sandbox.restaged.dev. This page is the only thing here a search engine is allowed to keep; every page under sandbox.restaged.dev is served noindex.

Inspired by Westworld, and honest where it wasn't: the hosts look real, the world is a set, and everybody who works there knows it.