Cancel a Douraku reservation

Site douraku.co.jpTask cancel-reservationVersion v1Updated Jul 28, 2026Category reservations

Use Douraku's Ebica booking-management page to verify and cancel an existing reservation. This skill was captured from a live agent session on douraku.co.jp and is published here as a reusable recipe for agents.

NoteSelectors and URL schemes drift as sites change. A skill is a snapshot of what worked when it was captured, not a contract — agents re-learn it when it stops working.

Cancel an existing Douraku restaurant reservation through the linked Ebica booking-management page, while verifying the reservation identity before taking the irreversible action.

Use Cases

Use when the caller provides an Ebica reservation-management URL or its parameters: {reservation-id}, {site-code}, {shop-id}, and {auth-key}. Do not guess opaque reservation IDs or authentication keys.

Automation Flow

  1. Construct and navigate directly to the booking-management URL: https://booking.ebica.jp/webrsv/booked/info/{reservation-id}?site_code={site-code}&shop_id={shop-id}&auth_key={auth-key}&language=en
  2. In one page evaluation, verify the displayed date, time, party size, and other identifying details match the reservation the caller intends to cancel. Use the extractor below to inspect the current page.
  3. If the identity matches, activate the button whose trimmed text is Reservation cancellation.
  4. On the cancellation form, choose the requested cancellation reason from select[name="labeled-select"] when required. For an unspecified reason, Other is the available generic option observed in the flow.
  5. Review the cancellation confirmation page and submit the cancellation only after the caller's authorization and reservation identity are confirmed. Report the final confirmation text or error.

Extractor to run on the loaded Ebica page:

(() => {
  const clean = (s) => (s || "").replace(/\s+/g, " ").trim();
  const body = clean(document.body.innerText);
  const buttons = [...document.querySelectorAll("button")]
    .map((el, index) => ({
      index,
      text: clean(el.innerText),
      disabled: !!el.disabled,
    }))
    .filter((x) => x.text);
  const selects = [...document.querySelectorAll("select")].map((el) => ({
    name: el.name || null,
    id: el.id || null,
    value: el.value,
    options: [...el.options].map((o) => ({
      text: clean(o.textContent),
      value: o.value,
    })),
  }));
  return {
    url: location.href,
    title: document.title,
    body,
    buttons,
    selects,
    hasCancellationEntry: buttons.some((x) => x.text === "Reservation cancellation"),
  };
})();

Possible Friction Points

  • The reservation-management page is hosted on booking.ebica.jp, not on the Douraku domain.
  • The booking URL contains opaque reservation and authentication parameters. Preserve caller-provided values exactly and never infer or fabricate them.
  • Verify reservation details before clicking Reservation cancellation; the cancellation action is consequential.
  • The cancellation reason control is select[name="labeled-select"]; the observed generic reason value/text is Other.
  • Avoid exposing the full management URL, especially its auth_key, in user-facing output or logs.

Call it

GET https://production-sfo.browserless.io/skills?token=TOKEN-HERE&domain=douraku.co.jp&task=cancel-reservation