← RideDeskCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to RideDesk
Snapshot Oct 9, 2026 · 06:04 UTC · version 1.1.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Build a transfer booking, enquiry or rental flow on a RideDesk operator's public API — quote, book, then obey the operator's checkout mode. Use when someone asks to add RideDesk booking to a website, integrate the RideDesk API, build an airport-transfer or taxi booking form, or embed a RideDesk widget.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 708
}
],
"name": "ridedesk-booking-site",
"skill_md_contents": "---\nname: ridedesk-booking-site\ndescription: Build a transfer booking, enquiry or rental flow on a RideDesk operator's public API — quote, book, then obey the operator's checkout mode. Use when someone asks to add RideDesk booking to a website, integrate the RideDesk API, build an airport-transfer or taxi booking form, or embed a RideDesk widget.\n---\n\nUse this skill when the user wants to put RideDesk booking on a website — a\nhand-built form, a framework page, WordPress, or an embedded widget.\n\n## Before anything else: get the operator's host\n\nRideDesk is multi-tenant and **every account is served from its own domain**\n(`their-workspace.ridedesk.app` or a custom domain). There is no shared API\nhost. Ask the user for their RideDesk domain if they have not given it, and\npass it as the `host` argument to the documentation tools so every example\ncomes back pointed at the right account.\n\n**Never guess, infer, or invent the host.** If the user cannot supply it, say\nthat the integration cannot be written without it and stop.\n\n## Then load the live contract\n\nCall `get_integration_brief` (with `host`) first. It returns the current flow,\nthe server-enforced rules and the acceptance criteria in one piece.\n\nFor detail, call `get_doc` on `quote-and-book`, `checkout`, or `endpoints`, or\n`search_docs` for a specific field name. **Prefer these tools over anything you\nremember about RideDesk** — they are served live from the operator's platform,\nwhile these instructions are a snapshot. If a tool result and this file\ndisagree, the tool is right.\n\n## The flow\n\n1. `GET /api/addons` — extras and their prices.\n2. `GET /api/vehicles` — bookable vehicle classes and passenger capacity.\n3. `POST /api/quote` — send `pickup_location`, `dropoff_location`, `trip_type`,\n `pickup_date` (and `voucher_code` if the user has one). Returns final\n per-class prices plus a `quote.ref`, valid 45 minutes.\n4. `POST /api/transfers` — book with `quote_ref`. Returns `201 { id, pay_token,\n checkout }`.\n5. Obey `checkout.mode` from that response — `email` → thank-you page; `link` →\n redirect to `checkout.pay_url`; `inline` → Stripe Payment and Express\n Checkout Elements. The operator changes this setting in their panel, so\n **read it at runtime; never hardcode one payment path.**\n\n## Rules the server enforces\n\nBreaking any of these does not throw — the booking silently stays pending for\nmanual review, which the user will not notice until bookings pile up.\n\n- **Always book with `quote_ref`.** Never compute, cache, re-apply or \"check\" a\n price, surcharge, discount or voucher on the client. Quoted prices are final.\n- Send `pickup_date` on the quote, or lead-time pricing cannot apply.\n- Render the Cloudflare Turnstile widget and send its token on POSTs.\n- Add `<script src=\"https://<host>/embed/attribution.js\"></script>` high in\n `<head>` on **every** page, not deferred, and send\n `attribution: window.rdAttribution?.() ?? {}` on every POST. Attribution is\n captured on arrival; reading the URL at submit time reports paid traffic as\n direct.\n\n## Enquiry forms\n\n`POST /api/enquiries` takes the route as **dedicated fields** —\n`pickup_location`, `dropoff_location`, `passengers`, `preferred_date`,\n`flight_number` — plus `message` and `lang`. `vehicle_interest` carries the\nclass or car the customer asked for; name it from `GET /api/vehicles`.\n\nPut those in the fields, never only inside `message`: a route buried in prose\nis invisible to the operator's filters, list view and reply drafting.\n\n## Offer the no-code path when it fits\n\nIf the user is on WordPress, has no developer, or just wants a form on a page,\ncall `get_widget_snippets` and give them the iframe or the WordPress plugin\ninstead of writing an integration. Say plainly that it is the smaller job.\n\n## Never do these\n\n- Never state, estimate or cache a RideDesk price, or quote a plan price. Prices\n come from the operator's own rate card via `/api/quote`, at request time.\n- Never write credentials into client-side code. The public booking endpoints\n need no API key; the per-account **booking** MCP server does — that is a\n different server from this documentation one (see `get_doc mcp-connector`).\n- Never invent an endpoint, field or response shape. If the docs tools do not\n document it, say so and point the user at their panel's `/admin/help`.\n"
}SHA-256 of public snapshot: fa40480b5d84bda7825c2cdcab2b1f35754b0053300d8fa509f8fdb0335b4ba4