The app's actions
Every button of the app's screens as a REST operation and a Cypress Operate tool that run the app's own code as you, with the webhook each change sends.
TL;DRAI summary
This chapter explains how your actions in Cypress, like launching a vehicle or setting a price, work behind the scenes. It covers who can perform which actions, what happens when you test an action, and the notifications you receive when vehicle details change.
What a person does on a vehicle's page or in the fleet grid, your system or agent
does through the API or Cypress Operate, and the result is the same because it
runs the same code. Each action is one button (Pause, Launch, a label, a
picture): its REST operation under /api/v1, its MCP tool and the webhook it
sends come from one definition, and it runs the screen's own route as the
caller, with the screen's checks and its consequences: a pause withdraws the
car's open offers and tells the buyers, a seller's delist waits for Cypress's
review, automations start, the activity log records who did it. Since 1.5.0.
Who it acts as
| Credential | Acts as |
|---|---|
| API key | Your organization, through its first admin: the screen's checks pass as they would for that person. An organization with no active admin or fleet manager answers 403 POLICY_DENIED |
| An app acting for a person (Connect Cypress) | That person, with their role |
| An agent | The agent, with a fleet manager's authority on the actions that allow an agent (the Agent column below). Any other is a person's: 403 PEOPLE_ONLY, with the vehicle's link for a person to act on |
| CM token | The Cypress Manager who made it, for the organization in the Cypress-Organization header (organizationId on an MCP call). The staff actions take a CM token only |
Dry runs, retries and refusals
Every write takes ?dryRun=true (dryRun on MCP) and an Idempotency-Key
(idempotencyKey): a retry with the same key answers the first answer, once.
A dry run is one of two kinds:
- The screen's preview, where the screen has one:
apply_pricing_ruleandapply_pricing_rulesevaluate the rules and say what each would do, applying nothing. Since 1.9.0 alsoset_floor_prices(every floor worked out),update_pricing_rule(the rule as it would be),request_vehicle_archive(which path the archive takes, and why),import_vehiclesandapply_import(the import's own preview). - Checked: the credential, its scope, who the action would run as, the
input and the records it names are checked, and nothing runs. A car, an
offer, a closing, a contact, a company, a deal, a task, a campaign or a buy
target that does not exist, or that you may not open, answers
404 NOT_FOUND, as the real call would.checkedlists what was checked; the record's state and the action's own rules are checked when it runs:
{ "dryRun": true, "simulated": true, "checked": ["credential", "scope", "role", "input", "record"], "note": "The state of the record and this action's own rules are checked when it runs.", "would": { "action": "vehicles.pause", "as": "API key", "input": { "id": "clx…", "reason": "Back on rent" } } }A refusal carries the screen's own message under the API's codes: 422 INVALID
for the input (with each field), 403 POLICY_DENIED for the screen's role check
(Your role cannot create share links), 404 NOT_FOUND, 409 CONFLICT for a
state that does not allow it (a share link for a car that is not listed). See
Errors.
The webhooks they send
Every change to a vehicle sends VEHICLES.UPDATED (VEHICLES.CREATED for a new
one), whichever door made it: a person in the app, a CSV import, an automation or
the API. Besides the vehicle, the body carries:
| Field | Meaning |
|---|---|
changedFields | What changed: status, labelSlug, floorPrice, listingPrice, fleetId, photos, videos, historyReport, shareLinks, visibility, storefrontEnabled, offerRules, valuation, and since 1.9.0 damages, keyCount, damageNote |
toStatus | The new status, when the status moved |
source | Where it came from: app, csv, automation or api. A change made through these actions says api, so your system can tell its own writes from everyone else's. Left out on a valuation landing (it cannot tell who asked) |
A launch also sends LISTINGS.ACTIVATED. Every other action that changes something
sends the event in its Webhook column below, from whichever door ran it: your
organization's account, members, bank accounts and billing, both sides of a
closing, the offers you made, your CRM book, promotions, plans and Sequoia's
recommendations. See Every action heard.
The actions
The REST paths are under /api/v1. Each action needs the scope of its area
(see Key scopes); an agent needs the grant of its area,
and a Cypress staff action a CM token. A write marked "in a sandbox: recorded, not
sent" sends an email or a text to someone outside Cypress: in a
sandbox it is checked and recorded, never sent.
Read a vehicle and the fleet
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_vehicle_activity | GET /vehicles/{id}/activity | What happened to a vehicle, who did it and when | Yes | — |
list_vehicle_valuations | GET /vehicles/{id}/valuations | A vehicle's valuation history, newest first | Yes | — |
check_vehicle_listing_readiness | GET /vehicles/{id}/listing-readiness | The checklist a vehicle passes before it goes live, and suggested offer rules | Yes | — |
get_vehicle_listing_metrics | GET /vehicles/{id}/listing-metrics | A live vehicle's listing, its activity and its offer rules | Yes | — |
get_vehicle_market_history | GET /vehicles/{id}/market-history | Everywhere a vehicle has been shown, and what came of it | Yes | — |
get_vehicle_comps | GET /vehicles/{id}/comps | Recent Cypress sales like this vehicle: yours one by one, other sellers' as a range, and its Black Book value. Since 1.9.0 | Yes | — |
find_comparable_sales | GET /vehicles/comps | The same for a year, make and model you name; mine=true&limit=1 is your last sale of it. Since 1.9.0 | Yes | — |
get_vehicle_archive_record | GET /vehicles/{id}/archive-record | An archived vehicle's archive record | Yes | — |
list_fleets | GET /fleets | The organization's fleets (its groups of vehicles) | Yes | — |
get_fleet_stats | GET /fleet/stats | The fleet page's numbers: vehicles by status, value, days on market | Yes | — |
get_fleet_metrics | GET /fleet/metrics | The dashboard's tiles over a period (7d, 30d, 90d), from the computation the dashboard draws: each with its label, the text it shows, its delta and a real trend. Wholesale GMV and Retail value are snapshots with no history: never draw a fleet-value trend. See Dashboard numbers. Since 1.9.0 | Yes | — |
list_vehicle_notices | GET /vehicles/{id}/notices | What changed on a vehicle that its seller or Cypress was told about | Yes | — |
get_vehicle_channel_flow | GET /vehicles/{id}/channel-flow | How buyers reached a vehicle, channel by channel, to views, offers and a sale | Yes | — |
get_vehicle_engagement | GET /vehicles/{id}/engagement | Cypress's engagement report on a vehicle: views, reach, offers, over a period | Cypress staff (CM token) | — |
get_vehicle_engagement_breakdowns | GET /vehicles/{id}/engagement/breakdowns | The engagement report cut by channel, region and buyer type | Cypress staff (CM token) | — |
list_vehicle_engagement_actors | GET /vehicles/{id}/engagement/actors | The buyers who viewed, saved or offered on a vehicle | Cypress staff (CM token) | — |
get_vehicle_engagement_actor | GET /vehicles/{id}/engagement/actors/{actorKey} | One buyer's whole history with a vehicle | Cypress staff (CM token) | — |
The way to market
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
change_vehicle_status | POST /vehicles/{id}/transitions | A step of the vehicle's way to market (submit, approve, reject, hold, deliver, archive…) | A person's | VEHICLES.UPDATED |
submit_vehicles_for_review | POST /vehicles/submit-for-review | Send many draft vehicles to Cypress for pricing review | Yes | VEHICLES.UPDATED |
launch_approved_vehicle | POST /vehicles/{id}/launch | Launch an approved vehicle to the marketplace, as the Launch button does | A person's | LISTINGS.ACTIVATED |
launch_approved_vehicles | POST /vehicles/launch | Launch many approved vehicles at once | A person's | LISTINGS.ACTIVATED per vehicle |
pause_vehicle | POST /vehicles/{id}/pause | Pause a live vehicle (on hold): its open offers are withdrawn and the buyers told | Yes | VEHICLES.UPDATED |
resume_vehicle | POST /vehicles/{id}/resume | Resume a vehicle on hold (Cypress or the organization's admin) | A person's | VEHICLES.UPDATED |
delist_vehicle | POST /vehicles/{id}/delist | Delist a live vehicle: at once without an open offer; with one, Cypress reviews a seller's request | A person's | VEHICLES.UPDATED |
undo_vehicle_archive | POST /vehicles/{id}/archive/undo | Put a vehicle you archived at once back where it was, within 24 hours (since 1.9.0) | A person's | VEHICLES.UPDATED |
dispose_vehicle | POST /vehicles/{id}/dispose | Cypress archives a vehicle in one step, with who is responsible and the decision | Cypress staff (CM token) | VEHICLES.UPDATED |
change_vehicles_status | POST /vehicles/status | The same status step for up to 500 vehicles | A person's | VEHICLES.UPDATED per vehicle |
request_vehicle_archive | POST /vehicles/{id}/archive-request | Sold elsewhere, or archive: at once without an open offer or a sale in progress; otherwise Cypress reviews it. Since 1.9.0 its dry run says which path (AT_ONCE or CYPRESS_REVIEW) and why | A person's | VEHICLES.DISPOSITION.STAGED |
delete_vehicles | POST /vehicles/delete | Delete up to 500 vehicles that have not gone to market | A person's | VEHICLES.DELETED per vehicle (opt-in) |
Price and offers
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
apply_pricing_rule | POST /vehicles/{id}/apply-pricing-rule | Evaluate the pricing rules for a vehicle; with confirm, apply the outcome (its dry run is the screen's preview) | A person's | VEHICLES.UPDATED |
apply_pricing_rules | POST /vehicles/apply-pricing-rules | Evaluate (and with confirm, apply) the pricing rules across many vehicles in review (or approved), as apply_pricing_rule does; any other status is named and left alone (its dry run is the screen's preview). Since 1.9.0 a car in review is listed without being approved first, each answer names the rule that matched (ruleName), and the preview (no confirm) judges a draft as if it were in review | A person's | VEHICLES.UPDATED per vehicle whose status moved |
set_vehicle_offer_rules | PUT /vehicles/{id}/offer-rules | Auto-accept above and auto-decline below, on a live vehicle | A person's | VEHICLES.UPDATED |
revalue_vehicle | POST /vehicles/{id}/revalue | Value a vehicle again now | Yes | VEHICLES.UPDATED when the new valuation lands |
revalue_vehicles | POST /vehicles/revalue | Value up to 200 vehicles again | Yes | VEHICLES.UPDATED per vehicle, as each valuation lands |
set_floor_prices | POST /vehicles/floor-prices | A floor for up to 500 vehicles: an amount, from each vehicle's retail valuation, or (since 1.9.0) a percent over or under its latest wholesale (wholesale-percent; a valuation older than 30 days only with allowStale); its dry run works out every floor | A person's | VEHICLES.UPDATED per vehicle |
set_listing_prices | POST /vehicles/listing-prices | A listing price for up to 500 vehicles: an amount, or from each vehicle's floor | Yes, at or above each floor, never under a live offer or a sale | VEHICLES.UPDATED per vehicle |
Add and edit
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
add_vehicle | POST /fleet/vehicles | The fleet page's Add vehicle: the VIN decoded, and valued at once when it is complete; since 1.9.0 with keyCount and the seller's damageNote | Yes | VEHICLES.CREATED |
edit_vehicle | PATCH /fleet/vehicles/{id} | The vehicle panel's edits: specs, location, condition, mileage, fleet, prices, visibility; since 1.9.0 keyCount and damageNote, and a condition change is told to every buyer with an open offer | Yes, but never floorPrice; targetPrice at or above the floor | VEHICLES.UPDATED |
assign_vehicles_to_fleet | POST /vehicles/fleet | Put up to 500 vehicles in one fleet, or take them out of their fleet | Yes | VEHICLES.UPDATED per vehicle |
add_vehicle is the app's form; create_vehicle (an API key) pushes a full
record from your own system with your ids, and push_vehicles up to 500 of them
(see Pushing inventory).
Labels
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_vehicle_labels | GET /vehicles/{id}/labels | A vehicle's labels and their history | Yes | — |
add_vehicle_labels | POST /vehicles/{id}/labels | Put one or more labels on a vehicle (by hand) | Yes | VEHICLES.UPDATED |
remove_vehicle_labels | POST /vehicles/{id}/labels/remove | Take one or more labels off a vehicle (by hand) | Yes | VEHICLES.UPDATED |
edit_labels_on_vehicles | POST /vehicles/labels | Add and remove labels across many vehicles in one go | Yes | VEHICLES.UPDATED per vehicle |
Pictures, videos and the inspection report
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_vehicle_photos | GET /vehicles/{id}/photos | A vehicle's pictures and videos, in their order, with links | Yes | — |
add_vehicle_photo | POST /vehicles/{id}/photos | Upload one picture to a vehicle | Yes | VEHICLES.UPDATED |
remove_vehicle_photo | DELETE /vehicles/{id}/photos/{photoId} | Delete one of a vehicle's pictures | Yes | VEHICLES.UPDATED |
set_vehicle_cover_photo | POST /vehicles/{id}/photos/{photoId}/cover | Make one picture the vehicle's cover | Yes | VEHICLES.UPDATED |
reorder_vehicle_photos | PUT /vehicles/{id}/photos/order | Set the order of a vehicle's pictures | Yes | VEHICLES.UPDATED |
add_vehicle_video | POST /vehicles/{id}/videos | Upload one video to a vehicle | Yes | VEHICLES.UPDATED |
remove_vehicle_video | DELETE /vehicles/{id}/videos/{videoId} | Delete one of a vehicle's videos | Yes | VEHICLES.UPDATED |
get_vehicle_history_report | GET /vehicles/{id}/history-report | The third-party inspection report attached to a vehicle | Yes | — |
attach_vehicle_history_report | POST /vehicles/{id}/history-report | Attach a third-party inspection report (a Manheim condition report) by its link | Yes | VEHICLES.UPDATED |
list_vehicle_damages | GET /vehicles/{id}/damages | The damage lines the seller declared on a vehicle, with their pictures (since 1.9.0) | Yes | — |
add_vehicle_damage | POST /vehicles/{id}/damages | Declare a damage line: area, description, severity and an optional picture (a DAMAGE photo, never the cover); buyers with an open offer are told (since 1.9.0) | A person's | VEHICLES.UPDATED |
remove_vehicle_damage | DELETE /vehicles/{id}/damages/{damageId} | Take back a damage line declared by mistake (its picture stays among the photos) (since 1.9.0) | A person's | VEHICLES.UPDATED |
Share links, visibility and the storefront
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_vehicle_share_links | GET /vehicles/{id}/share-links | A vehicle's share links (Direct Links) with their commission | Yes | — |
create_vehicle_share_link | POST /vehicles/{id}/share-links | A link that shows one vehicle to whoever holds it (Direct Links); since 1.9.0 recipientOrgId addresses it to one buyer company | Yes | VEHICLES.UPDATED; the buyer it is addressed to, MARKETPLACE.SHARE.RECEIVED |
create_share_links | POST /vehicles/share-links | One share link per vehicle, for many vehicles | Yes | VEHICLES.UPDATED per vehicle |
revoke_share_links | POST /vehicles/share-links/revoke | Stop every share link of the vehicles named | Yes | VEHICLES.UPDATED per vehicle |
list_share_link_visitors | GET /vehicles/{id}/share-links/{linkId}/visitors | The buyer companies that opened a share link | Yes | — |
set_vehicles_visibility | POST /vehicles/visibility | Public on the marketplace, or only through share links | Yes | VEHICLES.UPDATED |
set_vehicles_on_storefront | POST /vehicles/storefront | Put vehicles on the organization's public storefront, or take them off | Yes | VEHICLES.UPDATED |
More on a vehicle
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_labels | GET /labels | Your organization's labels and Cypress's global ones | Yes | — |
create_label | POST /labels | Create one of your organization's labels | Yes | ORGANIZATION.UPDATED |
list_pricing_rules | GET /pricing-rules | Your organization's pricing rules and Cypress's global ones, in the order they are tried | Yes | — |
create_pricing_rule | POST /pricing-rules | A rule that approves and lists, rejects, or sends to review the vehicles it matches | A person's | ORGANIZATION.UPDATED |
update_pricing_rule | PATCH /pricing-rules/{id} | Change one of your own rules: switch it on or off, AUTO or NOTIFY_CM, its conditions and figures; a dry run answers the rule as it would be (since 1.9.0) | A person's | ORGANIZATION.UPDATED |
read_import_file | POST /imports/read | A CSV or Excel file read as the Import screen reads it: its columns matched and each row in the import's shape (nothing is saved) | Yes | — |
import_vehicles | POST /imports | The Import screen: create new VINs, update existing ones, stage archives (dry run first). Since 1.9.0 mode: "stage" holds it for review with each row's exceptions, and a location alias resolves a row's location | A person's | — (VEHICLES.IMPORT.STAGED when staged) |
list_imports | GET /imports | The organization's recent import batches with their progress | Yes | — |
get_import | GET /imports/{batchId} | One import batch: its progress and every row's result; a staged import's rows with their exceptions and decisions (since 1.9.0) | Yes | — |
decide_import_row | PATCH /imports/{batchId}/rows/{rowId} | Settle a staged row: KEEP or SKIP, map its location (and remember the alias), or fix its odometer (since 1.9.0) | A person's | — |
apply_import | POST /imports/{batchId}/apply | Run a staged import with its rows as decided, once every exception is settled (since 1.9.0) | A person's | VEHICLES.IMPORT.APPLIED |
appraise_vin | POST /appraisals | What a VIN is worth now, a suggested floor and target, and a sell-or-hold read (nothing is saved) | Yes | — |
estimate_value | POST /valuations/estimate | What a car is worth to a dealer, how sure that is and what would make it surer, from a VIN or a year, make and model (nothing is saved) | Yes | — |
Planning
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
get_sell_forecast | GET /planning/forecast | The next weeks for your lots: dealer demand and other sellers' supply, as ranges | Yes | — |
get_plan_demand | GET /planning/demand | Planned dealer demand per lot, and per lot and sale window (counts only) | Yes | — |
get_market_board | GET /planning/market-board | What dealers want and what sellers plan to bring, across Cypress, anonymously | Yes | — |
get_plan_execution | GET /planning/execution | The quarter's execution: each handed-off vehicle's stage, ask, best offer and sale against its plan value | Yes | — |
list_window_reviews | GET /planning/reviews | Planned against executed per closed window, what became of each vehicle, and the roll-up | Yes | — |
list_plan_tasks | GET /planning/tasks | The tasks behind a side's quarter plan, open and done, with what each is about | Yes | — |
list_sell_decisions | GET /planning/decisions | Sequoia's suggestions and their answers on the sell plan, with its last run | Yes | — |
list_plan_groups | GET /planning/groups | The fleet's planning groups with their sizes, and the groups Sequoia suggests | Yes | — |
get_plan_cost_assumptions | GET /planning/cost-assumptions | Weekly running cost and contribution per vehicle class, beside the baseline | Yes | — |
get_vehicle_plan_costs | GET /planning/vehicles/{id}/cost-assumptions | A vehicle's weekly running cost and contribution, where it overrides its class | Yes | — |
get_vehicle_planned_demand | GET /vehicles/{id}/planned-demand | How many dealers plan to buy a vehicle like one of yours | Yes | — |
schedule_plan_vehicles | POST /planning/moves/windows | Schedule, reschedule or unschedule vehicles across several sale windows in one plan version | Yes | PLAN.VEHICLE.SCHEDULED |
allocate_plan_lot | POST /planning/lots/allocate | "Schedule 12 of the 2021 Sentras in October": the best N of a lot or group, spread over a month's windows | Yes | PLAN.VEHICLE.SCHEDULED |
create_plan_group | POST /planning/groups | A named group of the fleet, with a rule or without | Yes | — |
update_plan_group | PATCH /planning/groups/{id} | Rename a group, recolour it or change its rule | Yes | — |
remove_plan_group | DELETE /planning/groups/{id} | Delete a group; its vehicles are left in no group | A person's | — |
apply_plan_group | POST /planning/groups/{id}/apply | The group becomes what its rule matches now, minus the vehicles you leave out | Yes | — |
set_plan_group_members | POST /planning/groups/members | Hand-pick vehicles into a group (or out of any group) | Yes | — |
add_plan_track | POST /planning/tracks | A custom track: a name, the objective it ranks by, the posture Sell takes | A person's | — |
change_plan_track | PATCH /planning/tracks/{id} | Rename a track, or change its objective or posture | Yes, never posture | — |
remove_plan_track | DELETE /planning/tracks/{id} | Delete a track; its vehicles move to the General track | A person's | — |
remove_plan_blocker | POST /planning/blockers/{id}/remove | Remove an open blocker that should never have been there, with the reason | A person's | — |
set_plan_cost_assumptions | PUT /planning/cost-assumptions | Set (or clear with null) weekly running cost and contribution per vehicle class | Yes | — |
set_vehicle_plan_costs | PUT /planning/vehicles/{id}/cost-assumptions | Override (or clear) one vehicle's weekly running cost and contribution | Yes | — |
update_plan_vehicle_details | PATCH /planning/vehicles/{id}/details | Year, make, model, odometer, condition, colours, Unit # or location of a vehicle that lives only in planning | Yes | — |
answer_sell_decision | PATCH /planning/decisions/{id} | Accept, dismiss or put off one of Sequoia's suggestions on the sell plan | Yes | INSIGHT.ANSWERED |
add_window_review_feedback | POST /planning/reviews/{id}/feedback | Agree, partly agree or disagree with a sale window's review, in words | A person's | — |
request_planning | POST /organization/planning-request | Ask Cypress to switch the Planning product on for your organization | A person's | — |
get_sell_desk | GET /staff/planning/sell-desk | Every seller's lots in the quarter's open windows, with the dealers whose targets match them | Cypress staff (CM token) | — |
Buy planning
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
get_buy_plan | GET /buy-planning/plan | The buy plan as its page shows it: settings, the quarter and its approval, targets with progress. quarter.spent is the page's "spent" (vehicles already bought), split into spentInPlan and spentOutsidePlan; closings in progress are inClosingAmount, and spentOrInClosing adds them. See The plan's quarter. spent changed in 1.9.0 | Yes | — |
get_buy_forecast | GET /buy-planning/forecast | The next weeks for your targets: what fits now, and what sellers plan to bring | Yes | — |
get_buy_fit | GET /buy-planning/fit | For listings you are looking at: the target each fits, and how well | Yes | — |
get_buy_match_analysis | GET /buy-planning/targets/{id}/matches/{vehicleId}/analysis | One listing against one of your targets: price position, trend, timing, your fit and budget | Yes | — |
search_buy_catalog | GET /buy-planning/catalog | The makes, models, trims, bodies and fuels Cypress has seen, to name in a target | Yes | — |
list_buy_decisions | GET /buy-planning/decisions | Sequoia's suggestions and their answers on the buy plan, with its last run | Yes | — |
set_buy_plan_settings | PUT /buy-planning/plan | Where you buy, how you hear about matches, and the default track for new targets | Yes | — |
answer_buy_decision | PATCH /buy-planning/decisions/{id} | Accept, dismiss or put off one of Sequoia's suggestions on the buy plan | Yes | INSIGHT.ANSWERED |
request_buy_bundle | POST /buy-planning/targets/{id}/bundle-requests | Ask Cypress to work several of a target's matches from one seller as a bundle | A person's | — |
request_buy_planning | POST /organization/buy-planning-request | Ask Cypress to switch Buy planning on for your organization | A person's | — |
get_buy_board | GET /staff/buy-planning/board | The demand board: every dealer's open targets and what fits them, with both sides' limits | Cypress staff (CM token) | — |
CRM
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
get_contact_deliverability | GET /contacts/{id}/deliverability | Whether a contact's address can still be mailed, and why not | Yes | — |
suggest_contact_business | GET /contacts/{id}/business-suggestion | The business of your book an unattached contact probably works at | Yes | — |
get_contact_engagement | GET /contacts/{id}/engagement | A contact's engagement with you: the cars they viewed, saved and offered on, the emails they opened | Yes | — |
get_contact_timeline | GET /contacts/{id}/timeline | Everything that happened with a contact, newest first | Yes | — |
get_contact_insight | GET /contacts/{id}/insight | Sakura's read on a customer: a profile label, what it sees, and what to do next | Yes | — |
get_business_engagement | GET /businesses/{id}/engagement | A business's engagement with you, all its people merged | Yes | — |
get_business_timeline | GET /businesses/{id}/timeline | A business's history: its own record, its people's and its pipeline, newest first | Yes | — |
get_business_insight | GET /businesses/{id}/insight | Sakura's read on a business, at the company grain | Yes | — |
get_deal_timeline | GET /deals/{id}/timeline | Everything on a deal: what was said and written, stage moves, cars added and dropped | Yes | — |
get_deal_insight | GET /deals/{id}/insight | Sakura's read on a deal: where it stands, the next action and the channel for it | Yes | — |
list_deal_contacts | GET /deals/{id}/contacts | A deal's point of contact and everyone else on it, with their role | Yes | — |
get_crm_analytics | GET /crm/analytics | The acquisition and sales funnels, KPIs, stages, lost reasons and sources of your book | Yes | — |
get_crm_insight | GET /crm/insight | Sakura's summary of the whole CRM: what needs you | Yes | — |
delete_contact | POST /contacts/{id}/delete | Delete a contact with its notes, interactions, tasks and change history | A person's | CONTACT.DELETED |
delete_business | POST /businesses/{id}/delete | Delete a company that has no deals; its people stay, unattached | A person's | BUSINESS.DELETED |
delete_deal | POST /deals/{id}/delete | Delete a deal that never reached a real offer | A person's | DEAL.DELETED |
add_business_from_organization | POST /businesses/from-organization | A company that came through your share links (or an organization you picked) as a business of your book | Yes | BUSINESS.CREATED |
add_deal_contact | POST /deals/{id}/contacts | Put a contact of your book on a deal, with their role, or make them its point of contact | Yes | — |
remove_deal_contact | POST /deals/{id}/contacts/remove | Remove a contact from a deal (the deal and the contact stay) | Yes | — |
add_deal_vehicles | POST /deals/{id}/vehicles | Add up to 200 of your vehicles to a deal | Yes | — |
remove_deal_vehicles | POST /deals/{id}/vehicles/remove | Drop cars from a deal (kept as DROPPED) or remove them | Yes | — |
import_crm_records | POST /crm/imports | The CRM import: up to 5,000 rows of companies, people and deals; a dry run previews every row | A person's | — |
get_crm_import | GET /crm/imports/{batchId} | An import's status, with what happened to each row | Yes | — |
link_business_organization | POST /businesses/{id}/link-organization | Record that a prospect business became an organization on Cypress, or clear a wrong link | Cypress staff (CM token) | — |
list_contact_account_candidates | GET /contacts/{id}/account-candidates | The Cypress accounts a contact could be: their own addresses, or people at their company's organization | Cypress staff (CM token) | — |
link_contact_account | POST /contacts/{id}/link-account | Record that a contact is a person with an account on Cypress | Cypress staff (CM token) | — |
Marketing
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
set_campaign_content | PATCH /campaigns/{id}/content | A campaign's content kind, its promotion, its message document, reply-to and vehicle sheet | Yes | — |
preview_campaign_email | GET /campaigns/{id}/preview | The campaign email rendered as an inbox shows it, for a sample contact | Yes | — |
list_campaign_recipients | GET /campaigns/{id}/recipients | Who a campaign mailed, address by address, and how far each email got | A person's | — |
estimate_campaign_audience | POST /campaigns/{id}/audience/estimate | How many people an audience would mail, and how many suppression drops, before you save it | Yes | — |
preview_campaign_contacts | POST /campaigns/{id}/audience/contacts | The contacts a slice of your book would mail, named, with the book's reachable count | Yes | — |
send_campaign_test | POST /campaigns/{id}/test | Email a test of the campaign to up to 20 addresses (in a sandbox: recorded, not sent) | A person's | — |
get_campaign_test_send | GET /campaigns/{id}/test | The last test send: its status, how many it went to and how many were delivered | Yes | — |
list_campaign_audience_candidates | POST /campaigns/{id}/audience/candidates | The companies a filter audience would address, before exclusions | Cypress staff (CM token) | — |
search_campaign_organizations | GET /campaigns/organizations | Business organizations on Cypress, for a cherry-pick audience | Cypress staff (CM token) | — |
edit_platform_campaign | PATCH /campaigns/{id}/platform | The whole campaign editor for Cypress staff: platform audiences, owner, status | Cypress staff (CM token) | — |
send_platform_campaign_now | POST /campaigns/{id}/platform/send | Send any campaign to its audience now, platform audiences included (in a sandbox: recorded, not sent) | Cypress staff (CM token) | CAMPAIGN.SENT |
get_message_template | GET /message-templates/{id} | A message template with the version being edited (the draft, else the published one) | Yes | — |
create_message_template | POST /message-templates/drafts | A new, empty message template of your organization | Yes | — |
save_message_template_draft | PATCH /message-templates/{id} | Write a template's name, category, subject and document (the draft; campaigns are unchanged) | Yes | — |
archive_message_template | DELETE /message-templates/{id} | Take a template out of the library (it is kept, never deleted) | A person's | — |
clone_message_template | POST /message-templates/{id}/clone | A full copy of a template (yours or Cypress's) into your library | Yes | — |
publish_message_template | POST /message-templates/{id}/publish | Make a template's draft its live version, usable in campaigns | A person's | — |
list_message_template_versions | GET /message-templates/{id}/versions | A template's published versions, newest first | Yes | — |
restore_message_template_version | POST /message-templates/{id}/versions/{versionId}/restore | Copy a published version into a template's draft | Yes | — |
get_engagement_overview | GET /marketing/analytics/overview | The engagement report of one campaign, promotion, vehicle or deal: mail, visits, saves, offers, temperature | Yes | — |
get_engagement_summary | GET /marketing/analytics/summary | Every campaign, promotion or vehicle of yours with its numbers and temperature | Yes | — |
get_engagement_breakdowns | GET /marketing/analytics/breakdowns | Engagement by source, device and kind of visitor, for one campaign, promotion, vehicle or deal | Yes | — |
get_engagement_by_vehicle | GET /marketing/analytics/by-vehicle | Each car's views, saves and offers within one campaign, promotion, vehicle or deal | Yes | — |
get_engagement_flow | GET /marketing/analytics/sankey | Where traffic came from, which cars it landed on, and what it did | Yes | — |
list_engaged_visitors | GET /marketing/analytics/visitors | The people and companies who engaged with one campaign, promotion, vehicle or deal | A person's | — |
list_warm_customers | GET /marketing/analytics/customers | Everyone engaging with what is yours in a period, matched to your book | A person's | — |
get_engaged_visitor | GET /marketing/analytics/actors/{actorKey} | One person's or company's full engagement history with what is yours | A person's | — |
Promotions
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_promotions | GET /promotions | Your promotions (curated sets of cars with their own page), with their state and counts | Yes | — |
get_promotion | GET /promotions/{id} | One promotion: its copy, dates, visibility, cars or filters, featured cars and hero | Yes | — |
create_promotion | POST /promotions | A new promotion (a draft): a hand-picked list of cars, or a list kept by filters | Yes | PROMOTION.UPDATED |
update_promotion | PATCH /promotions/{id} | A promotion's copy, dates, visibility, cars or filters, and featured cars | Yes | PROMOTION.UPDATED |
publish_promotion | POST /promotions/{id}/publish | Put a promotion live (its page, on your storefront or the marketplace) | A person's | PROMOTION.UPDATED |
pause_promotion | POST /promotions/{id}/pause | Take a live promotion's page down for a while | Yes | PROMOTION.UPDATED |
archive_promotion | POST /promotions/{id}/archive | End a promotion: its page comes down and it leaves the working list | A person's | PROMOTION.UPDATED |
delete_promotion | DELETE /promotions/{id} | Delete a promotion that never sent mail; one that did answers 409 (archive it, and its history stays) | A person's | PROMOTION.UPDATED |
get_promotion_insight | GET /promotions/{id}/insight | Sakura's read of how a promotion is doing | Yes | — |
upload_promotion_hero | POST /promotions/{id}/hero | Upload the picture at the top of a promotion's page and email | Yes | — |
generate_promotion_hero | POST /promotions/{id}/hero/generate | An AI-made hero picture for a promotion, from its name and cars | Yes | — |
Offers
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
make_offer | POST /marketplace/vehicles/{id}/offers | Offer an amount on a vehicle for sale, as the Make Offer button does | A person's | OFFERS.CREATED |
buy_vehicle_now | POST /marketplace/vehicles/{id}/buy | Buy now: an offer at the asking price, accepted at once, and the closing starts | A person's | OFFERS.CREATED |
accept_counter_offer | POST /offers/{id}/accept-counter | Accept the seller's counter on an offer you made: the sale is binding | A person's | OFFERS.ACCEPTED |
counter_back_offer | POST /offers/{id}/counter-back | Counter the seller's counter: your offer becomes the new amount, back with the seller | A person's | — |
list_offers_made | GET /offers/made | Your organization's offers as a buyer, with the vehicle, the seller's counter and its message | Yes | — |
list_offer_activity | GET /offers/{id}/activity | The history of an offer you made, as the buyer sees it | Yes | — |
read_offer_with_sakura | POST /offers/{id}/sakura-read | Sakura's advice on an offer you made: hold, raise, accept the counter or walk away | Yes | — |
list_offers_received | GET /offers/received | Offers on your vehicles with the buyer, your floor and rules, the channel and the commission | A person's | — |
Marketplace
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
search_marketplace | GET /marketplace/vehicles | Vehicles for sale on Cypress, filtered and sorted | Yes | — |
get_marketplace_vehicle | GET /marketplace/vehicles/{id} | One marketplace vehicle: specs, pictures, the seller's standing, the terms and the offer rules a buyer sees | Yes | — |
open_share_link | GET /marketplace/share-links/{token} | The vehicle behind a share link, as its marketplace page shows it, with the seller's terms and the token to offer with. Since 1.9.0 | Yes | — |
list_marketplace_picks | GET /marketplace/picks | Live vehicles that fit what you bid on, bought and save searches for, each with why | Yes | — |
dismiss_marketplace_pick | POST /marketplace/picks/{vehicleId}/dismiss | "Not for me" on a pick, with why: the car never comes back, and cars like it rank lower. Since 1.9.0 | Yes | — |
restore_marketplace_pick | DELETE /marketplace/picks/{vehicleId}/dismiss | The car may be picked for you again. Since 1.9.0 | Yes | — |
get_purchase_profile | GET /marketplace/purchase-profile | Your usual, from your own completed purchases: price, age and mileage bands, makes, models, body classes, states. Since 1.9.0 | Yes | — |
list_saved_vehicles | GET /marketplace/saved-vehicles | The vehicles you saved (your watchlist), with the price when you saved each | Yes | — |
save_vehicle | POST /marketplace/saved-vehicles | Add a marketplace vehicle to your saved vehicles | Yes | — |
unsave_vehicle | DELETE /marketplace/saved-vehicles/{vehicleId} | Take a vehicle off your saved vehicles | Yes | — |
list_marketplace_alerts | GET /marketplace/alerts | Your saved searches (alerts), with their criteria, how they notify you and how many cars matched | Yes | — |
create_marketplace_alert | POST /marketplace/alerts | A saved search that tells you when a matching vehicle is listed | Yes | — |
update_marketplace_alert | PATCH /marketplace/alerts/{id} | Change a saved search's criteria or how it tells you | Yes | — |
delete_marketplace_alert | DELETE /marketplace/alerts/{id} | Switch a saved search off | Yes | — |
list_marketplace_alert_matches | GET /marketplace/alerts/{id}/matches | The vehicles still for sale that a saved search matched (up to 50) | Yes | — |
Closings
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_closing_activity | GET /closings/{id}/activity | What happened in a sale and its closing, who did it and when | Yes | — |
list_closing_incidents | GET /closings/{id}/incidents | The problems reported on a closing, with their thread and status | Yes | — |
report_closing_incident | POST /closings/{id}/incidents | Tell Cypress something is wrong with a closing in progress | Yes | CLOSING.UPDATED |
message_closing_incident | POST /closings/{id}/incidents/{incidentId}/messages | Write in the thread of an incident you reported | Yes | CLOSING.UPDATED |
read_closing_with_sapele | POST /closings/{id}/sapele-read | Sapele's read of a closing: its health, the next step, who owes it and how urgent it is | Yes | — |
get_closing_deal_setup | GET /closings/{id}/deal-setup | The deal's facts (pickup, bank, lender, title, transport, custom values) and each side's confirmation | A person's | — |
update_closing_deal_setup | PATCH /closings/{id}/deal-setup | Choose the deal's pickup, bank account, lender, title address or transporter, or set custom values | A person's | CLOSING.UPDATED |
enable_closing_deal_setup | POST /closings/{id}/deal-setup | Give a closing that predates Deal Setup its Deal Setup | A person's | — |
confirm_closing_deal_setup | POST /closings/{id}/deal-setup/confirm | Sign off your side of Deal Setup; the second sign-off bills the commission and opens the Bill of Sale | A person's | CLOSING.UPDATED |
get_deal_setup_impact | GET /closings/{id}/deal-setup/impact | Which issued documents a Deal Setup change would make wrong, and whose signatures it would void | Yes | — |
get_deal_setup_core_facts | GET /closings/{id}/deal-setup/core-facts | The deal's core facts (names, addresses) that differ from the records they came from | A person's | — |
refresh_deal_setup_core_facts | POST /closings/{id}/deal-setup/core-facts | Fill the deal's missing core facts from your records, or repoint named ones | A person's | — |
get_closing_checklist_gaps | GET /closings/{id}/document-checklist | The documents the organization's checklist asks for that this closing does not carry | Yes | — |
sync_closing_checklist | POST /closings/{id}/document-checklist | Add the checklist's missing document slots to a closing (Cypress may also change or drop them) | A person's | — |
get_closing_step_blockers | GET /closings/{id}/steps/{stepKey}/execution | The documents that must be fully signed before a step can complete, and how to clear each | A person's | — |
upload_closing_document | POST /closings/{id}/steps/{stepKey}/documents | Upload a document (PDF or picture) to a step: it goes to review | A person's | CLOSING.UPDATED |
get_closing_document | GET /closings/{id}/documents/{documentId} | One document of a closing, with a link to view it (valid for an hour) | A person's | — |
delete_closing_document | DELETE /closings/{id}/documents/{documentId} | Remove a document that was not accepted; one out for signature needs voidSignatures | A person's | CLOSING.UPDATED |
get_closing_document_options | GET /closings/{id}/steps/{stepKey}/generation | The templates a step's document can be made from, and what each would print blank | Yes | — |
generate_closing_document | POST /closings/{id}/steps/{stepKey}/generate | Render a step's document from a template with the deal's facts and file it | A person's | CLOSING.DOCUMENT.GENERATED |
get_closing_signatures | GET /closings/{id}/steps/{stepKey}/signatures | Who signs a step's document, in what order, and where each signature stands | A person's | — |
send_closing_document_for_signature | POST /closings/{id}/steps/{stepKey}/signatures | Email each party its signing link for a step's document, in order (in a sandbox: recorded, not sent) | A person's | CLOSING.UPDATED |
correct_signer_email | POST /closings/{id}/documents/{documentId}/signatures/{party}/email | Point a signing request at a corrected email and send the link there (in a sandbox: recorded, not sent) | A person's | — |
get_commission_invoice | POST /closings/{id}/commission-invoice | The seller's commission invoice for a closing, raised if it never was | A person's | — |
start_commission_payment | POST /closings/{id}/commission-invoice/checkout | Stripe's payment form for the seller's commission, for the person to pay by card in an app Cypress made (Grove). Since 1.11.0 | A person's, in Cypress's own app | — |
Closings: Cypress staff
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
cancel_closing | POST /closings/{id}/cancel | Cancel a closing in progress, with who is responsible and what becomes of the vehicle | Cypress staff (CM token) | CLOSING.CANCELLED |
correct_closing_commission | PATCH /closings/{id}/commission-scheme | Change the commission scheme a deal carries, until its fee is invoiced | Cypress staff (CM token) | — |
record_off_platform_closing | POST /closings/{id}/off-platform | Attest the steps that happened outside Cypress; all of them close the deal and the vehicle is sold | Cypress staff (CM token) | CLOSING.COMPLETED |
regenerate_closing_fee | POST /closings/{id}/fee/regenerate | Re-run the fee step's invoicing when it failed | Cypress staff (CM token) | — |
waive_closing_requirement | PATCH /closings/{id}/requirements/{requirementId} | Waive (or restore) one required document on one closing | Cypress staff (CM token) | — |
rollback_closing | POST /closings/{id}/rollback | Reopen a closing from a step: that step pending again, every later one locked | Cypress staff (CM token, or since 1.9.0 a first-party app acting for staff, with closing:write, on its organization's closing) | CLOSING.UPDATED |
run_closing_staff_action | POST /closings/{id}/steps/{stepKey}/staff-actions | Cypress's step actions: approve or reject an uploaded Bill of Sale, accept it signed offline, confirm a step or a payment (in a sandbox: recorded, not sent) | Cypress staff (CM token; since 1.9.0 a first-party app acting for staff may confirm and confirm_payment, with closing:write, on its organization's closing) | CLOSING.STEP.COMPLETED |
set_closing_incident_status | POST /closings/{id}/incidents/{incidentId}/status | Take an incident in hand, resolve it or dismiss it | Cypress staff (CM token) | CLOSING.UPDATED |
analyze_closing_document | POST /closings/{id}/documents/{documentId}/analyze | Run Aspen's document analysis on a closing document | Cypress staff (CM token) | — |
review_closing_document | POST /closings/{id}/documents/{documentId}/review | Accept a document in review, or reject it with the reason so it is filed again | Cypress staff (CM token) | CLOSING.UPDATED |
get_closing_checklist | GET /closing-checklist | The documents closings require: Cypress's base list, or an organization's own copy | Cypress staff (CM token) | — |
add_closing_checklist_item | POST /closing-checklist | Add one required document to the base checklist or an organization's copy | Cypress staff (CM token) | — |
customize_closing_checklist | POST /closing-checklist/customize | Copy the base checklist for an organization to personalize, or revert it to the base | Cypress staff (CM token) | — |
change_closing_checklist_item | PATCH /closing-checklist/{id} | Rename a checklist document, move it, make it optional or required, reorder or archive it | Cypress staff (CM token) | — |
archive_closing_checklist_item | DELETE /closing-checklist/{id} | Take a document off a checklist (its slot key stays reserved) | Cypress staff (CM token) | — |
assign_document_template_step | PUT /document-templates/{id}/checklist-slot | Make a template the document a closing step requires, or clear it | Cypress staff (CM token) | — |
Document templates
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_document_templates | GET /document-templates | Your organization's closing document templates and Cypress's defaults | Yes | — |
create_document_template | POST /document-templates | A new template, blank or copied from a Cypress default (a draft) | Yes | — |
get_document_template | GET /document-templates/{id} | A template's draft and published layout, and every field it may bind | Yes | — |
save_document_template_draft | PATCH /document-templates/{id} | Rename a template or save its draft layout (never the published version) | Yes | — |
archive_document_template | DELETE /document-templates/{id} | Archive a template: closings stop generating from it | A person's | — |
set_document_template_background | POST /document-templates/{id}/background | Upload a PDF (1 to 50 pages) the template draws onto, in its draft | Yes | — |
remove_document_template_background | DELETE /document-templates/{id}/background | Back to blank pages, in the draft | Yes | — |
get_document_template_step | GET /document-templates/{id}/checklist-slot | The closing step a template's document is required at, if any | Yes | — |
publish_document_template | POST /document-templates/{id}/publish | Make the draft the live version that closings generate from | A person's | — |
list_document_template_versions | GET /document-templates/{id}/versions | Every published version of a template, newest first | Yes | — |
restore_document_template_version | POST /document-templates/{id}/versions/{versionId}/restore | Copy an earlier version's layout onto the draft (it is not published) | Yes | — |
list_document_images | GET /document-templates/images | Your organization's pictures for documents, and the company logo slot | Yes | — |
upload_document_image | POST /document-templates/images | Upload a PNG or JPEG your templates can place | Yes | — |
Storefront and share links
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
get_storefront | GET /organization/storefront | Your public storefront: on or off, its address, title, headline, colors, pictures | Yes | — |
update_storefront | PATCH /organization/storefront | Publish or take down your storefront, or change its title, headline and color | A person's | ORGANIZATION.UPDATED |
set_storefront_banner | POST /organization/storefront/banner | Upload the picture across the top of your storefront | Yes | ORGANIZATION.UPDATED |
set_storefront_logo | POST /organization/storefront/logo | Upload the organization's logo (the storefront and your documents use it) | Yes | ORGANIZATION.UPDATED |
put_fleet_on_storefront | POST /organization/storefront/backfill | Show every vehicle eligible for the storefront on it, in one go | Yes | — |
revoke_vehicle_share_link | POST /vehicles/{id}/share-links/{linkId}/revoke | Revoke one of a vehicle's share links: whoever holds it no longer sees the vehicle | Yes | — |
reactivate_vehicle_share_link | POST /vehicles/{id}/share-links/{linkId}/reactivate | Reactivate a revoked share link (an expired one needs a new expiry) | Yes | — |
delete_vehicle_share_link | DELETE /vehicles/{id}/share-links/{linkId} | Delete one share link (it is revoked first; its past visits stay in the market history) | Yes | — |
list_vehicles_on_market | GET /vehicles/on-market | Your approved, live, held, under-offer, accepted and recently sold vehicles, with views, saves and offers | Yes | — |
refresh_vehicle_sakura_read | POST /vehicles/{id}/sakura-read | A fresh Sakura read of one of your vehicles: hold, reprice or sell, and why | Yes | — |
Organization and settings
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
get_dealer_request | GET /organization/dealer-request | An individual's latest request to become a dealer, and the business checklist it needs | A person's | — |
request_dealer_account | POST /organization/dealer-request | An individual asks Cypress to make its account a business | A person's (no API key) | ORGANIZATION.UPDATED |
get_organization_profile | GET /organization/profile | The organization's name, address, tax id and primary contact, its Cypress Manager, and what Cypress may do for it | A person's | — |
update_organization_profile | PATCH /organization/profile | Change the organization's name, address, tax id or primary contact (only the fields sent) | A person's | ORGANIZATION.UPDATED |
set_cypress_delegation | PATCH /organization/delegation | Consent: whether Cypress may act on your behalf, decide review offers, make buyer offers, and until when (expiresAt, since 1.9.0) | A person's (no API key) | ORGANIZATION.UPDATED |
get_onboarding_status | GET /organization/onboarding | The organization's status and, while provisional, the onboarding items still open | Yes | — |
list_locations | GET /locations | The lots and yards vehicles are picked up from, active first, with their aliases (since 1.9.0) | Yes | — |
create_location | POST /locations | Add a lot or yard (names are unique in the organization) | Yes, but never aliases | ORGANIZATION.UPDATED |
update_location | PATCH /locations/{locationId} | Change a location's details (address, contact, PO number, since 1.9.0 its aliases, the other names files use for it), or bring an archived one back (isActive) | Yes, but never aliases | ORGANIZATION.UPDATED |
archive_location | DELETE /locations/{locationId} | Archive a location (kept for history; update_location brings it back) | A person's | ORGANIZATION.UPDATED |
list_lenders | GET /lenders | The lenders that hold liens on the organization's vehicles, with their payoff details | A person's | — |
create_lender | POST /lenders | Add a lender and where its payoffs go | A person's (no API key) | BANKING.UPDATED |
update_lender | PATCH /lenders/{id} | Change a lender's contact or payoff details (only the fields sent) | A person's (no API key) | BANKING.UPDATED |
archive_lender | DELETE /lenders/{id} | Archive a lender (kept for history; update_lender with isActive brings it back) | A person's (no API key) | BANKING.UPDATED |
list_bank_accounts | GET /bank-accounts | The accounts buyers and Cypress pay the organization into, with their numbers | A person's | — |
create_bank_account | POST /bank-accounts | Add an account the organization is paid into | A person's (no API key) | BANKING.UPDATED |
update_bank_account | PATCH /bank-accounts/{id} | Change a bank account's details (only the fields sent) | A person's (no API key) | BANKING.UPDATED |
archive_bank_account | DELETE /bank-accounts/{id} | Archive a bank account (kept for history; update_bank_account with isActive brings it back) | A person's (no API key) | BANKING.UPDATED |
list_transporters | GET /transporters | The haulers a closing sheet picks from | Yes | — |
create_transporter | POST /transporters | Save a hauler for later closings | Yes | ORGANIZATION.UPDATED |
update_transporter | PATCH /transporters/{id} | Change a saved hauler (closings that already copied it keep their copy) | Yes | ORGANIZATION.UPDATED |
archive_transporter | DELETE /transporters/{id} | Archive a saved hauler (never deleted) | A person's | ORGANIZATION.UPDATED |
list_title_addresses | GET /title-addresses | The addresses a closing sheet mails titles to | Yes | — |
create_title_address | POST /title-addresses | Save where titles are mailed | Yes | ORGANIZATION.UPDATED |
update_title_address | PATCH /title-addresses/{id} | Change a saved address (closings that already copied it keep their copy) | Yes | ORGANIZATION.UPDATED |
archive_title_address | DELETE /title-addresses/{id} | Archive a saved address (never deleted) | A person's | ORGANIZATION.UPDATED |
list_custom_fields | GET /custom-fields | The fields your document templates bind as custom.seller.<key> or custom.buyer.<key> | Yes | — |
create_custom_field | POST /custom-fields | Add a field your document templates can bind (its key never changes) | Yes | ORGANIZATION.UPDATED |
update_custom_field | PATCH /custom-fields/{id} | Change a custom field's label, default, requirement or order (never its key) | Yes | ORGANIZATION.UPDATED |
archive_custom_field | DELETE /custom-fields/{id} | Archive a custom field (sheets that carry it keep their values) | A person's | ORGANIZATION.UPDATED |
list_org_documents | GET /organization/documents | The W-9, dealer licenses and other documents, every card with its history and review | A person's | — |
upload_org_document | POST /organization/documents | Upload a W-9, a dealer license or another document (a new card, or a new version of one) | A person's | ORGANIZATION.UPDATED |
remove_org_document | DELETE /organization/documents/slots/{slotId} | Remove one of the organization's document cards (an admin's; a W-9 is replaced, never removed) | A person's | ORGANIZATION.UPDATED |
get_seller_terms | GET /seller-terms | The organization's seller terms: every version, and which is in force | Yes | — |
set_seller_terms | PUT /seller-terms | Save new seller terms (a new version) and switch them on or off | A person's | ORGANIZATION.UPDATED |
Members
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
invite_member | POST /members/invitations | Invite a person as Fleet Manager or Billing Admin (they get an email to set a password) (in a sandbox: recorded, not sent) | A person's (no API key) | MEMBER.UPDATED |
change_member_role | PUT /members/{userId}/role | Make a member an Admin, Fleet Manager or Billing Admin (never your own role, never an agent's) | A person's (no API key) | MEMBER.UPDATED |
remove_member | DELETE /members/{userId} | Take a person out of the organization (never yourself, never the last admin, never an agent) | A person's (no API key) | MEMBER.UPDATED |
update_my_profile | PATCH /me | Change the first name, last name or phone of the person the token acts for | A person's (no API key) | — |
list_my_activity | GET /me/activity | The audit trail of the person (or agent) the token acts for, newest first | Yes | — |
Billing
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_invoices | GET /billing/invoices | The organization's commission invoices, newest first, with what was paid, credited and owed | A person's | — |
get_billing_summary | GET /billing/summary | Auto-pay on file, the ACH credit line and its use, the cycle, deferred and failed batches | A person's | — |
get_invoice_settings | GET /billing/invoice-settings | The parts each commission invoice line prints, whether Deal Setup needs a PO, how a close splits into invoices, and a preview line | A person's | — |
list_credit_movements | GET /billing/credit-ledger | Every movement of the organization's account credit, newest first (up to 200) | A person's | — |
list_credit_notes | GET /billing/credit-notes | The credit notes issued against your invoices, newest first (up to 100) | A person's | — |
list_unapplied_bank_transfers | GET /billing/bank-transfers | Money the organization sent by bank transfer that Cypress holds unapplied, with the open invoices it could pay (the organization's admins and billing admins, and Cypress staff for it; since 1.9.0) | A person's | — |
get_invoice_credit_offer | GET /billing/invoices/{id}/credit-offer | What an invoice still owes and how much of your account credit could settle it | A person's | — |
Analytics
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
get_trading_book | GET /analytics/companies | Your sales and purchases by company: units, money, prices against the floor | Yes | — |
get_company_report | GET /analytics/companies/{orgId} | Your organization's performance report, as seller or as buyer | Yes | — |
get_company_insight | GET /analytics/companies/{orgId}/insight | Sakura's one-paragraph read of the performance report, and what to do next | Yes | — |
get_account_profile | GET /analytics/accounts/{orgId} | What an account buys and sells: yours, or a buyer that bought from you | Yes | — |
get_my_engagement | GET /analytics/engagement | What your stock attracts (as seller) or what your people browse (as buyer) | Yes | — |
get_my_profile_insight | GET /analytics/profile-insight | Sakura's read on your organization: the Today card | Yes | — |
suggest_vehicle_buyers | GET /vehicles/{id}/suggested-buyers | The buyer companies whose buying history fits one of your vehicles | Yes | — |
suggest_promotion_audience | GET /promotions/{id}/suggested-audience | The buyer companies a promotion's vehicles fit best: a starting audience a person edits | Yes | — |
Mission Control
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_interest | GET /mission-control/interest | The buyers who saved, returned to or opened your vehicles and have no deal on them | A person's | — |
open_deal_from_interest | POST /mission-control/interest/adopt | Turn a buyer's interest in one of your vehicles into a deal at INTERESTED | A person's | — |
Cypress staff: organizations
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_customer_organizations | GET /staff/organizations | The business organizations on Cypress, newest first, with their onboarding and channels | Cypress staff (CM token) | — |
get_customer_organization | GET /staff/organizations/{id} | One organization as BackOffice shows it: details, members, products, billing and ACH | Cypress staff (CM token) | — |
create_customer_organization | POST /staff/organizations | Create a business organization in onboarding, with its first admin (in a sandbox: recorded, not sent) | Cypress staff (CM token) | — |
update_customer_organization | PATCH /staff/organizations/{id} | Name, address, contact and the account manager | Cypress staff (CM token) | ORGANIZATION.UPDATED |
change_organization_status | POST /staff/organizations/{id}/transitions | Activate, suspend, reactivate, reject, block or unblock an organization | Cypress staff (CM token) | ORGANIZATION.UPDATED |
set_organization_profiles | PUT /staff/organizations/{id}/profiles | Seller, buyer, or both | Cypress staff (CM token) | ORGANIZATION.UPDATED |
get_organization_product | GET /staff/organizations/{id}/products/{product} | Whether a product is on, who asked for it, and what switching it off keeps | Cypress staff (CM token) | — |
switch_organization_product | PUT /staff/organizations/{id}/products/{product} | Planning, Buy planning or Automations: on or off for one organization | Cypress staff (CM token) | ORGANIZATION.UPDATED |
get_organization_account_rules | GET /staff/organizations/{id}/account-rules | Its kind's rules, its own overrides, the result and what it used | Cypress staff (CM token) | — |
set_organization_account_rules | PUT /staff/organizations/{id}/account-rules | Override its kind's rules for this one organization | Cypress staff (CM token) | ORGANIZATION.UPDATED |
get_organization_dealer_request | GET /staff/organizations/{id}/dealer-request | The latest dealer request and the business checklist it needs | Cypress staff (CM token) | — |
decide_dealer_request | POST /staff/organizations/{id}/dealer-request | Approve (the checklist done): the individual becomes a business; or decline, with a reason the person reads | Cypress staff (CM token) | ORGANIZATION.UPDATED |
list_organization_activity | GET /staff/organizations/{id}/activity | The organization's audit trail, newest first | Cypress staff (CM token) | — |
approve_organization_application | POST /staff/organizations/{id}/application/approve | Approve an organization's registration: limited access, and its admin is emailed (in a sandbox: recorded, not sent) | Cypress staff (CM token) | — |
reject_organization_application | POST /staff/organizations/{id}/application/reject | Reject an organization's registration: its admin is suspended and the applicant told why (in a sandbox: recorded, not sent) | Cypress staff (CM token) | — |
get_onboarding_checklist | GET /staff/organizations/{id}/checklist | The onboarding checklist: each item, its phase and whether it is done | Cypress staff (CM token) | — |
mark_onboarding_checklist_item | PATCH /staff/organizations/{id}/checklist | Tick or untick one item of the onboarding checklist | Cypress staff (CM token) | — |
add_onboarding_checklist_item | POST /staff/organizations/{id}/checklist | A custom item on one organization's onboarding checklist | Cypress staff (CM token) | — |
list_organization_documents | GET /staff/organizations/{id}/documents | Its onboarding documents (W-9, dealer license, others), with links | Cypress staff (CM token) | — |
get_organization_document | GET /staff/organizations/{id}/documents/{docId} | One document with its review, its AI analysis and a link | Cypress staff (CM token) | — |
upload_organization_document | POST /staff/organizations/{id}/documents | Upload a W-9, dealer license or other document on an organization's behalf | Cypress staff (CM token) | ORGANIZATION.UPDATED |
analyze_organization_document | POST /staff/organizations/{id}/documents/{docId}/analyze | Sapele reads a document and says whether it is complete and valid | Cypress staff (CM token) | — |
review_organization_document | POST /staff/organizations/{id}/documents/{docId}/review | Approve, reject (with a reason) or put under review one document | Cypress staff (CM token) | ORGANIZATION.UPDATED |
remove_organization_document_slot | DELETE /staff/organizations/{id}/document-slots/{slotId} | Take a document card off an organization (a W-9 is replaced, never removed) | Cypress staff (CM token) | — |
invite_organization_member | POST /staff/organizations/{id}/members | Add a person to an organization with a role; they are emailed a sign-in link (in a sandbox: recorded, not sent) | Cypress staff (CM token) | MEMBER.UPDATED |
change_organization_member_role | PUT /staff/organizations/{id}/members/{userId}/role | Make a member an admin, a Fleet Manager or a billing admin | Cypress staff (CM token) | MEMBER.UPDATED |
update_organization_member_profile | PATCH /staff/organizations/{id}/members/{userId} | A member's first name, last name and phone | Cypress staff (CM token) | MEMBER.UPDATED |
revoke_organization_member | DELETE /staff/organizations/{id}/members/{userId} | Take a person out of an organization (restore_organization_member brings them back) | Cypress staff (CM token) | MEMBER.UPDATED |
restore_organization_member | POST /staff/organizations/{id}/members/{userId}/restore | Give a revoked member their access back, with their old role | Cypress staff (CM token) | MEMBER.UPDATED |
send_member_password_reset | POST /staff/organizations/{id}/members/{userId}/password-reset | Send a member the password-reset email (to their own address) (in a sandbox: recorded, not sent) | Cypress staff (CM token) | — |
update_organization_billing_details | PATCH /staff/organizations/{id}/billing | Tax id, tax exemption, billing emails and billing address | Cypress staff (CM token) | — |
get_organization_invoice_settings | GET /staff/organizations/{id}/invoice-settings | The parts each commission invoice line prints, whether Deal Setup needs a PO, how a close splits into invoices, and a preview line | Cypress staff (CM token) | — |
update_organization_invoice_settings | PATCH /staff/organizations/{id}/invoice-settings | Set the parts each invoice line prints (in order), require a PO on every deal, or how a close splits into invoices | Cypress staff (CM token) | — |
list_organization_ach_batches | GET /staff/organizations/{id}/ach/batches | The organization's last 20 ACH conciliations, with their invoices | Cypress staff (CM token) | — |
list_private_customers | GET /staff/customers | The private individuals who buy on Cypress, newest first | Cypress staff (CM token) | — |
get_private_customer | GET /staff/customers/{id} | One private individual's account | Cypress staff (CM token) | — |
resend_customer_confirmation | POST /staff/customers/{id}/resend-confirmation | Send the confirm-your-email message again, with a fresh link (in a sandbox: recorded, not sent) | Cypress staff (CM token) | — |
list_cypress_staff | GET /staff/team | Cypress's own people: Cypress Managers and admins | Cypress staff (CM token) | — |
get_cypress_staff_member | GET /staff/team/{userId} | One Cypress staff member and their role | Cypress staff (CM token) | — |
list_cypress_staff_activity | GET /staff/team/{userId}/activity | A staff member's actions across every organization, newest first | Cypress staff (CM token) | — |
get_default_account_manager | GET /staff/platform/default-account-manager | Who at Cypress gets the copy of notifications for organizations with no account manager | Cypress staff (CM token) | — |
set_default_account_manager | PUT /staff/platform/default-account-manager | Choose (or clear) the default account manager | Cypress staff (CM token) | — |
get_account_rules | GET /staff/platform/account-rules | What every individual and every business may do, and how much | Cypress staff (CM token) | — |
set_account_rules | PUT /staff/platform/account-rules | Edit the defaults for every individual and every business | Cypress staff (CM token) | — |
Cypress staff: review queues
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_update_requests | GET /staff/update-requests | The review queue: sellers' floor-price, location and archive requests | Cypress staff (CM token) | — |
get_review_queue_counts | GET /staff/update-requests/stats | Open update requests, open archive requests, and archive decisions due | Cypress staff (CM token) | — |
get_update_request | GET /staff/update-requests/{id} | One update request with its vehicle | Cypress staff (CM token) | — |
get_update_request_impact | GET /staff/update-requests/{id}/impact | The open offers a price change would decline, leave in review, or now qualify | Cypress staff (CM token) | — |
reject_update_request | POST /staff/update-requests/{id}/reject | Turn a request down; the seller is told, and a paused listing resumes | Cypress staff (CM token) | VEHICLES.DISPOSITION.RESOLVED |
approve_price_update | POST /staff/update-requests/{id}/approve-price | Apply a seller's new prices; decline, keep or accept the open offers as you say | Cypress staff (CM token) | VEHICLES.UPDATED |
approve_location_update | POST /staff/update-requests/{id}/approve-location | Apply a seller's new pickup location; every open offer is withdrawn and its buyer told | Cypress staff (CM token) | — |
approve_archive_request | POST /staff/update-requests/{id}/approve-archive | Archive the vehicle as the seller asked: offers withdrawn, a closing in progress cancelled | Cypress staff (CM token) | VEHICLES.DISPOSITION.RESOLVED |
list_archived_vehicles | GET /staff/archives | Every archive record with its vehicle, disposition and Cypress's decision | Cypress staff (CM token) | — |
record_archive_decision | POST /staff/archives/{id}/decision | No action, a warning, a penalty fee or an escalation, toward whoever is responsible | Cypress staff (CM token) | — |
roll_back_archive | POST /staff/archives/{id}/rollback | Put an archived vehicle back where it was; its offers and closing stay ended | Cypress staff (CM token) | — |
list_pending_label_applications | GET /staff/label-applications | Labels a rule wants on a vehicle, waiting for Cypress to approve | Cypress staff (CM token) | — |
decide_label_application | POST /staff/label-applications/{id}/decision | Put the proposed label on the vehicle, or dismiss it | Cypress staff (CM token) | — |
Cypress staff: labels, pricing rules and channels
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_platform_labels | GET /staff/labels | Cypress's labels and every organization's, with how many vehicles carry each | Cypress staff (CM token) | — |
create_platform_label | POST /staff/labels | A new vehicle label, for every organization or for one | Cypress staff (CM token) | — |
update_platform_label | PATCH /staff/labels/{id} | Rename, recolor, recategorize or switch off a label | Cypress staff (CM token) | — |
delete_platform_label | DELETE /staff/labels/{id} | Delete a label no vehicle carries; one in use is switched off instead | Cypress staff (CM token) | — |
list_label_rules | GET /staff/label-rules | The rules that put labels on vehicles by themselves | Cypress staff (CM token) | — |
create_label_rule | POST /staff/label-rules | A rule that puts a label on the vehicles that meet its conditions | Cypress staff (CM token) | — |
list_platform_pricing_rules | GET /staff/pricing-rules | Cypress's pricing rules and the organizations' own | Cypress staff (CM token) | — |
create_platform_pricing_rule | POST /staff/pricing-rules | A rule that approves and lists, rejects, or holds for review the vehicles that meet it | Cypress staff (CM token) | — |
update_platform_pricing_rule | PATCH /staff/pricing-rules/{id} | Change a pricing rule's conditions, outcome, figures, priority or switch it off | Cypress staff (CM token) | — |
delete_platform_pricing_rule | DELETE /staff/pricing-rules/{id} | Delete a pricing rule | Cypress staff (CM token) | — |
list_sales_channels | GET /staff/channels | The platform's channels and the organizations' grants, with their commission | Cypress staff (CM token) | — |
grant_sales_channel | POST /staff/channels | An organization's own grant of a channel, with its commission scheme | Cypress staff (CM token) | ORGANIZATION.UPDATED |
update_sales_channel | PATCH /staff/channels/{id} | Enable or disable a channel, rename it or change its commission | Cypress staff (CM token) | ORGANIZATION.UPDATED |
list_commission_schemes | GET /staff/commission-schemes | What Cypress charges per sale on each channel | Cypress staff (CM token) | — |
create_commission_scheme | POST /staff/commission-schemes | A new commission amount, created switched off | Cypress staff (CM token) | — |
update_commission_scheme | PATCH /staff/commission-schemes/{id} | Change a scheme's name or amount, or switch it on or off | Cypress staff (CM token) | — |
Cypress staff: the Automation Hub
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_hub_automations | GET /staff/automations | Cypress's automations and every organization's, with their review state | Cypress staff (CM token) | — |
get_hub_automation | GET /staff/automations/{id} | One automation with its versions and their graphs | Cypress staff (CM token) | — |
create_hub_automation | POST /staff/automations | A Cypress automation (GLOBAL) or one for an organization (ORG), with its first draft | Cypress staff (CM token) | — |
update_hub_automation | PATCH /staff/automations/{id} | Name, category, stages, priority, who it runs for, or switch it on or off | Cypress staff (CM token) | — |
delete_hub_automation | DELETE /staff/automations/{id} | Delete an automation never published (with its dry runs) | Cypress staff (CM token) | — |
save_hub_automation_draft | PUT /staff/automations/{id}/draft | Save the graph as the draft (a new draft when there is none) | Cypress staff (CM token) | — |
publish_automation | POST /staff/automations/{id}/publish | Publish the draft: it replaces the published version and runs (for an organization's, this approves it) | Cypress staff (CM token) | AUTOMATION.PUBLISHED |
send_back_automation | POST /staff/automations/{id}/send-back | Answer a submitted draft with what to change | Cypress staff (CM token) | AUTOMATION.SENT_BACK |
run_hub_automation | POST /staff/automations/{id}/run | Run the published version on chosen vehicles (or as its trigger would), for real or as a dry run | Cypress staff (CM token) | — |
duplicate_hub_automation | POST /staff/automations/{id}/duplicate | A new draft automation copying another's latest graph | Cypress staff (CM token) | — |
restore_automation_version | POST /staff/automations/{id}/versions/{versionId}/restore | Make an earlier version's graph the draft again | Cypress staff (CM token) | — |
list_hub_automation_runs | GET /staff/automations/runs | Runs across the Hub, newest first, with the last day's numbers | Cypress staff (CM token) | — |
get_hub_automation_run | GET /staff/automations/runs/{runId} | One run with its steps and its vehicle | Cypress staff (CM token) | — |
Cypress staff: platform activity
Who uses Cypress and what they do, as Admin › Platform activity shows it. Reads only, for a CM token. period is 7, 30 or 90 days or
quarter (the quarter so far), in whole UTC days ending yesterday, against as many days before; 30 when left out. Since 1.6.0.
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
get_platform_activity_overview | GET /staff/platform-activity/overview | Active users by side (daily, weekly, in the period), who did the work, and the path from first visit to purchase | Cypress staff (CM token) | — |
get_platform_activity_funnel | GET /staff/platform-activity/funnel | The buyer and seller funnels and email reach, for a period | Cypress staff (CM token) | — |
get_platform_activity_side | GET /staff/platform-activity/sides/{side} | One side: every action on the list, post-sale by stage, and the most active organizations | Cypress staff (CM token) | — |
list_platform_activity_orgs | GET /staff/platform-activity/orgs | Every customer organization and person active in the period or the one before | Cypress staff (CM token) | — |
get_platform_activity_org | GET /staff/platform-activity/orgs/{id} | One customer organization, person by person, and who else worked on it | Cypress staff (CM token) | — |
get_platform_activity_team | GET /staff/platform-activity/team | What Cypress managers did for customers and for Cypress, how, and the agents on customers' accounts | Cypress staff (CM token) | — |
get_platform_activity_manager | GET /staff/platform-activity/team/{userId} | One Cypress manager: for whom, how, their days and recent actions | Cypress staff (CM token) | — |
get_platform_activity_coming_back | GET /staff/platform-activity/coming-back | People or organizations by the month they were first active, and who returns | Cypress staff (CM token) | — |
Agent quality
How an agent of an app Cypress made performs, and the audit of its flagged answers (Admin › Cedar quality). The app (Grove) sends its
benchmark runs and flagged answers and reads the verdicts back on its own token, with agent-quality:write; an API key, a partner app, an
agent's token and a CM token are refused. Cypress staff read the runs and give the verdicts. See Agent quality.
Since 1.9.0.
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
record_agent_benchmark_run | POST /agent-quality/benchmark-runs | Send one benchmark run: the setting, the summary and every question with its answer, marks and time; the same id again replaces it | A first-party app's token only | — |
record_agent_audit_items | POST /agent-quality/audit-items | Send flagged answers for review; one sent again only gains flags, one already decided never changes | A first-party app's token only | — |
list_agent_verdicts | GET /agent-quality/verdicts | The organization's verdicts after a time, oldest first, with what to teach and what to add to the benchmark | A first-party app's token only | — |
list_agent_benchmark_runs | GET /agent-quality/benchmark-runs | Every organization's benchmark runs, newest first, with their summaries and gates | Cypress staff (CM token) | — |
get_agent_benchmark_run | GET /agent-quality/benchmark-runs/{id} | One run with every question: the answer, its marks, errors and time | Cypress staff (CM token) | — |
list_agent_audit_items | GET /agent-quality/audit-items | The flagged answers up for review, or decided, with counts and the queue by flag and organization | Cypress staff (CM token) | — |
decide_agent_audit_item | POST /agent-quality/audit-items/{id}/verdict | One final verdict: right, wrong (with what the right answer was) or dismissed; teach the organization, add it to the benchmark | Cypress staff (CM token) | — |
Huddle
An organization's conversations, the same rooms people see in Huddle (Cypress) and in Grove: the huddle, conversations (TEAM rooms) and their threads, a
person's room with Cedar, deal lanes, and the Inbox. Every call is made as the person or agent the token acts for and sees what they would;
an API key is refused. See Huddle. Since 1.9.0.
| Tool | REST | Does | Agent | Webhook |
|---|---|---|---|---|
list_huddle_rooms | GET /huddle/rooms | The rooms you are in with unread counts and their last message, the ones you may join, and your Inbox count; view=mine for every organization | Yes | — |
get_huddle_room | GET /huddle/rooms/{roomId} | One room: its title, topic, members, whether you are in it or may join, who you may add | Yes | — |
list_huddle_messages | GET /huddle/rooms/{roomId}/messages | A room's messages, oldest first, or one thread's replies; Grove's cards in words | Yes | — |
post_huddle_message | POST /huddle/rooms/{roomId}/messages | Post or reply as you; a mention reaches the person's Inbox, @Cedar gets Cedar's answer | Yes | — |
edit_huddle_message | PATCH /huddle/messages/{messageId} | Change your own message's text, within a day | Yes | — |
delete_huddle_message | DELETE /huddle/messages/{messageId} | Delete your own message for everyone | Yes | — |
react_to_huddle_message | POST /huddle/messages/{messageId}/reactions | Add or take back a reaction: thumbs, check, heart, eye, question, spark | Yes | — |
pin_huddle_message | POST /huddle/messages/{messageId}/pin | Pin a message or card to its room, or unpin it; up to 50 pins per room | Yes | — |
list_huddle_pins | GET /huddle/rooms/{roomId}/pins | What is pinned to a room, oldest pin first | Yes | — |
join_huddle_room | POST /huddle/rooms/{roomId}/join | Join the huddle or an open channel; a Cypress Manager, any customer organization's | No (a person's) | — |
create_huddle_channel | POST /huddle/rooms | Open a channel, open or private, in the organization in view | No (a person's) | — |
add_huddle_members | POST /huddle/rooms/{roomId}/members | Add the organization's people or agents to a channel | No (a person's) | — |
open_huddle_direct | POST /huddle/direct | Open a private conversation with one person of the organization (or its Cypress Manager), the same room every time | No (a person's) | — |
list_huddle_inbox | GET /huddle/inbox | What needs you, newest first: direct messages, mentions, offers, matches, closings, tasks, what Cedar needs | Yes | — |
What is not an action
Signing in, the AI chat and voice streams (Cedar is reached through Insights and Cypress Operate), previews a screen computes as you type, file transfer plumbing (the actions that need a file take it themselves), cron jobs and inbound webhooks.
Kept in the app on purpose, for a person:
- Moving money: paying an invoice, a card or a bank account to pay with,
an ACH charge, recording a payment, a credit note or account credit. The
billing reads are actions (
billing:read). - Keys and tokens: making an API key or a CM token, changing a key's scopes, switching an MCP server back on. A credential never makes or widens a credential.
- Consent: the switches that let Cypress act for your organization are
your admin's (
set_cypress_delegation, never through a CM token or an agent). - Sign-in details: passwords and the email a person signs in with.
- Cypress's own staff accounts.
- Ops consoles: queues, workers, the notification provider's admin, processing logs.