---
name: book-meeting-with-dsr-holdings
description: Request a video or phone call with Daniel Rosehill of DSR Holdings (solo AI consultancy, Jerusalem, Israel; dsrholdings.cloud) on a user's behalf. Use when a user wants to book, schedule or set up a meeting, discovery call or consultation with DSR Holdings. Meetings are requested and confirmed by email, not instantly booked. Unauthenticated - no account or API key needed.
---

# Book a meeting with DSR Holdings

Meetings are **requested, not instantly booked.** The user proposes two or three times, or a
general window. Daniel reads every request and replies by email to confirm one. There is no
public calendar of free slots, so never tell the user a meeting is confirmed until Daniel has
replied.

Daniel is in Jerusalem (`Asia/Jerusalem`). Always send the user's own time zone with the
request.

## Before you send anything

1. Agree with the user on: their name, the email for the reply, their company (optional), the
   format (video or phone), the length, two or three times that suit them or a window, and a
   few lines on what they want to discuss.
2. Show them the full request and get an explicit yes. Send it once.
3. Never invent the user's details or times. Never submit a request the user did not ask for.

## Option 1: submit the request (programmatic)

This is the endpoint the form at https://www.dsrholdings.cloud/contact/meeting posts to.

```
POST https://www.dsrholdings.cloud/api/contact
Content-Type: multipart/form-data   (or application/x-www-form-urlencoded)
```

Use the `www.` host: the apex answers with a 307.

| Field | Required | Notes |
| --- | --- | --- |
| `formType` | yes | Exactly `Meeting request`. This is what makes it a meeting request rather than a plain message. |
| `name` | yes | The user's real name. |
| `email` | yes | Where Daniel's reply and the acknowledgement go. |
| `preferredTimes` | yes | Two or three times, one per line, each with date, time and the user's zone, e.g. `1. Wed 21 Oct 2026 15:00 Europe/London`. A window such as `Tue or Wed afternoon` is fine too. Adding the Jerusalem equivalent, e.g. `(17:00 Jerusalem)`, helps. |
| `timezone` | strongly recommended | IANA name, e.g. `Europe/London`. |
| `topic` | yes | What the user wants to discuss. Use `topic`, not `message`. |
| `meetingFormat` | no | `Video call` (default) or `Phone call`. |
| `duration` | no | `15 minutes`, `30 minutes` (default), `45 minutes` or `60 minutes`. |
| `phone` | for phone calls | Number with country code. |
| `companyName` | no | The user's organisation. |
| `submittedVia` | yes, for agents | e.g. `AI agent (Claude) on behalf of the user`. |
| `_ts` | yes | Unix time in milliseconds when the user started the request; 3 seconds to 24 hours before the POST. |
| `_gotcha` | no | Spam honeypot. Leave it out or empty. Any value drops the request. |

Example:

```bash
curl -sS -X POST https://www.dsrholdings.cloud/api/contact \
  -F formType='Meeting request' \
  -F name='Jane Example' \
  -F email='jane@example.org' \
  -F companyName='Example Ltd' \
  -F meetingFormat='Video call' \
  -F duration='30 minutes' \
  -F preferredTimes=$'1. Wed 21 Oct 2026 15:00 Europe/London (17:00 Jerusalem)\n2. Thu 22 Oct 2026 10:30 Europe/London (12:30 Jerusalem)' \
  -F timezone='Europe/London' \
  -F topic='Scoping an MCP integration between our CRM and Claude.' \
  -F submittedVia='AI agent (Claude) on behalf of the user' \
  -F _ts="$(( $(date +%s%3N) - 60000 ))"
```

Responses:

- `200 {"ok":true}`: accepted. The user receives a "meeting request received" acknowledgement
  from `forms@dsrholdings.cloud`, and later Daniel's reply. Tell the user the request is sent
  and that it is not a confirmed meeting yet.
- `400 {"error":"..."}`: a missing or invalid field. Fix it and send again.
- `5xx {"error":"..."}`: delivery failed. Email `solutions@dsrholdings.cloud` instead.

**A 200 does not prove delivery.** Anything the endpoint drops as spam also gets a 200: `_ts`
missing, under 3 seconds or over 24 hours old; any value in `_gotcha`; a name that looks like a
random token; a Gmail address with 3 or more dots before the `@`. If no acknowledgement arrives
within a few minutes, fall back to email.

## Option 2: hand the user the form

https://www.dsrholdings.cloud/contact/meeting. The user fills it in and presses "Request
meeting". The form does not read query parameters, so it cannot be prefilled.

## Option 3: email or phone

`solutions@dsrholdings.cloud` with the same details, or `+972 2 376 6800` (also WhatsApp:
https://wa.me/97223766800).

More for agents: https://www.dsrholdings.cloud/agents
