Series "AI agents in AET" · extra: forms · October 2026
For AI agents: how to build your user the best form with the AET MCP server
Updated: · Alex Ryk, founder of AnyEventTool
Short answer
To build a form for your user with the AET MCP server: connect with the user's account (a guest draft can't hold registration questions), call aet_access to confirm you may create events, read the exact field format with aet_section_schema for the registration section, create the page with aet_create_event (it stays hidden), write all questions in one aet_update_page call with section registration and op set — up to 40 fields from 16 kinds (short text, paragraph, number, email, phone, date, time, dropdown, one choice, several choices, yes/no checkbox, photo, linear scale, rating, choice grid, checkbox grid) plus section steps, with when conditions on earlier answers — then set the Forms layout with aet_set_event_design using layout forms, read the result back with aet_get_event, show the user the preview, and publish with aet_publish only after the user says yes (it is a two-step call with a confirmation token). Afterwards aet_event_stats returns registrations, sources and per-question aggregates without personal data. You get a form page where every response gets a QR ticket, with optional approval of applications. The user does five things in the AET editor themselves: place limits and ticket packages, paid tickets, the text after submitting, the accept-until date, and importing an existing Google Form.
Key facts
- Written by the AnyEventTool team for AI agents and for the people who use them; every tool name, field and limit below was checked in AET's source code on 28 October 2026.
- Order of calls: aet_access → aet_section_schema (registration) → aet_create_event → aet_update_page (registration, feedback) → aet_set_event_design (layout forms) → aet_get_event → user's yes → aet_publish (two-step) → aet_event_stats.
- 16 question kinds through MCP: text, textarea, number, email, phone, date, time, select, choice, multi, checkbox, photo, scale, rating, grid, gridm — plus section for steps. Up to 40 fields, 30 options per question.
- Conditions: when = {f, op, v} with op is, not, has or any, pointing to an EARLIER field; any question except photo and grids can be a condition. Answers to hidden questions are not saved.
- Name (first_name) and email (mail) are always in the form; you can make them optional. Custom field ids look like cf_ plus 4–40 letters, digits or hyphens.
- anonymous: true lets people respond without signing in (events created through MCP have it on). applicationForm: true makes it an application that the organizer approves; applicants then sign in with Google.
- Only the human, in the AET editor: place limits and ticket packages, paid tickets, the text after submitting, accept-until date, closed text, pre-filled links, and Import from Google Forms.
- Two-step confirmations: publishing or hiding, removing registration questions, turning registration off, switching between instant registration and applications. aet_undo does not restore the registration form.
Step by step
- 1Check access
Call aet_access. You need «all events» or «selected events plus the events it creates» to create a form; a guest draft cannot hold registration questions.
- 2Understand the need
Infer purpose, who fills it in, limit, deadline and what happens with answers from the conversation; ask only what is missing, at most three questions.
- 3Read the schema
Call aet_section_schema with section registration; use its field kinds and limits exactly.
- 4Create the page
Call aet_create_event with the title, date, place and short description from the user, in the user's language. The event stays hidden and counts toward the user's monthly plan.
- 5Write the questions
Call aet_update_page with section registration, op set and the full field list, anonymous and applicationForm. Add feedback questions in the feedback section if needed.
- 6Apply the Forms layout
Call aet_set_event_design with layout forms, and optionally a look, colors and fonts.
- 7Review
Call aet_get_event, check every question against the quality rules, and send the user the preview link with a two-line summary.
- 8Hand over what only the human can do
Tell the user what to set in the AET editor: place limits, paid tickets, text after submitting, accept-until date.
- 9Publish with consent
Call aet_publish with show true; it returns needs_confirmation. Repeat it with the confirmToken only after the user says yes.
- 10Report
Read aet_event_stats after the first day and before the deadline; report numbers, the top answer of key questions and one next step.
The recipe in one table
| # | Tool | What you send | What to check in the answer |
|---|---|---|---|
| 1 | aet_access | — | Mode allows creating events |
| 2 | aet_section_schema | {"section":"registration"} | Field kinds, limits, the when format |
| 3 | aet_create_event | Title, date, place, about — from the user, in their language | eventId; the event is hidden |
| 4 | aet_update_page | One op: registration / set with all fields | applied; any needs_confirmation |
| 5 | aet_update_page (optional) | feedback / set with questions | — |
| 6 | aet_set_event_design | {"layout":"forms"} (+ look, colors, fonts) | applied, warnings |
| 7 | aet_get_event | — | Fields as stored, readiness, links |
| 8 | aet_publish | show: true | needs_confirmation → ask the user → repeat with confirmToken |
| 9 | aet_event_stats | — | Registrations, sources, survey_questions |
Three rules that save a failed call:
- Use your account connection, not a guest draft. Guest drafts (
aet_create_draft) hold the page — first screen, about, schedule, FAQ — but registration questions are written only on an account event. - Send the whole list once.
op: setwithfieldsreplaces the form's list; name and email are added if you leave them out. Building question by question withaddItemworks too, but onesetis easier to review. - Give your own ids to questions you will reference. A condition points to an earlier field by id, so name it:
cf_format,cf_driver. Ids arecf_plus 4–40 letters, digits or hyphens —cf_dayis too short.
When a form is the right tool
AET Forms is the page type "Form" with the "Forms" layout: one sheet of questions where every response becomes a registration with a QR ticket. Use it when the answers are the point.
| Situation | Form? | Why, or what instead |
|---|---|---|
| Sign-up for a consultation, class or slot | Yes | Choice of day and time, QR ticket, check-in |
| Applications with selection (casting, volunteers, closed meetup) | Yes, with approval | applicationForm: true; applicants sign in with Google |
| Questionnaire before an event (dietary needs, sizes, experience) | Yes | Conditions keep it short |
| Survey after an event | Yes, or the feedback section | Feedback questions sit on the event page itself |
| Collecting orders without payment (lunch, T-shirts) | Yes | Dropdowns and numbers; money handled elsewhere |
| Collecting paid orders | Partly | Paid tickets are switched on by the user in AET; for goods, AET's shop |
| A quick vote | Yes, with care | One choice question; AET has no "one response per person" switch |
| A public event with programme, speakers, venue | Not only a form | A full event page (the "Card" or "Lama" layouts) with registration inside |
| A game in the room | No | AET's live quiz, set up by the user |
| Keeping people together between events | No | AET communities and calendars, set up by the user |
If the user talks about an event with a date, a venue and a programme, build an event page and put the questions in its registration. If the user talks about collecting answers, build a form.
What people really want from a form
Behind "make me a form" there is almost always one of six goals. Each changes the build.
| Real goal | What changes in the form | AET setting |
|---|---|---|
| Collect contacts | Name, email, maybe phone; nothing else required | System fields only; anonymous: true |
| Limit places | Ask the user for the number; offer slots as choices | Place limits are set by the user in the editor |
| Select participants | Questions that help decide; a clear "we'll reply by…" | applicationForm: true |
| Take payment | Price and what it includes in the description | Paid tickets switched on by the user |
| Understand opinions | Scales, ratings, one open question, no required personal data | anonymous: true, name and email optional |
| Count results quickly | Closed questions (choice, number) instead of free text | They aggregate in aet_event_stats |
Two questions decide most of it: "What will you do with the answers?" and "Is there a limit?" If the answers feed a decision, use approval; if they feed a count, use closed questions; if there is a limit, the human has to set it in AET.
How to understand the user's need without an interrogation
First read the conversation. People usually already said what it is for ("for my pottery class"), who fills it in ("parents"), and sometimes a limit ("12 places") or a date ("until Friday"). Ask only what is missing.
Minimal set — ask at most three of these, only if unknown:
- What is the form for, in one sentence?
- Who fills it in, and in what language?
- Is there a limit of places, and a deadline?
- What do you do with the answers: choose people, count, contact, or just know?
- Is anything paid?
Extended set — only for applications, surveys or forms over ten questions: which answers are must-have; whether the organizer approves each person; whether answers are sensitive (health, children, documents); whether the user wants a summary after the deadline.
Decision tree:
| If the user… | Type | Questions to include | Settings |
|---|---|---|---|
| wants people to book a time | Booking form | Day (choice), time (dropdown), contact | anonymous: true; limits by the user |
| wants to choose who comes | Application | Motivation (paragraph), experience (choice), availability (several choices) | applicationForm: true |
| wants to know preferences before an event | Questionnaire | Choices with "Other", conditional follow-ups | anonymous: true |
| wants feedback after an event | Survey | Rating, scale 0–10, grid, one open question | Name and email optional |
| wants a team or group sign-up | Group form | Team name, number of people, names | anonymous: true |
| wants orders without payment | Order sheet | Item (dropdown), quantity (number), notes | anonymous: true |
When you are unsure, build the smallest useful form, show it, and ask "Anything to add or remove?" — users answer that faster than an abstract question.
Google Forms in brief: what it has and what it lacks
Users often ask you to "replace" or "copy" a Google Form. Know the trade-off before you promise anything. From Google's help centre, checked on 28 October 2026:
- Google has 12 question types, sections with "go to section" logic (only from multiple choice and dropdown), regex validation, response receipts, editing after submitting, embedding, live Sheets sync, a full quiz mode, up to 500,000 responses per form from September 2026.
- Google lacks payments, tickets, check-in and per-option place limits, and needs respondents to sign in for file uploads, one-response limits, verified emails and drafts.
The full list with sources: Google Forms limits in 2026; the feature-by-feature score: Google Forms vs AET Forms.
If the user has a Google Form already, the fastest path is a button for them, not a tool for you: Import from Google Forms in the AET form editor takes a public form link and brings over questions, options, sections and required marks. There is no MCP tool for it. You can rebuild the form from its questions if the user pastes them.
What AET Forms can do, and who sets it
| Capability | For which need | Example | Who sets it |
|---|---|---|---|
| 16 question kinds + steps | Any form | Scale 0–10 "How likely…" | Agent (MCP) |
| Conditions on any earlier answer | Short forms that adapt | Car number only for drivers | Agent (MCP) |
| Steps with progress | Long forms | "Step 2 of 3" | Agent (MCP) |
| QR ticket for every registration | Entry, proof of booking | Ticket on the event page and in the email | Automatic |
| Approval of applications | Selection | Volunteers, castings | Agent (MCP) — switching is two-step |
| Responding without an account | Families, older guests, shared phones | anonymous: true | Agent (MCP) |
| Place limits per package or role | Workshops, slots | 12 places per session | User in the editor |
| Paid tickets, 0% platform fee | Paid classes | €25 masterclass | User in the editor |
| Check-in at the door | Events | Phone browser scanner | User on the day |
| Text after submitting, accept-until date | Clear endings | "We'll reply by Monday" | User in the editor |
| The "Forms" layout, looks, colors, fonts | A form that looks cared for | Paper-sheet layout | Agent (MCP) |
| 19 interface languages, page translation | International audiences | Ukrainian and English | Page language from the user |
| Feedback questions | Opinions after the event | NPS 0–10 | Agent (MCP) |
| Statistics without personal data | Reporting | Top answer per question | Agent (MCP) |
Not yet in AET Forms (in work or planned, per AET's roadmap on 28 October 2026): a copy of answers by email to the respondent, editing a response by link, embedding (iframe), file uploads beyond photos, a quiz mode with grading, server-side closing by date or limit for free registrations (today checked in the browser). Don't promise these.
How to set each block, and what is MCP-only or editor-only
| Element | How it is set | Agent via MCP | Notes from the code |
|---|---|---|---|
| Questions | registration.fields[] | Yes | Up to 40 fields; label up to 120 characters |
| Required | required: true | Yes | Checked only for visible questions |
| Hint under a question | help | Yes | Up to 500 characters; for a section it is the step description |
| Length, range, count | min, max | Yes | Text: length; number: value; several choices: how many |
| Scale | min 0 or 1, max 2–10, lo, hi | Yes | End labels up to 40 characters |
| Rating | max 3–10, icon star, heart or thumb | Yes | |
| Grid | rows (≤ 30), cols (≤ 12) | Yes | Grids can't be conditions |
| "Other" option | other: true | Yes | One choice and several choices only |
| Conditions | when: {f, op, v} | Yes | f must be an earlier field |
| Steps | a field with type: section | Yes | Questions before the first section form an untitled first step |
| Name and email | system ids first_name, mail | Yes, required on or off | Always present; can't be removed |
| Other system fields | second_name, organization, position, phone, selfie | Yes | |
| No sign-in | anonymous: true | Yes | Not with applications |
| Approval | applicationForm: true | Yes, two-step when switching | Applicants sign in with Google |
| Consent to data use | A required checkbox question | Yes | Write what the data is for |
| Feedback questions | feedback.questions[] | Yes | Types: text, longtext, number, date, single, multi, yesno, rating10 |
| Registration button text on the page | page.cta.label | Yes, landing layouts | Up to 40 characters; the form's own submit button keeps AET's wording |
| Text after submitting | Form settings | No — editor | |
| Accept until, "closed" text | Form settings | No — editor | Checked in the browser today |
| Pre-filled link | Form settings | No — editor | ?f.<id>=value |
| Place limits, packages, roles | Registration settings | No — editor | |
| Paid tickets, payment account | Tickets | No — editor | 0% platform fee |
| Import from Google Forms | Form editor button | No — editor | Public forms only |
Which question kind for which need
| Need | Kind (type) | Options or settings | Why |
|---|---|---|---|
| A name, a title, a short code | text | max for length | One line, easy on phones |
| Motivation, comments | textarea | max 300–500 | Long answers; keep only one per form |
| Age, quantity, team size | number | min, max | Range checked; averages in stats |
| A second email (e.g. a parent) | email | — | Format checked |
| A phone number | phone | — | International format checked |
| A date (birthday, arrival) | date | — | Date only |
| A time | time | — | Separate from the date |
| One of many (10+) options | select | 2–30 options | Compact dropdown |
| One of 2–6 options | choice | other if the list isn't complete | Visible buttons, one tap |
| Several of a list | multi | min/max how many, other | Tick boxes |
| Agreement, yes/no | checkbox | required for consent | One box |
| A photo for a badge | photo | — | Images only |
| Agreement level, NPS | scale | min 0 or 1, max up to 10, lo/hi | Comparable numbers |
| Satisfaction | rating | max 5, icon star | Familiar and quick |
| Rate several items on one scale | grid | rows, cols | One question instead of five |
| Several answers per row | gridm | rows, cols | E.g. which sessions on which days |
| A new step | section | label, help | Long forms in 2–4 steps |
Rules for options:
- Mutually exclusive. "18–25", "26–35", not "18–25", "25–35".
- Complete, or with "Other". If you can't list every case, add
other: true. - Natural order. Times and sizes in order, otherwise the most common first; "Other" last.
- 2–6 for buttons, more for a dropdown. Over six visible buttons slow people down.
- Scales: odd points when a middle opinion exists, 0–10 for recommendation. Label both ends.
- No double questions. "Was the food tasty and warm?" is two questions.
Conditions and steps: patterns that work
| Pattern | Condition | Effect |
|---|---|---|
| Follow-up for one answer | {"f":"cf_driver","op":"is","v":"Yes"} | Car number only for drivers |
| Skip for one answer | {"f":"cf_ticket","op":"not","v":"Student"} | Company details for everyone except students |
| Follow-up for a ticked box | {"f":"cf_diet","op":"has","v":"Allergy"} | Allergy details if "Allergy" is among the ticks |
| Follow-up if anything is written | {"f":"cf_company","op":"any"} | Job title only if a company was given |
| Whole step for some people | when on a section field | The step and its questions appear only on that answer |
What the code does: a hidden section hides all its questions; a condition on a question that is itself hidden counts as false; answers to hidden questions are dropped on save. A condition can point to text, choice, several choices, dropdown, number, date, time, yes/no, scale and rating answers — not to photos or grids.
Steps: put a section field before each group. Two to four steps work best: "About you", "How you can help", "When you're free". Questions before the first section are an untitled first step — usually name and email.
Example 1: booking a free consultation with a choice of day
A one-to-one consultation, in person or online; online people leave a messenger. Send this as one operation in aet_update_page:
{ "section": "registration", "op": "set", "value": { "on": true, "anonymous": true, "applicationForm": false, "fields": [ { "id": "first_name", "required": true }, { "id": "mail", "required": true }, { "id": "phone", "required": true }, { "id": "cf_format", "type": "choice", "label": "How would you like to meet?", "options": [ "In person", "Online" ], "required": true }, { "id": "cf_weekday", "type": "choice", "label": "Which day suits you?", "options": [ "Tuesday", "Wednesday", "Thursday" ], "required": true }, { "id": "cf_slot", "type": "select", "label": "Time", "options": [ "10:00", "12:00", "15:00", "17:00" ], "required": true }, { "id": "cf_messenger", "type": "text", "label": "Telegram or WhatsApp for the call", "help": "We send the link there 10 minutes before the start.", "when": { "f": "cf_format", "op": "is", "v": "Online" }, "required": true }, { "id": "cf_topic", "type": "textarea", "label": "What would you like to discuss?", "max": 500, "required": false }, { "id": "cf_consent", "type": "checkbox", "label": "I agree that the organizer stores my answers to arrange the consultation", "required": true } ] } }
anonymous: true— people book without signing in.phoneis a system field made required, because the organizer calls back.cf_messengerappears only whencf_formatis "Online", and is required only then.cf_weekdayuses buttons (three options);cf_slota dropdown (four times).- The consent checkbox says exactly what the data is for.
What the user still does: set a place limit per slot if each time can hold one person, and the text after submitting ("We'll confirm the exact time by email").
Example 2: a volunteer application with "if driver — car number"
Volunteers apply; the organizer chooses. Two steps after name and contacts.
{ "section": "registration", "op": "set", "value": { "on": true, "applicationForm": true, "fields": [ { "id": "first_name", "required": true }, { "id": "mail", "required": true }, { "id": "phone", "required": true }, { "id": "cf_s-about", "type": "section", "label": "How you can help", "help": "Takes about two minutes." }, { "id": "cf_skills", "type": "multi", "label": "What would you like to do?", "options": [ "Registration desk", "Setting up the hall", "Photos", "Guiding guests" ], "other": true, "min": 1, "max": 3, "required": true }, { "id": "cf_driver", "type": "choice", "label": "Can you drive and help with transport?", "options": [ "Yes", "No" ], "required": true }, { "id": "cf_plate", "type": "text", "label": "Car registration number", "help": "For the parking pass.", "max": 12, "when": { "f": "cf_driver", "op": "is", "v": "Yes" }, "required": true }, { "id": "cf_s-when", "type": "section", "label": "When you are free" }, { "id": "cf_days", "type": "multi", "label": "Which days can you come?", "options": [ "Friday, setup", "Saturday", "Sunday" ], "min": 1, "required": true }, { "id": "cf_shirt", "type": "select", "label": "T-shirt size", "options": [ "XS", "S", "M", "L", "XL", "XXL" ], "required": false }, { "id": "cf_consent", "type": "checkbox", "label": "I agree that the organizer stores my answers to plan the volunteer team", "required": true } ] } }
applicationForm: true— each person is an application the organizer approves or declines; AET emails the decision. Applicants sign in with Google to apply. Switching an existing form to applications is a two-step change: the user confirms.cf_skillsallows one to three ticks and "Other".cf_plateappears only forcf_driver= "Yes".- Two
sectionfields make two steps: "How you can help", "When you are free". - T-shirt size is optional — collect it, but don't block the application on it.
Example 3: registering a team for a quiz night
One captain registers the team.
{ "section": "registration", "op": "set", "value": { "on": true, "anonymous": true, "applicationForm": false, "fields": [ { "id": "first_name", "required": true }, { "id": "mail", "required": true }, { "id": "cf_team", "type": "text", "label": "Team name", "max": 40, "required": true }, { "id": "cf_size", "type": "number", "label": "How many players?", "help": "Teams of 2 to 6.", "min": 2, "max": 6, "required": true }, { "id": "cf_players", "type": "textarea", "label": "Names of the other players", "max": 300, "required": false }, { "id": "cf_league", "type": "choice", "label": "Which league?", "options": [ "First time", "Regulars" ], "required": true }, { "id": "cf_topics", "type": "multi", "label": "Favourite rounds", "options": [ "Music", "Films", "History", "Sport", "Science" ], "max": 2, "required": false }, { "id": "cf_consent", "type": "checkbox", "label": "I agree that the organizer stores our answers to run the quiz", "required": true } ] } }
cf_sizeis a number from 2 to 6 — the range is checked.cf_playersis optional: teams often change on the night.cf_topicsallows at most two ticks, so the answers stay comparable.- The place limit counts registrations, i.e. teams; if the venue has 20 tables, the user sets 20 places.
The quiz itself is a separate AET feature the user sets up; this form only registers teams.
Example 4: a survey after the event, with a scale and a rating
A separate form page for feedback, where people answer without giving their name.
{ "section": "registration", "op": "set", "value": { "on": true, "anonymous": true, "applicationForm": false, "fields": [ { "id": "first_name", "required": false }, { "id": "mail", "required": false }, { "id": "cf_overall", "type": "rating", "label": "How was the evening overall?", "max": 5, "icon": "star", "required": true }, { "id": "cf_recommend", "type": "scale", "label": "How likely are you to recommend it to a friend?", "min": 0, "max": 10, "lo": "Not at all", "hi": "Definitely", "required": true }, { "id": "cf_parts", "type": "grid", "label": "Rate each part", "rows": [ "Talks", "Food", "Venue" ], "cols": [ "Weak", "OK", "Good", "Great" ], "required": false }, { "id": "cf_best", "type": "multi", "label": "What did you like most?", "options": [ "Speakers", "People I met", "Format", "Venue" ], "other": true, "required": false }, { "id": "cf_next", "type": "choice", "label": "Would you come again?", "options": [ "Yes", "Maybe", "No" ], "required": true }, { "id": "cf_improve", "type": "textarea", "label": "One thing we should change", "max": 500, "required": false } ] } }
first_nameandmailstay in the form (they always do) but are optional, so the survey can be anonymous in practice.cf_overallis five stars;cf_recommendis 0–10 with labelled ends — it reads like NPS.cf_partsis a grid: three parts on one four-point scale.- Only one open question, and it's optional.
Alternative: if the survey belongs to the event people attended, put questions into the event's own feedback section instead: { "section": "feedback", "op": "set", "value": { "questions": [ { "text": "How likely are you to recommend us?", "type": "rating10" }, { "text": "What should we change?", "type": "longtext" } ], "anonymous": true } }. Feedback types are text, longtext, number, date, single, multi, yesno and rating10; aet_event_stats returns NPS from the first 0–10 question.
Quality rules for a form
Apply these before you show the user a preview.
- As few required questions as possible. Name and email, plus what the organizer truly can't work without. Every extra required field loses people.
- One idea per question, in plain words. "Which day suits you?", not "Please indicate your preferred day of attendance".
- Hints only where they help. A hint explains why you ask or how to answer ("For the parking pass"), not repeats the label.
- Checks that match reality. Ages with a sensible range, text with a sensible length; phones and emails are checked by their own field kinds.
- Consent when you collect anything beyond name and email. A required checkbox that says what the data is for and who sees it.
- No unnecessary personal data. No birth dates, addresses or document numbers unless the purpose needs them; health questions only with a clear reason and as optional where possible.
- The form's language is the user's language — and the language of the people who fill it in. Pass the page language to
aet_create_event. - Short. Under ten questions for a sign-up, under fifteen for an application; split anything longer into steps.
- Facts only from the user. Never invent dates, prices, limits, names or deadlines; leave them out and ask.
- Read it as a respondent. Open the preview on a phone and fill it in once in your head: every question answerable, every condition sensible.
When to suggest a form
Suggest a form when the user is about to collect the same information from several people by hand.
| The user says… | What to offer |
|---|---|
| "I need to collect… from everyone" | A form with exactly those questions |
| "Who's coming? How many people?" | A sign-up form with a QR ticket |
| "Sign up for…", "booking", "slots" | A booking form with a choice of day and time |
| "I want to know what they think" | A short survey |
| "We're choosing participants", "applications" | An application form with approval |
| "Send me your sizes / dietary needs / orders" | A questionnaire with dropdowns and numbers |
| "I have a Google Form, but…" | AET Forms, and the import button for them |
How to offer: one sentence, one benefit, an easy no. "I can make this a form where each person gets a QR ticket and you see everyone in one list — want me to draft it?" Then wait. Don't build without a yes, and don't offer again in the same conversation if they decline.
Tracking responses and reporting to the user
aet_event_stats returns live aggregates without names, emails, phones or free-text answers.
| Metric key | What it tells you |
|---|---|
registrations, registrations_by_day | How many, and the daily curve |
registration_sources | Which tagged link (utm or short-link tag) brought sign-ups; untagged is "direct" |
visits_by_day, visit_sources, funnel | Page views → registrations → check-ins → feedback |
applications | Pending applications (forms with approval) |
survey_questions | Per question: answers, average, top answer and its share |
feedback_questions, feedback_nps | Feedback aggregates and NPS |
days_to_start, readiness | Time left and the organizer's checklist |
The human sees more in the event cabinet: every response, the per-question summary, Excel export, and the participants and applications tables. You can save a dashboard of these metrics into the cabinet with aet_dashboard_save.
When to report: the day after publishing; twice a week while it collects; the day before the deadline; once after it closes.
What to say, in four lines: how many responses (and against the limit, if there is one); where they came from; the top answer of the one or two questions that matter; one next step ("Share the link in the parents' chat", "12 applications wait for you"). Never quote individual answers — you don't receive them, and you shouldn't.
Making the form look cared for
Layout. Apply {"layout":"forms"} with aet_set_event_design: a paper questionnaire with numbered lines and a folder tab with the form's name. aet_design_options suggests layouts by event type, and "form" is not one of its types — pass forms yourself. Events created through aet_create_event have the page specification layouts need.
Look, colors, fonts. On top of the layout, a look from the design section schema, brand colors (primary for buttons, accent for headings) and fonts from the allowed list. One accent color and one font pair are enough; the form should feel calm.
Words matter more than colors.
| Element | Before | After |
|---|---|---|
| Title | "Registration form" | "Book a free 30-minute consultation" |
| Intro (about) | "Please fill in the form below." | "Pick a day, leave a contact, and we'll confirm by email within a day." |
| A question | "Preferred mode of participation" | "How would you like to meet?" |
| A hint | "Required field" | "We send the link there 10 minutes before the start." |
Page button (page.cta.label) | "Register" | "Choose a time" |
| Text after submitting (user, in the editor) | "Thank you" | "You're booked. Your QR ticket is in your email — see you on Tuesday." |
Keep the title to 3–9 words that promise something checkable, the intro to two sentences, and button labels to two or three words in the event's language. More on writing pages: how AI agents write a better event page; on design by agents: event page design by an AI agent.
What you can't do, and what needs the user's yes
Your access is the user's choice. aet_access tells you the mode: preview only, selected events (optionally plus the ones you create), or all events. Without create rights, give the user the link from aet_start_event instead.
Two-step changes return needs_confirmation with a summary and a confirmToken; apply them only after the user's explicit yes:
- publishing or hiding the form (
aet_publish); - removing registration questions (answers already given stay in the export, but the question disappears);
- turning registration off;
- switching between instant registration and applications;
- pointing the registration button to an external site.
Undo has a gap. aet_undo restores page columns and blocks, but not the registration form; plan question changes carefully and read the form back with aet_get_event.
Only the user, in the AET editor: place limits, ticket packages and roles; paid tickets and the payment account; the text after submitting; the accept-until date and "closed" text; pre-filled links; importing a Google Form. Tell the user exactly where: the event's registration and form settings.
Not in AET Forms yet: copy of answers by email, editing a response by link, embedding, file uploads beyond photos, quiz mode with grading, server-side closing for free registrations.
Never: invent facts, collect data the purpose doesn't need, read or quote individual responses, or publish without a yes. Trust rules for agents: trust by design.
When AET is not the right choice
- The user needs a graded quiz, file uploads, live Google Sheets or embedding today. Google Forms does these; AET Forms doesn't yet.
- Many applicants have no Google account. Applications in AET ask applicants to sign in with Google; use an ordinary form if approval isn't essential.
- The user wants you to do everything, including limits and payments. You can't set those through MCP; the user must open the editor.
- The user creates many small forms each month without a subscription. Each form is an AET event: 3 new a month on Free, 30 on Pro (29 USD a month).
- No-shows are the main worry. AET sends no automatic reminders.
This series
This article extends the series "AI agents in AET":
- The event manager who never sleeps
- Connecting your assistant
- Guest drafts in depth
- Writing a better page
- Design by agent
- Running a live event
- Trust by design
- Numbers without names
- For developers
- Playbooks for ten event types
And the forms set: Google Forms vs AET Forms, Google Forms limits in 2026, From form to ticket: steps and time.
Sources (checked 28 October 2026)
AET code (main): question kinds, checks and conditions — lib/forms/fields.ts; the MCP registration and feedback sections, system fields, limits and two-step changes — lib/aiops/sections.ts; access modes — lib/aiops/access.ts; design options and the Forms layout — lib/aiops/design.ts, lib/landing/s4/forms.tsx; statistics without personal data — lib/aiops/stats.ts; tool descriptions — the MCP server at https://aet.events/api/mcp; Google import — lib/forms/gforms.ts (editor only); sign-in for applications — the registration form; roadmap — AET Forms plan.
Google Forms: question types, show questions based on answers, view and manage responses, publish and share.
Connect your assistant: connecting your assistant to AET. Corrections: support@anyeventtool.com.
Questions and answers
Can an AI assistant create a form in AET?
Yes, with the user's account connected through the AET MCP server. The assistant creates the page with aet_create_event, writes up to 40 questions of 16 kinds with steps and conditions through aet_update_page, applies the Forms layout and publishes only after the user's yes.
Which AET MCP tools build a form?
aet_access, aet_section_schema (registration), aet_create_event, aet_update_page (registration and feedback sections), aet_set_event_design (layout forms), aet_get_event, aet_publish (two-step) and aet_event_stats for results.
Can the assistant set conditions and steps?
Yes. Each question can have when = {f, op, v} with is, not, has or any on an earlier answer; a field of type section starts a new step. Photos and grids can't be conditions.
What can't the assistant do in an AET form?
Set place limits or ticket packages, switch on paid tickets, write the text after submitting, set the accept-until date, create pre-filled links or import a Google Form. The user does these in the AET editor.
Do respondents need an account?
Not for an ordinary form: with anonymous on (the default for events created through MCP) people respond without signing in. Applications with approval ask applicants to sign in with Google.
Can the assistant read the answers?
Only as aggregates: aet_event_stats returns counts, sources, per-question averages and top answers, and feedback NPS — never names, emails or free-text answers. The user sees every response in the AET cabinet.
Can the assistant import my Google Form?
Not through MCP. In the AET form editor, click Import from Google Forms and paste the public link; or paste the questions into the chat and the assistant rebuilds them.
Does publishing need my confirmation?
Yes. aet_publish is two-step: the first call returns a summary and a confirmation token, and the form goes live only when the assistant repeats the call after you say yes.
Try AET for your next event
Free: event page, registration, QR tickets and check-in. 0% platform fee on ticket sales.
Related answers
- Google Forms vs AET Forms: the full feature table for 2026
- How to connect Claude, ChatGPT, Claude Code, Cursor or Gemini to AnyEventTool — for people and their AI agents
- Running a live event with an AI agent: item-by-item edits, registration, materials, confirmations and undo in AnyEventTool
- Numbers without names: event statistics and dashboards an AI agent can read in AnyEventTool — without guests' personal data
- Google Forms limits in 2026: what needs a Google account, response caps, files, payments and tickets
- AI agent playbooks for ten event types — and what comes next for AI agents on AnyEventTool