Forms
Forms in Allpage: its screens, what you can do there and its operations.
Availability. Works when the business has it turned on and its plan includes it. Otherwise its tools answer needs (kind module) with how to turn it on: business.useTool, or a plan that includes it.
Screens
- Forms (/forms)
What you can do
- Save a form: the assistant asks you first
- Set when a requirement is checked: the assistant asks you first
- Decide an application: the assistant asks you first
For apps
Tools
- forms_save (Save a form): customers see it: waits for the owner’s approval unless they chose Just do it for your app
- forms_attach (Set when a requirement is checked): customers see it: waits for the owner’s approval unless they chose Just do it for your app
- forms_decide (Decide an application): customers see it: waits for the owner’s approval unless they chose Just do it for your app
Reads
- forms_list (List forms)
- forms_get (Read a form)
- forms_stepDone (Check whether a form was signed or a record sent)
- forms_applications (See applications)
- forms_submission (Read an application)
- forms_requirements (See what bookings ask for)
- forms_results (See who signed forms and sent records)
- forms_customer (See what a customer has signed)
- forms_summary (What’s going on)
The owner’s screens
- Forms (/forms)
Operations
Each one's input and output, as JSON Schema. Ids are typed (typed ids).
forms.attach
Set when a requirement is checked
- Kind
- Change
- Tool
forms_attach- Scope
forms:write- Reached by
- API, MCP, ChatGPT
customers see it: waits for the owner’s approval unless they chose Just do it for your app
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"productId": {
"type": "string",
"pattern": "^prd_[0-9a-hjkmnp-tv-z]{26}$",
"description": "The admission’s product, from offerings.get (admissions[].productId) or forms.requirements. A product id: prd_ and 26 letters and digits."
},
"key": {
"type": "string",
"pattern": "^(age:(\\d{1,2}\\+|\\d{1,2}-\\d{1,2})|(form|membership|file):[a-z0-9][a-z0-9_-]{0,62}|approval)$",
"description": "The requirement: age:16+, age:6-9, form:<key>, file:<key> or approval."
},
"timing": {
"default": "before_hold",
"description": "before_hold or before_payment: done before booking; deadline: the booking confirms and it’s due deadlineDays before the first session; check_in: check-in waits for it.",
"type": "string",
"enum": [
"before_hold",
"before_payment",
"deadline",
"check_in"
]
},
"asOf": {
"description": "For an age: the date it’s counted on, like a camp’s June 1. Left out, each session’s own date.",
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"deadlineDays": {
"description": "For a deadline: how many days before the first session it’s due.",
"type": "integer",
"minimum": 0,
"maximum": 365
},
"remove": {
"default": false,
"description": "Take these settings off (a key on the admission itself stays; change it with offerings.save).",
"type": "boolean"
}
},
"required": [
"productId",
"key"
],
"additionalProperties": false
}Output
{
"oneOf": [
{
"type": "object",
"required": [
"status",
"title",
"change"
],
"properties": {
"status": {
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {},
"undo": {
"type": "object",
"properties": {
"command": {
"type": "string"
},
"input": {}
}
}
}
},
{
"type": "object",
"required": [
"status",
"proposalId"
],
"properties": {
"status": {
"const": "proposed"
},
"proposalId": {
"type": "string"
},
"preview": {},
"approveAt": {
"type": "string",
"format": "uri"
}
}
},
{
"type": "object",
"required": [
"status",
"check"
],
"properties": {
"status": {
"const": "pending"
},
"message": {
"type": "string"
},
"check": {
"type": "string"
},
"checkInput": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"status",
"message"
],
"properties": {
"status": {
"const": "refused"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"status",
"kind",
"message"
],
"properties": {
"status": {
"const": "needs"
},
"kind": {
"type": "string"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
]
}forms.customer
See what a customer has signed
- Kind
- Read
- Tool
forms_customer- Scope
forms:read- Reached by
- API, MCP
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"customerId": {
"type": "string",
"pattern": "^cus_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A customer id: cus_ and 26 letters and digits."
}
},
"required": [
"customerId"
],
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"signed": {
"type": "array",
"items": {
"type": "object",
"properties": {
"resultId": {
"type": "string",
"pattern": "^rr_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A requirement result id: rr_ and 26 letters and digits."
},
"what": {
"type": "string"
},
"when": {
"type": "string"
},
"for": {
"type": [
"string",
"null"
]
},
"current": {
"type": "boolean"
},
"validUntil": {
"type": [
"string",
"null"
]
}
},
"required": [
"resultId",
"what",
"when",
"for",
"current",
"validUntil"
],
"additionalProperties": false
}
},
"total": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"signed",
"total"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}forms.decide
Decide an application
- Kind
- Change
- Tool
forms_decide- Scope
forms:write- Reached by
- API, MCP, ChatGPT
customers see it: waits for the owner’s approval unless they chose Just do it for your app
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"submissionId": {
"type": "string",
"pattern": "^sub_[0-9a-hjkmnp-tv-z]{26}$",
"description": "From forms.applications. A submission id: sub_ and 26 letters and digits."
},
"decision": {
"type": "string",
"enum": [
"review",
"accept",
"decline"
],
"description": "review: mark it in review (nobody is messaged); accept or decline: tell the applicant."
},
"give": {
"description": "With accept: give them this at no cost, like a scholarship pass that covers a course.",
"type": "object",
"properties": {
"productId": {
"type": "string",
"pattern": "^prd_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A pack, pass or membership that doesn’t renew, from commerce.products (type access). A product id: prd_ and 26 letters and digits."
}
},
"required": [
"productId"
],
"additionalProperties": false
},
"admit": {
"description": "With accept: their place in this admission costs nothing when they book it.",
"type": "object",
"properties": {
"productId": {
"type": "string",
"pattern": "^prd_[0-9a-hjkmnp-tv-z]{26}$",
"description": "The admission’s product, from offerings.get (admissions[].productId). A product id: prd_ and 26 letters and digits."
}
},
"required": [
"productId"
],
"additionalProperties": false
},
"code": {
"description": "With accept: send them a code for this much off, good once.",
"type": "object",
"properties": {
"percent": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"productIds": {
"default": [],
"description": "What it’s off; left out, anything they buy.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"pattern": "^prd_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A product id: prd_ and 26 letters and digits."
}
}
},
"required": [
"percent"
],
"additionalProperties": false
},
"message": {
"description": "A line from you in the message they get.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"submissionId",
"decision"
],
"additionalProperties": false
}Output
{
"oneOf": [
{
"type": "object",
"required": [
"status",
"title",
"change"
],
"properties": {
"status": {
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {},
"undo": {
"type": "object",
"properties": {
"command": {
"type": "string"
},
"input": {}
}
}
}
},
{
"type": "object",
"required": [
"status",
"proposalId"
],
"properties": {
"status": {
"const": "proposed"
},
"proposalId": {
"type": "string"
},
"preview": {},
"approveAt": {
"type": "string",
"format": "uri"
}
}
},
{
"type": "object",
"required": [
"status",
"check"
],
"properties": {
"status": {
"const": "pending"
},
"message": {
"type": "string"
},
"check": {
"type": "string"
},
"checkInput": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"status",
"message"
],
"properties": {
"status": {
"const": "refused"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"status",
"kind",
"message"
],
"properties": {
"status": {
"const": "needs"
},
"kind": {
"type": "string"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
]
}forms.get
Read a form
- Kind
- Read
- Tool
forms_get- Scope
forms:read- Reached by
- API, MCP, ChatGPT
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"formId": {
"type": "string",
"pattern": "^frm_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A form id: frm_ and 26 letters and digits."
},
"key": {
"type": "string",
"maxLength": 63
}
},
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"formId": {
"type": "string",
"pattern": "^frm_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A form id: frm_ and 26 letters and digits."
},
"key": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"general",
"intake",
"waiver",
"application"
]
},
"title": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"questions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9_-]{1,40}$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"type": {
"type": "string",
"enum": [
"text",
"email",
"tel",
"textarea",
"select",
"checkbox",
"date",
"file"
]
},
"required": {
"type": "boolean"
},
"options": {
"default": [],
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"field": {
"type": "string",
"pattern": "^fld_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A field id: fld_ and 26 letters and digits."
},
"sensitive": {
"type": "boolean"
}
},
"required": [
"id",
"label",
"type",
"required",
"options"
],
"additionalProperties": false
}
},
"waiverText": {
"type": [
"string",
"null"
]
},
"sensitive": {
"type": "boolean"
},
"health": {
"type": "boolean"
},
"consentText": {
"type": [
"string",
"null"
]
},
"application": {
"anyOf": [
{
"type": "object",
"properties": {
"open": {
"default": true,
"type": "boolean"
},
"closesOn": {
"default": null,
"description": "The last day it takes applications, in the business’s zone.",
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"fileMb": {
"default": 20,
"description": "The most one file may be, in MB.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"intro": {
"default": "",
"description": "What it’s for and what you look for, above the questions.",
"type": "string",
"maxLength": 2000
}
},
"required": [
"open",
"closesOn",
"fileMb",
"intro"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "An application’s settings; null for other forms."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
}
},
"required": [
"formId",
"key",
"kind",
"title",
"version",
"questions",
"waiverText",
"sensitive",
"health",
"consentText",
"application",
"updatedAt"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}forms.list
List forms
- Kind
- Read
- Tool
forms_list- Scope
forms:read- Reached by
- API, MCP, ChatGPT
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"forms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"formId": {
"type": "string",
"pattern": "^frm_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A form id: frm_ and 26 letters and digits."
},
"key": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"general",
"intake",
"waiver",
"application"
]
},
"title": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"questions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9_-]{1,40}$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"type": {
"type": "string",
"enum": [
"text",
"email",
"tel",
"textarea",
"select",
"checkbox",
"date",
"file"
]
},
"required": {
"type": "boolean"
},
"options": {
"default": [],
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"field": {
"type": "string",
"pattern": "^fld_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A field id: fld_ and 26 letters and digits."
},
"sensitive": {
"type": "boolean"
}
},
"required": [
"id",
"label",
"type",
"required",
"options"
],
"additionalProperties": false
}
},
"waiverText": {
"type": [
"string",
"null"
]
},
"sensitive": {
"type": "boolean"
},
"health": {
"type": "boolean"
},
"consentText": {
"type": [
"string",
"null"
]
},
"application": {
"anyOf": [
{
"type": "object",
"properties": {
"open": {
"default": true,
"type": "boolean"
},
"closesOn": {
"default": null,
"description": "The last day it takes applications, in the business’s zone.",
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"fileMb": {
"default": 20,
"description": "The most one file may be, in MB.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"intro": {
"default": "",
"description": "What it’s for and what you look for, above the questions.",
"type": "string",
"maxLength": 2000
}
},
"required": [
"open",
"closesOn",
"fileMb",
"intro"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "An application’s settings; null for other forms."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
}
},
"required": [
"formId",
"key",
"kind",
"title",
"version",
"questions",
"waiverText",
"sensitive",
"health",
"consentText",
"application",
"updatedAt"
],
"additionalProperties": false
}
}
},
"required": [
"forms"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}forms.requirements
See what bookings ask for
- Kind
- Read
- Tool
forms_requirements- Scope
forms:read- Reached by
- API, MCP, ChatGPT
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"admissions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"offering": {
"type": "string"
},
"name": {
"type": "string",
"description": "The admission, as it sells."
},
"productId": {
"type": "string",
"pattern": "^prd_[0-9a-hjkmnp-tv-z]{26}$",
"description": "What forms.attach takes. A product id: prd_ and 26 letters and digits."
},
"requirements": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"title": {
"type": "string",
"description": "What it asks, in the owner’s words: “Studio waiver: sign before booking”."
},
"words": {
"type": "string",
"description": "In the owner’s words."
},
"timing": {
"type": "string",
"enum": [
"before_hold",
"before_payment",
"deadline",
"check_in"
]
},
"asOf": {
"type": [
"string",
"null"
]
},
"deadlineDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"key",
"title",
"words",
"timing",
"asOf",
"deadlineDays"
],
"additionalProperties": false
}
}
},
"required": [
"offering",
"name",
"productId",
"requirements"
],
"additionalProperties": false
}
}
},
"required": [
"admissions"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}forms.results
See who signed forms and sent records
- Kind
- Read
- Tool
forms_results- Scope
forms:read- Reached by
- API, MCP, ChatGPT
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"key": {
"description": "One requirement, like form:waiver; left out, all.",
"type": "string",
"maxLength": 80
}
},
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"resultId": {
"type": "string",
"pattern": "^rr_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A requirement result id: rr_ and 26 letters and digits."
},
"customerId": {
"type": "string",
"pattern": "^cus_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A customer id: cus_ and 26 letters and digits."
},
"name": {
"type": "string"
},
"for": {
"type": [
"string",
"null"
]
},
"key": {
"type": "string"
},
"what": {
"type": "string",
"description": "“Studio waiver, version 2” or “vaccination record”."
},
"at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
"validUntil": {
"type": [
"string",
"null"
]
},
"current": {
"type": "boolean"
},
"ranOut": {
"type": "boolean"
}
},
"required": [
"resultId",
"customerId",
"name",
"for",
"key",
"what",
"at",
"validUntil",
"current",
"ranOut"
],
"additionalProperties": false
}
}
},
"required": [
"results"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}forms.save
Save a form
- Kind
- Change
- Tool
forms_save- Scope
forms:write- Reached by
- API, MCP, ChatGPT
customers see it: waits for the owner’s approval unless they chose Just do it for your app
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"formId": {
"description": "The form to change, from forms.list.",
"type": "string",
"pattern": "^frm_[0-9a-hjkmnp-tv-z]{26}$"
},
"key": {
"description": "Its name for requirements: an admission that requires form:<key> asks for it. Saving with a key that exists changes that form.",
"type": "string",
"pattern": "^[a-z0-9][a-z0-9_-]{0,62}$"
},
"kind": {
"default": "general",
"description": "general, intake, or waiver (needs waiverText).",
"type": "string",
"enum": [
"general",
"intake",
"waiver",
"application"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"questions": {
"default": [],
"maxItems": 40,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9_-]{1,40}$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"type": {
"type": "string",
"enum": [
"text",
"email",
"tel",
"textarea",
"select",
"checkbox",
"date",
"file"
]
},
"required": {
"type": "boolean"
},
"options": {
"default": [],
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"field": {
"type": "string",
"pattern": "^fld_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A field id: fld_ and 26 letters and digits."
},
"sensitive": {
"type": "boolean"
}
},
"required": [
"id",
"label",
"type",
"required"
],
"additionalProperties": false
}
},
"waiverText": {
"description": "For a waiver: the words people agree to.",
"type": "string",
"maxLength": 20000
},
"sensitive": {
"default": false,
"description": "Answers only the owner and roles that see sensitive details read.",
"type": "boolean"
},
"health": {
"default": false,
"description": "It asks for health information; needs consentText.",
"type": "boolean"
},
"consentText": {
"type": "string",
"maxLength": 2000
},
"application": {
"description": "For an application: open, closesOn (the last day), fileMb (the most one file may be) and intro. People apply at /apply/<key> on your website.",
"type": "object",
"properties": {
"open": {
"default": true,
"type": "boolean"
},
"closesOn": {
"default": null,
"description": "The last day it takes applications, in the business’s zone.",
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"fileMb": {
"default": 20,
"description": "The most one file may be, in MB.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"intro": {
"default": "",
"description": "What it’s for and what you look for, above the questions.",
"type": "string",
"maxLength": 2000
}
},
"additionalProperties": false
}
},
"required": [
"title"
],
"additionalProperties": false
}Output
{
"oneOf": [
{
"type": "object",
"required": [
"status",
"title",
"change"
],
"properties": {
"status": {
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {},
"undo": {
"type": "object",
"properties": {
"command": {
"type": "string"
},
"input": {}
}
}
}
},
{
"type": "object",
"required": [
"status",
"proposalId"
],
"properties": {
"status": {
"const": "proposed"
},
"proposalId": {
"type": "string"
},
"preview": {},
"approveAt": {
"type": "string",
"format": "uri"
}
}
},
{
"type": "object",
"required": [
"status",
"check"
],
"properties": {
"status": {
"const": "pending"
},
"message": {
"type": "string"
},
"check": {
"type": "string"
},
"checkInput": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"status",
"message"
],
"properties": {
"status": {
"const": "refused"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"status",
"kind",
"message"
],
"properties": {
"status": {
"const": "needs"
},
"kind": {
"type": "string"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
]
}forms.stepDone
Check whether a form was signed or a record sent
- Kind
- Read
- Tool
forms_stepDone- Scope
forms:read- Reached by
- API, MCP, ChatGPT
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"stepId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "From the needs answer’s checkInput."
}
},
"required": [
"stepId"
],
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"done": {
"type": "boolean",
"description": "Signed or sent. Book again to go on."
}
},
"required": [
"done"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}forms.summary
What’s going on
- Kind
- Read
- Tool
forms_summary- Scope
forms:read- Reached by
- API, MCP
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"facts": {
"type": "array",
"items": {
"type": "string"
},
"description": "One-line facts, e.g. \"3 bookings today\"."
},
"attention": {
"description": "Things that need the owner, each with a plain reason.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"href": {
"type": "string"
}
},
"required": [
"id",
"text"
],
"additionalProperties": false
}
},
"happening": {
"description": "What’s on today, each at its time.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"at": {
"type": "number",
"description": "Epoch milliseconds."
},
"text": {
"type": "string"
},
"href": {
"type": "string"
}
},
"required": [
"id",
"at",
"text"
],
"additionalProperties": false
}
},
"metrics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"value": {
"type": "number"
},
"prior": {
"type": "number"
},
"unit": {
"type": "string",
"enum": [
"count",
"money"
]
},
"href": {
"type": "string"
}
},
"required": [
"id",
"label",
"value"
],
"additionalProperties": false
}
}
},
"required": [
"title",
"facts"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}