Setup
Setup in Allpage: its screens, what you can do there and its operations.
Availability. Every business has it.
Screens
- Setup (/setup)
What you can do
- Do it for me: the assistant can do it on its own
- Get the owner’s link for a setup step: happens right away
- I have this: only you can do it, on its screen
- Check off a setup step: the assistant can do it on its own
- Skip for now: the assistant can do it on its own
- Reopen a setup step: the assistant can do it on its own
- Refresh: only you can do it, on its screen
For apps
Tools
- onboarding_doIt (Do it for me): a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
- onboarding_handOff (Get the owner’s link for a setup step): runs right away
- onboarding_confirm (Check off a setup step): a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
- onboarding_skip (Skip for now): a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
- onboarding_reopen (Reopen a setup step): a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
Reads
- onboarding_plan (Read the setup plan)
- onboarding_next (See the next setup step)
- onboarding_nextSteps (What to set up next)
- onboarding_screen (Read what a screen is for and what to do next there)
- onboarding_progress (See how much setup is left)
- onboarding_firstSteps (See the steps to your first booking)
- onboarding_summary (What’s going on)
Only the owner, in Allpage
- I have this
- Refresh
The owner’s screens
- Setup (/setup)
Operations
Each one's input and output, as JSON Schema. Ids are typed (typed ids).
onboarding.confirm
Check off a setup step
- Kind
- Change
- Tool
onboarding_confirm- Scope
onboarding:write- Reached by
- API, MCP, ChatGPT
a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"stepId": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"stepId"
],
"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"
}
}
}
]
}onboarding.doIt
Do it for me
- Kind
- Change
- Tool
onboarding_doIt- Scope
onboarding:write- Reached by
- API, MCP, ChatGPT
a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"stepId": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"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"
}
}
}
]
}onboarding.firstSteps
See the steps to your first booking
- Kind
- Read
- Tool
onboarding_firstSteps- Scope
onboarding: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": {
"site": {
"type": "object",
"properties": {
"published": {
"type": "boolean"
},
"url": {
"type": "string",
"description": "Your booking link: your website’s address."
}
},
"required": [
"published",
"url"
],
"additionalProperties": false
},
"payments": {
"type": "boolean",
"description": "Customers can pay online."
},
"hours": {
"type": "boolean",
"description": "Your hours are set."
}
},
"required": [
"site",
"payments",
"hours"
],
"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": {}
}
]
}onboarding.handOff
Get the owner’s link for a setup step
- Kind
- Change
- Tool
onboarding_handOff- Scope
onboarding:read- Reached by
- API, MCP, ChatGPT
runs right away
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"stepId": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"stepId"
],
"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"
}
}
}
]
}onboarding.next
See the next setup step
- Kind
- Read
- Tool
onboarding_next- Scope
onboarding: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": {
"step": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The step, for `stepId`."
},
"title": {
"type": "string"
},
"why": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"pending",
"running",
"waiting_owner",
"waiting_provider",
"done",
"skipped",
"needs_attention",
"blocked",
"stale"
]
},
"reason": {
"description": "Why it needs attention.",
"type": "string"
},
"note": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Its place in setup, from 1, of `total`."
},
"screen": {
"type": "string",
"description": "Where the owner does it in Allpage, under their business."
},
"action": {
"description": "What to do: run the operation with its input (changed as the owner says), hand the owner a link, or wait.",
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "operation"
},
"operation": {
"type": "string"
},
"input": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"note": {
"type": "string"
}
},
"required": [
"kind",
"operation",
"input",
"note"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "portal"
},
"operation": {
"type": "string"
},
"input": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"note": {
"type": "string"
}
},
"required": [
"kind",
"operation",
"input",
"note"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "wait"
},
"note": {
"type": "string"
}
},
"required": [
"kind",
"note"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "plan"
},
"note": {
"type": "string"
},
"href": {
"type": "string",
"description": "The public plans page, to read. Never a checkout; name no price."
}
},
"required": [
"kind",
"note",
"href"
],
"additionalProperties": false
}
]
},
"confirm": {
"type": "boolean",
"description": "Once the owner agrees with it as it stands (after any change), onboarding_confirm with this stepId closes it."
},
"suggestions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"description": "The input it fills, like `categories`."
},
"value": {},
"label": {
"type": "string",
"description": "The value in the owner’s words."
},
"source": {
"type": "string",
"enum": [
"website",
"words",
"kind",
"research"
],
"description": "Where it came from: their website, their own words, the kind of business, or research."
}
},
"required": [
"field",
"value",
"label",
"source"
],
"additionalProperties": false
},
"description": "Values to offer the owner for empty inputs. Ask before using one."
}
},
"required": [
"id",
"title",
"why",
"state",
"position",
"screen",
"confirm",
"suggestions"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Null once every step is done or skipped."
},
"done": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Steps done or skipped."
},
"total": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"step",
"done",
"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": {}
}
]
}onboarding.nextSteps
What to set up next
- Kind
- Read
- Tool
onboarding_nextSteps- Scope
onboarding: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": {
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The step, for `stepId`."
},
"title": {
"type": "string"
},
"why": {
"type": "string"
},
"reason": {
"description": "Why it needs attention.",
"type": "string"
},
"offer": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "here"
},
"label": {
"type": "string"
}
},
"required": [
"kind",
"label"
],
"additionalProperties": false,
"description": "Allpage does it: onboarding_doIt with this step."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "allpage"
},
"label": {
"type": "string"
}
},
"required": [
"kind",
"label"
],
"additionalProperties": false,
"description": "Only the owner can: onboarding_handOff with this step gives their single-use link."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "plan"
},
"message": {
"type": "string"
},
"label": {
"type": "string"
},
"href": {
"type": "string"
}
},
"required": [
"kind",
"message",
"label",
"href"
],
"additionalProperties": false,
"description": "Not on their plan: say so, with the plans page to read. No price, no upgrade pitch."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "yours"
},
"operation": {
"type": "string"
},
"input": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "What to start from, with what you add."
},
"note": {
"type": "string"
}
},
"required": [
"kind",
"operation",
"input",
"note"
],
"additionalProperties": false,
"description": "You do it with this operation, as its note says: make it yourself (a logo), or ask the owner and save what they tell you (their hours, their address)."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "wait"
},
"note": {
"type": "string"
}
},
"required": [
"kind",
"note"
],
"additionalProperties": false
}
]
}
},
"required": [
"id",
"title",
"why",
"offer"
],
"additionalProperties": false
}
},
"done": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Setup steps done or skipped."
},
"total": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"steps",
"done",
"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": {}
}
]
}onboarding.plan
Read the setup plan
- Kind
- Read
- Tool
onboarding_plan- Scope
onboarding:read- Reached by
- API, MCP, ChatGPT
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"stepId": {
"description": "Only this step.",
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"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": {
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The step, for `stepId`."
},
"title": {
"type": "string"
},
"why": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"pending",
"running",
"waiting_owner",
"waiting_provider",
"done",
"skipped",
"needs_attention",
"blocked",
"stale"
]
},
"reason": {
"description": "Why it needs attention.",
"type": "string"
},
"note": {
"type": "string"
},
"items": {
"description": "The step’s own checklist, when it has one.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"done": {
"type": "boolean"
},
"detail": {
"type": "string"
}
},
"required": [
"id",
"title",
"done"
],
"additionalProperties": false
}
},
"inputs": {
"type": "array",
"items": {
"type": "string"
},
"description": "What the owner can tell Allpage for it (an EIN)."
},
"action": {
"description": "What to do next. None once it’s done or skipped.",
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "operation"
},
"operation": {
"type": "string"
},
"input": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"note": {
"type": "string"
}
},
"required": [
"kind",
"operation",
"input",
"note"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "portal"
},
"operation": {
"type": "string"
},
"input": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"note": {
"type": "string"
}
},
"required": [
"kind",
"operation",
"input",
"note"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "wait"
},
"note": {
"type": "string"
}
},
"required": [
"kind",
"note"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "plan"
},
"note": {
"type": "string"
},
"href": {
"type": "string",
"description": "The public plans page, to read. Never a checkout; name no price."
}
},
"required": [
"kind",
"note",
"href"
],
"additionalProperties": false
}
]
}
},
"required": [
"id",
"title",
"why",
"state",
"inputs"
],
"additionalProperties": false
}
},
"done": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Steps done or skipped."
},
"total": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"steps",
"done",
"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": {}
}
]
}onboarding.progress
See how much setup is left
- Kind
- Read
- Tool
onboarding_progress- Scope
onboarding: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": {
"left": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Steps not done or skipped yet."
},
"done": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"total": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"left",
"done",
"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": {}
}
]
}onboarding.readWebsite
Read a business’s website
- Kind
- Anyone, before signing in
- Tool
onboarding_readWebsite- Scope
public- Reached by
- MCP, ChatGPT
Read-only. Works before signing in, with a limit per caller.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "The website’s address, like \"stillandsage.com\"."
}
},
"required": [
"url"
],
"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": {
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"logo": {
"type": "string"
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"phone": {
"type": "string"
},
"email": {
"type": "string"
},
"address": {
"type": "object",
"properties": {
"street": {
"type": "string"
},
"city": {
"type": "string"
},
"region": {
"type": "string"
},
"postalCode": {
"type": "string"
},
"country": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"text"
],
"additionalProperties": false
},
"place": {
"type": "string"
},
"hours": {
"minItems": 7,
"maxItems": 7,
"type": "array",
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"start": {
"type": "number"
},
"end": {
"type": "number"
}
},
"required": [
"start",
"end"
],
"additionalProperties": false
}
}
},
"services": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"price": {
"type": "number"
},
"from": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"minutes": {
"type": "number"
},
"description": {
"type": "string"
}
},
"required": [
"name"
],
"additionalProperties": false
}
},
"socials": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"url": {
"type": "string"
},
"handle": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"platform",
"url",
"label"
],
"additionalProperties": false
}
},
"look": {
"type": "object",
"properties": {
"themeColor": {
"type": "string",
"pattern": "^#(?:[0-9a-f]{3}|[0-9a-f]{6})$"
},
"fonts": {
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"dark": {
"type": "boolean"
},
"photoLed": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"required": [
"url",
"images",
"services",
"socials",
"look"
],
"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": {}
}
]
}onboarding.reopen
Reopen a setup step
- Kind
- Change
- Tool
onboarding_reopen- Scope
onboarding:write- Reached by
- API, MCP, ChatGPT
a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"stepId": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"stepId"
],
"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"
}
}
}
]
}onboarding.screen
Read what a screen is for and what to do next there
- Kind
- Read
- Tool
onboarding_screen- Scope
onboarding:read- Reached by
- API, MCP
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"screen": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "`today`, or a screen’s id, like `schedule` or `site`."
}
},
"required": [
"screen"
],
"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": {
"screen": {
"type": "string"
},
"title": {
"type": "string"
},
"purpose": {
"type": "string"
},
"docs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"summary": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": [
"id",
"title",
"summary",
"body"
],
"additionalProperties": false
}
},
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 100
},
"title": {
"type": "string",
"maxLength": 120
},
"why": {
"type": "string",
"maxLength": 300
},
"note": {
"type": "string",
"maxLength": 300
},
"done": {
"type": "boolean"
},
"source": {
"type": "string",
"enum": [
"setup",
"screen",
"suggestion",
"fallback"
]
},
"do": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "run"
},
"command": {
"type": "string",
"maxLength": 80
},
"input": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"label": {
"type": "string",
"maxLength": 60
}
},
"required": [
"kind",
"command",
"input",
"label"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "portal"
},
"path": {
"type": "string",
"maxLength": 200
},
"command": {
"type": "string",
"maxLength": 80
},
"provider": {
"type": "string",
"maxLength": 200
},
"partner": {
"type": "string",
"maxLength": 40
},
"label": {
"type": "string",
"maxLength": 60
}
},
"required": [
"kind",
"path",
"label"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "open"
},
"href": {
"type": "string",
"maxLength": 200
},
"label": {
"type": "string",
"maxLength": 60
}
},
"required": [
"kind",
"href",
"label"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "suggestion"
},
"suggestionId": {
"type": "string",
"maxLength": 60
},
"label": {
"type": "string",
"maxLength": 60
}
},
"required": [
"kind",
"suggestionId",
"label"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "ask"
},
"prompt": {
"type": "string",
"maxLength": 300
},
"label": {
"type": "string",
"maxLength": 60
}
},
"required": [
"kind",
"prompt",
"label"
],
"additionalProperties": false
}
]
}
},
"required": [
"id",
"title"
],
"additionalProperties": false
}
}
},
"required": [
"screen",
"title",
"purpose",
"docs",
"steps"
],
"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": {}
}
]
}onboarding.skip
Skip for now
- Kind
- Change
- Tool
onboarding_skip- Scope
onboarding:write- Reached by
- API, MCP, ChatGPT
a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"stepId": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"stepId"
],
"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"
}
}
}
]
}onboarding.summary
What’s going on
- Kind
- Read
- Tool
onboarding_summary- Scope
onboarding: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": {}
}
]
}