Sandbox
A sandbox organization to build your integration against, with vehicles, offers, a closing, a CRM book and a buy plan already in it, a key with every scope, and a reset your agent can call.
TL;DRAI summary
You can use a sandbox, a test version of Cypress, to experiment and build integrations without affecting real customer data or billing. It includes sample vehicles, offers, and other data you can practice with.
Before you touch a real fleet, build against a sandbox: an organization of its own, already holding something of everything the API reaches, with a key that has every scope. Ask your Cypress contact for one: they make it in Cypress (Settings › Developers › Sandboxes) and hand you its test key with the MCP configuration that uses it. Since 1.5.0.
A sandbox's key is a test key: it starts with cyp_test_, and it acts only
on the sandbox. A live key (cyp_live_) acts only on a live organization, and
either one used on the other answers 403 KEY_ENVIRONMENT. Never use a live
key for testing. See Live and test keys.
What is in it
| What | Details |
|---|---|
| Sell vehicles | 11 cars and vans in Texas. Eight unlisted (DRAFT): a Camry, a Malibu, a Sentra, a Transit, a RAV4, a ProMaster, an Accord, an F-150. Two on the market (LISTED, an active listing each): a 2023 Tucson at $27,900 (floor $25,500) and a 2022 Sportage at $23,500 (floor $21,000). One sold (OFFER_ACCEPTED): a 2021 Grand Cherokee, in its closing |
| Offers | Three waiting (NEW) from a demo dealer, Sandbox Buyer Motors: $26,800 and $24,000 on the Tucson, $23,500 on the Sportage. One accepted: $29,800 on the Grand Cherokee |
| A closing | The Grand Cherokee's: the commission settled, the Bill of Sale signed by your side and waiting on the buyer's signature, a day overdue. Not your turn: the buyer's |
| Planning stock | 4 planning-only vehicles; the Sell plan opens itself on your first GET /api/v1/planning/plan |
| CRM book | 2 businesses, 4 contacts, 1 deal, 3 tasks |
| Buy plan | The quarter in progress: a goal of 12 units, a $300,000 budget, and 2 targets (Toyota Camry, Ford F-150) |
| Products | Planning, Buy planning and Automations are on |
| Your own ids | Every vehicle carries a unit number under the source sandbox-dms (U-1001 to U-1011, and U-2001 to U-2004 for planning stock); the CRM book under sandbox-crm (B-100, C-101, D-100, T-1…) |
New to it? The MCP quickstart connects an agent to a sandbox and walks through its first ten minutes. Over REST, try a lookup by your own id first:
curl -H "x-api-key: $SANDBOX_KEY" "$SANDBOX_URL/api/v1/contacts?externalId=sandbox-crm:C-101"How it behaves
The sandbox follows exactly the rules every organization does: the same validation, refusals, idempotency keys, webhooks and MCP servers. It is a demo organization: its listings match only other demo dealers, and its vehicles never reach a real dealer's matches or alerts.
Nothing reaches a real person. The acts that tell someone outside Cypress something are checked exactly as on a live organization (the same rules, consent and refusals), then recorded instead of sent, and answered with what they would have sent:
| Act | Endpoint | MCP tool |
|---|---|---|
| Email a contact | POST /api/v1/contacts/{id}/outreach | email_contact |
| Send a campaign now | POST /api/v1/campaigns/{id}/send | send_campaign_now |
| Remind a closing step | POST /api/v1/closings/{id}/steps/{stepKey}/remind | remind_closing_step |
| Ask for a closing document | POST /api/v1/closings/{id}/document-requests | request_closing_document |
| Re-send a signing link | POST /api/v1/closings/{id}/documents/{documentId}/signatures/{party}/resend | resend_signing_link |
{ "simulated": true, "act": "send_campaign_now", "would": { "id": "…", "recipientCount": 4 }, "message": "Partner Sandbox is a sandbox: this was recorded, not sent." }Each one is kept in the sandbox's audit trail (sandbox.simulated_<act>). A
refusal is still a refusal: an email an API key may not send is 403 PEOPLE_ONLY in a sandbox too.
Nothing is billed. Accepting a sandbox offer opens a closing as it would anywhere, but its commission step completes as settled, with no invoice: a sandbox never reaches Cypress's billing.
The MCP servers say where a connection acts: on a
sandbox's key, initialize and server/discover name it a SANDBOX (the
server's title ends in "(sandbox)", _meta carries
"ai.getcypress/environment": "SANDBOX", and the instructions open by saying
nothing reaches real people), so an agent may try every write tool.
Starting over
Reset it yourself, or let your agent: POST /api/v1/sandbox/reset, or the
MCP tool reset_sandbox (through run_destructive with the core tools). The
sandbox's vehicles, offers, closings, CRM book and plans go back to the world
above. The key keeps working, and so do the apps you connected and their
agents. ?dryRun=true says what it holds now and what a reset puts back. One
reset a minute; a live organization is never reset (403 KEY_ENVIRONMENT).
curl -X POST -H "x-api-key: $SANDBOX_KEY" "$SANDBOX_URL/api/v1/sandbox/reset"If the key may have leaked, ask your Cypress contact: their reset, in Settings › Developers › Sandboxes, gives the world back with a new test key, and the old key stops working.
A sandbox is never one of Cypress's customers: it appears in no report and in no book of accounts.
Evaluations
A set of tasks to measure an agent working in Cypress, each with what a good run does, what it must never do, and the read that proves it. Run them in a sandbox.
Connect Cypress
Let an organization's admin connect your app to Cypress, sign in every member of that organization as themselves, get tokens for the agents your app adds, and know who is using your app.