MCP quickstart
Connect an AI agent to a Cypress sandbox in about ten minutes. List the fleet, put a car on the market with a dry run first, and meet a decision Cypress keeps for a person.
TL;DRAI summary
This chapter helps you connect an AI agent to a Cypress sandbox organization. A sandbox uses made-up data so you can safely explore how an agent works with Cypress features like managing your fleet, listings, and offers.
By the end of this page an AI agent will be working in a Cypress organization of its own, a sandbox: made-up data, every tool open, and nothing reaching a real dealer, buyer or contact. Everything it does there works the same way in a live organization. You need an MCP client (Claude Code, Cursor, Claude Desktop or any other) and about ten minutes.
0. Try the Manual first (no key)
The Cypress Manual server searches and reads these docs. It holds no customer data and takes no credential, so it is the quickest way to see an agent work with Cypress:
claude mcp add --transport http cypress-manual https://app.getcypress.ai/api/mcp/manualAsk your agent "How do I connect an agent to Cypress?". It calls
search_manual, then read_manual_page, and answers from this documentation.
1. Get a sandbox
Ask your Cypress contact for a sandbox. A Cypress Manager makes it in Settings › Developers › Sandboxes and hands you three things:
- a test key, starting
cyp_test_, shown once. It acts on the sandbox only: a test key used on a live organization, or a live key on a sandbox, answers403 KEY_ENVIRONMENT; - the addresses of the two servers that need it, Cypress Operate (work in the organization) and Cypress Intelligence (read what Cypress knows);
- the commands that connect Claude Code to them:
claude mcp add --transport http cypress-operate "https://app.getcypress.ai/api/mcp/operate" --header "Authorization: Bearer cyp_test_…"
claude mcp add --transport http cypress-intelligence "https://app.getcypress.ai/api/mcp/intelligence" --header "Authorization: Bearer cyp_test_…"The sandbox already holds eleven cars and vans (eight unlisted, two on the market with offers waiting from a demo dealer, one sold and in its closing), four planning vehicles, a small CRM book (two companies, four contacts, a deal and three tasks) and a buy plan. Everything is listed in Sandbox.
2. Connect your client
Every client needs the same two things: the server's address, and the header
Authorization: Bearer cyp_test_….
Run the two commands from step 1, then claude mcp list to see them
connected.
Add the servers to ~/.cursor/mcp.json. Use the file in your home
folder, not the project's: a key in the project's file is one git add
away from being published.
{
"mcpServers": {
"cypress-operate": {
"url": "https://app.getcypress.ai/api/mcp/operate",
"headers": { "Authorization": "Bearer cyp_test_…" }
}
}
}Claude Desktop starts local servers, so a small bridge,
mcp-remote, carries the
header to Cypress. In claude_desktop_config.json (on a Mac,
~/Library/Application Support/Claude/):
{
"mcpServers": {
"cypress-operate": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://app.getcypress.ai/api/mcp/operate", "--header", "Authorization:${CYPRESS_AUTH}"],
"env": { "CYPRESS_AUTH": "Bearer cyp_test_…" }
}
}
}The header has no space after the colon on purpose: on Windows, Claude Desktop passes a space inside an argument badly. The space lives in the variable instead. Restart Claude Desktop to load it.
Transport Streamable HTTP, the address, and the header. To look at the
tools one at a time before giving them to an agent, run the MCP Inspector
(npx @modelcontextprotocol/inspector), choose Streamable HTTP, paste the
address and add the header.
Check where you are. The client shows the server as Cypress Operate (sandbox), and the instructions it hands the agent say "…a SANDBOX organization: its data is made up and nothing reaches real dealers, buyers or contacts…". On a live organization the title has no "(sandbox)": that is how an agent, and you, can always tell the two apart.
The agent is shown Cypress's core tools:
thirteen tools for the everyday work, and every other operation through
discover. Nothing to ask for: they are the default.
3. Look around
Ask "What's in our fleet?". The agent calls find with type: vehicle and
limit: 20 (a page holds 10 unless it asks for more), and finds eleven cars
and vans, all in Texas: eight unlisted (DRAFT), a Camry, a
Malibu, a Sentra, a Transit, a RAV4, a ProMaster, an Accord and an F-150; a
Tucson and a Sportage on the market (LISTED); and a Grand Cherokee already
sold (OFFER_ACCEPTED), in its closing.
Your own systems have their own ids for records, and Cypress keeps them. Ask
"Who is contact C-101 in our CRM?". The agent looks the record up by your id:
find with type: contact and externalId: "sandbox-crm:C-101" finds
Maria Delgado at Lone Star Auto Group. See Your own ids.
4. Put the Camry on the market, dry run first
Ask "List the 2022 Camry at $24,500 with a $22,000 floor, live now. Do a dry
run first." Every write takes dryRun: the same checks as the real call,
nothing written. The agent calls launch with dryRun: true:
{
"dryRun": true,
"wouldCreate": { "vehicleId": "…", "channels": ["MARKETPLACE"], "listingMode": "IMMEDIATE", "floorPrice": 22000, "buyNowPrice": 24500 },
"launch": { "wouldLaunch": false, "alreadyLive": false, "missing": ["condition"], "blocked": "missing condition to go live" }
}The car can't go live without its condition. Tell the agent it is in good
condition: it finds the operation with discover ("edit a vehicle"), then
calls run_write with edit_vehicle and condition: "GOOD". It runs the dry
run again ("wouldLaunch": true), then makes the real call. Cypress answers
with the listing, "status": "ACTIVE" and "launched": true, and the Camry is
now LISTED.
Retries are safe. A good agent sends an idempotencyKey with every write.
If the connection drops and it sends the same call again with the same key,
Cypress answers the first answer and lists the car once.
In a sandbox the listing is real but only demo dealers see it: no real buyer will ever see a sandbox car.
5. Meet a decision a person keeps
Ask "Email Maria the Q4 sedan list." The agent calls run_write with
email_contact, and Cypress does not send anything:
{
"status": "NEEDS_PERSON",
"code": "PEOPLE_ONLY",
"message": "An email in your organization's name goes out from a person. Log what happened, or give a person the task.",
"decisionLink": "/go/contact/…"
}Some decisions are always a person's, whoever asks: an email in your
organization's name, an offer below the floor, approving a quarter's plan,
and others. The agent gets a link to the record in Cypress so it can hand the
decision over. Here it does what the message suggests and calls log with
kind: task: "Send Maria the Q4 sedan list", on her contact, for a person to
pick up. What an agent may and may not do is in
What an agent can and cannot do.
6. Look at the offers
Ask "What offers are waiting?". The agent calls find with type: offer and
status: NEW: three, $26,800 and $24,000 on the Tucson and $23,500 on the
Sportage. Never the buyer's name: Cypress does not tell a seller who the buyer
is.
Ask "Accept the $24,000 offer on the Tucson." The agent calls answer_offer
with answer: accept and a dry run. The Tucson's floor is $25,500, so Cypress
answers NEEDS_PERSON, with PEOPLE_ONLY and the words "Accepting an offer
below the floor is for a person at the seller, never an integration or an
agent.", and a link to the offer. The other two are at or above their floors,
so an agent may accept or counter them.
7. Take a car off the market for a while
Ask "Take the Camry off the market for now, it's going back on rent." The
agent finds pause_vehicle with discover and runs it with run_write, the
same Pause as the vehicle's page in the app:
{ "success": true, "status": "ON_HOLD", "offersWithdrawn": 0 }A pause withdraws any open offers and tells the buyers, so the answer says how many it withdrew.
Start over
The agent can put the sandbox back as it was made at any time:
run_destructive with reset_sandbox (or POST /api/v1/sandbox/reset). The
same test key keeps working, and the apps you connected stay connected. One
reset a minute.
If the key may have leaked, ask your Cypress contact instead: their reset issues a new test key, and the old one stops working.
Next
What an agent can and cannot do
The decisions that stay with a person, and how a refusal comes back.
Keys and tokens
Going live: an API key, an app connected through Connect Cypress, or an agent of its own.
MCP servers
Every tool, by area, and how to show an agent only the areas its job needs.
Webhooks
Get a message when something changes, whoever changed it.