# Agents in Production: SF meetup

> Register for the Agents in Production meetup in San Francisco (a demo event registration).

Thursday, November 12, 6 PM · San Francisco. Tell us who’s coming.

This is a form you can fill in for a person without opening a browser. Its fields are `full_name`, `email`, `phone`, `attendees`, `guest_names`, `dietary`, `comments` (`full_name`, `email`, `attendees` required). Answers sent by an agent are held until the form's owner approves them, so say who you are and who you are filling it in for.

**Only send what your person told you. Ask them for any required answer you do not have, and never tick a consent box or answer a demographic question for them unless they told you to.**

## How to fill it

1. **If you can send HTTP requests:** `POST https://ui.usecube.io/f/event-registration` with a JSON body `{"answers": {...}, "agent": {"name": "...", "model": "..."}, "on_behalf_of": "..."}`. Details below.
2. **If you have the Cube MCP connector** (`https://ui.usecube.io/mcp`): call `submit_form` with `id: "event-registration"`, `answers` and `on_behalf_of`; or `prefill_link` with `id` and `answers` to get the link for your person (a file cannot ride in it; they attach it on the page).
3. **If you can't do either (a chatbot):** give your person this link with the answers filled in, each one URL-encoded (lists and objects as JSON). They check it and press Submit themselves:

   ```
   https://ui.usecube.io/f/event-registration#full_name=...&email=...&phone=...&attendees=...&guest_names=...&dietary=...&comments=...
   ```

   For example: https://ui.usecube.io/f/event-registration#full_name=Jane%20Doe&email=jane%40example.com&attendees=1

## Fields

- **full_name** (string, up to 200 characters, required): The attendee's full name.
- **email** (string, email, required): Where the tickets go.
- **phone** (string, E.164 phone number like +14155550123): A number for day-of updates.
- **attendees** (integer from 1 to 5, required): How many people are coming, the attendee included.
- **guest_names** (string, up to 1,000 characters): The names of the other people coming, if any.
- **dietary** (object {choices: any of "Vegetarian", "Vegan", "Gluten-free", "Halal", "Kosher", "Nut allergy"; other: what they wrote after "Other", or null}): Any dietary needs in the group.
- **comments** (string, up to 2,000 characters): Anything else the organizers should know.

## Submit over HTTP

`POST https://ui.usecube.io/f/event-registration` with `Content-Type: application/json`:

```json
{
  "answers": {
    "full_name": "Jane Doe",
    "email": "jane@example.com",
    "attendees": 1
  },
  "agent": {
    "name": "Claude",
    "model": "claude-sonnet-4-5"
  },
  "on_behalf_of": "Jane Doe"
}
```

`answers` is required. `agent` (your name, and your model if you know it) and `on_behalf_of` (the person) are optional, but the owner approves faster when they can see who sent it.

```sh
curl -X POST https://ui.usecube.io/f/event-registration \
  -H 'Content-Type: application/json' \
  -d '{"answers":{"full_name":"Jane Doe","email":"jane@example.com","attendees":1},"agent":{"name":"Claude","model":"claude-sonnet-4-5"},"on_behalf_of":"Jane Doe"}'
```

A success is `201 Created`:

```json
{ "id": "s_...", "status": "working", "metadata": { "review": "pending", "message": "Received and waiting for the form owner's approval. It counts once approved." }, "receipt_url": "https://ui.usecube.io/s/..." }
```

`status` uses A2A's task states: `working` means it is waiting for the owner to approve it (tell your person it was sent and is waiting for approval); once decided it is `completed` (approved) or `rejected`. `receipt_url` is your person's own view of what was sent; give it to them.

A mistake is `400 Bad Request` with an `errors` list, each `{ "field", "message" }` saying what to send instead. Fix those answers and send again. `429 Too Many Requests` means wait the `Retry-After` seconds.

## Other formats

- [JSON Schema of the answers](https://ui.usecube.io/f/event-registration.json)
- [This page as Markdown](https://ui.usecube.io/f/event-registration.md)
- MCP (Streamable HTTP): `https://ui.usecube.io/mcp`, tools `list_forms`, `read_form`, `submit_form`, `prefill_link`, `draft_form`.
- In a browser with WebMCP, the page's form is the tool `submit_event_registration`.
