Browse the docs

Brand

Brand 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

  • Brand (/brand)

What you can do

  • Change your brand: the assistant asks you first
  • Go back to an earlier brand: the assistant asks you first
  • Make a logo: the assistant asks you first
  • Suggest brand colors: the assistant asks you first
  • Suggest fonts: the assistant asks you first
  • Suggest a look: the assistant asks you first
  • Find your voice from your writing: the assistant asks you first

For apps

Tools

  • brand_update (Change your brand): customers see it: waits for the owner’s approval unless they chose Just do it for your app
  • brand_restore (Go back to an earlier brand): customers see it: waits for the owner’s approval unless they chose Just do it for your app
  • brand_generateLogo (Make a logo): customers see it: waits for the owner’s approval unless they chose Just do it for your app
  • brand_generatePalette (Suggest brand colors): customers see it: waits for the owner’s approval unless they chose Just do it for your app
  • brand_generateType (Suggest fonts): customers see it: waits for the owner’s approval unless they chose Just do it for your app
  • brand_suggestLook (Suggest a look): customers see it: waits for the owner’s approval unless they chose Just do it for your app
  • brand_voiceFromSample (Find your voice from your writing): customers see it: waits for the owner’s approval unless they chose Just do it for your app

Reads

  • brand_kit (Your brand kit)
  • brand_history (Your brand’s history)
  • brand_summary (What’s going on)

The owner’s screens

  • Brand (/brand)

Operations

Each one's input and output, as JSON Schema. Ids are typed (typed ids).

brand.generatePalette

Suggest brand colors

Kind
Change
Tool
brand_generatePalette
Scope
brand: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": {
    "idea": {
      "default": "",
      "description": "What the owner wants it to feel like, in their words.",
      "type": "string",
      "maxLength": 300
    },
    "palette": {
      "description": "Colors you chose: a named palette (forest, clay, ocean, plum, ink) with \"\" for its own accent, or custom with an accent like #2f7d5b. Allpage uses them instead of suggesting its own.",
      "type": "object",
      "properties": {
        "theme": {
          "type": "string",
          "enum": [
            "forest",
            "clay",
            "ocean",
            "plum",
            "ink",
            "custom"
          ]
        },
        "accent": {
          "type": "string"
        },
        "headings": {
          "type": "string",
          "enum": [
            "ink",
            "accent"
          ]
        }
      },
      "required": [
        "theme",
        "accent"
      ],
      "additionalProperties": false
    }
  },
  "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"
        }
      }
    }
  ]
}

brand.generateType

Suggest fonts

Kind
Change
Tool
brand_generateType
Scope
brand: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": {
    "idea": {
      "default": "",
      "description": "What the owner wants it to feel like, in their words.",
      "type": "string",
      "maxLength": 300
    },
    "type": {
      "description": "The fonts you chose, by id: {\"heading\", \"body\"}. Curated pairs: cormorant + inter (Refined and quiet. Lets photos lead.); lora + inter (Calm and personal, a little literary.); playfair-display + dm-sans (Classic and confident.); fraunces + work-sans (Warm and friendly, with a little character.); eb-garamond + manrope (Bookish and elegant.); libre-baskerville + karla (Trustworthy and steady.); newsreader + nunito-sans (Soft and easy to read.); dm-serif-display + figtree (Bold serif headlines, relaxed text.); inter + inter (Crisp and direct, easy to scan on a phone.); space-grotesk + inter (Modern and precise.); outfit + outfit (Round and approachable.); syne + manrope (Artful and unexpected.); bricolage-grotesque + figtree (Playful and bold.); abril-fatface + outfit (Big, graphic headlines.). Display fonts (dm-serif-display, abril-fatface, syne, bricolage-grotesque) are for headings only. Allpage uses them instead of suggesting its own.",
      "type": "object",
      "properties": {
        "heading": {
          "type": "string",
          "enum": [
            "cormorant",
            "playfair-display",
            "fraunces",
            "lora",
            "eb-garamond",
            "newsreader",
            "libre-baskerville",
            "dm-serif-display",
            "abril-fatface",
            "syne",
            "bricolage-grotesque",
            "inter",
            "dm-sans",
            "work-sans",
            "manrope",
            "outfit",
            "nunito-sans",
            "figtree",
            "karla",
            "space-grotesk"
          ]
        },
        "body": {
          "type": "string",
          "enum": [
            "cormorant",
            "playfair-display",
            "fraunces",
            "lora",
            "eb-garamond",
            "newsreader",
            "libre-baskerville",
            "inter",
            "dm-sans",
            "work-sans",
            "manrope",
            "outfit",
            "nunito-sans",
            "figtree",
            "karla",
            "space-grotesk"
          ]
        }
      },
      "required": [
        "heading",
        "body"
      ],
      "additionalProperties": false
    }
  },
  "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"
        }
      }
    }
  ]
}

brand.history

Your brand’s history

Kind
Read
Tool
brand_history
Scope
brand: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": {
            "versions": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^brv_[0-9a-hjkmnp-tv-z]{26}$",
                    "description": "A brand version id: brv_ and 26 letters and digits."
                  },
                  "version": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  "label": {
                    "type": "string"
                  },
                  "createdAt": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "id",
                  "version",
                  "label",
                  "createdAt"
                ],
                "additionalProperties": false
              }
            }
          },
          "required": [
            "versions"
          ],
          "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": {}
    }
  ]
}

brand.kit

Your brand kit

Kind
Read
Tool
brand_kit
Scope
brand: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": {
            "name": {
              "type": "string"
            },
            "kit": {
              "type": "object",
              "properties": {
                "palette": {
                  "type": "object",
                  "properties": {
                    "theme": {
                      "type": "string",
                      "enum": [
                        "forest",
                        "clay",
                        "ocean",
                        "plum",
                        "ink",
                        "custom"
                      ]
                    },
                    "accent": {
                      "type": "string"
                    },
                    "headings": {
                      "default": "ink",
                      "type": "string",
                      "enum": [
                        "ink",
                        "accent"
                      ]
                    }
                  },
                  "required": [
                    "theme",
                    "accent",
                    "headings"
                  ],
                  "additionalProperties": false
                },
                "type": {
                  "type": "object",
                  "properties": {
                    "heading": {
                      "type": "string",
                      "enum": [
                        "cormorant",
                        "playfair-display",
                        "fraunces",
                        "lora",
                        "eb-garamond",
                        "newsreader",
                        "libre-baskerville",
                        "dm-serif-display",
                        "abril-fatface",
                        "syne",
                        "bricolage-grotesque",
                        "inter",
                        "dm-sans",
                        "work-sans",
                        "manrope",
                        "outfit",
                        "nunito-sans",
                        "figtree",
                        "karla",
                        "space-grotesk"
                      ]
                    },
                    "body": {
                      "type": "string",
                      "enum": [
                        "cormorant",
                        "playfair-display",
                        "fraunces",
                        "lora",
                        "eb-garamond",
                        "newsreader",
                        "libre-baskerville",
                        "inter",
                        "dm-sans",
                        "work-sans",
                        "manrope",
                        "outfit",
                        "nunito-sans",
                        "figtree",
                        "karla",
                        "space-grotesk"
                      ]
                    }
                  },
                  "required": [
                    "heading",
                    "body"
                  ],
                  "additionalProperties": false
                },
                "logo": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "type": "string",
                      "enum": [
                        "symbol",
                        "initials",
                        "image",
                        "none"
                      ]
                    },
                    "symbol": {
                      "type": "string",
                      "enum": [
                        "flower",
                        "sun",
                        "leaf",
                        "waves",
                        "spark"
                      ]
                    },
                    "text": {
                      "type": "string",
                      "maxLength": 3
                    },
                    "image": {
                      "type": "string",
                      "maxLength": 500
                    },
                    "alt": {
                      "type": "string",
                      "maxLength": 120
                    },
                    "variants": {
                      "type": "object",
                      "properties": {
                        "primary": {
                          "type": "string",
                          "maxLength": 500
                        },
                        "reversed": {
                          "type": "string",
                          "maxLength": 500
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "mode",
                    "symbol",
                    "text",
                    "image",
                    "alt",
                    "variants"
                  ],
                  "additionalProperties": false
                },
                "imagery": {
                  "type": "string",
                  "maxLength": 400
                },
                "voice": {
                  "type": "object",
                  "properties": {
                    "tone": {
                      "type": "string",
                      "enum": [
                        "warm",
                        "direct",
                        "neutral"
                      ]
                    },
                    "summary": {
                      "type": "string",
                      "maxLength": 600
                    },
                    "dos": {},
                    "donts": {}
                  },
                  "required": [
                    "tone",
                    "summary",
                    "dos",
                    "donts"
                  ],
                  "additionalProperties": false
                },
                "copy": {
                  "type": "string",
                  "maxLength": 1500
                },
                "taglines": {},
                "boilerplate": {
                  "type": "object",
                  "properties": {
                    "short": {
                      "type": "string",
                      "maxLength": 280
                    },
                    "long": {
                      "type": "string",
                      "maxLength": 1500
                    }
                  },
                  "required": [
                    "short",
                    "long"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "palette",
                "type",
                "logo",
                "imagery",
                "voice",
                "copy",
                "taglines",
                "boilerplate"
              ],
              "additionalProperties": false
            },
            "colors": {
              "type": "object",
              "properties": {
                "accent": {
                  "type": "string"
                },
                "paper": {
                  "type": "string"
                },
                "soft": {
                  "type": "string"
                },
                "ink": {
                  "type": "string"
                }
              },
              "required": [
                "accent",
                "paper",
                "soft",
                "ink"
              ],
              "additionalProperties": false
            },
            "version": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "on": {
              "type": "boolean"
            }
          },
          "required": [
            "name",
            "kit",
            "colors",
            "version",
            "on"
          ],
          "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": {}
    }
  ]
}

brand.restore

Go back to an earlier brand

Kind
Change
Tool
brand_restore
Scope
brand: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": {
    "versionId": {
      "type": "string",
      "pattern": "^brv_[0-9a-hjkmnp-tv-z]{26}$",
      "description": "A version from brand.history. A brand version id: brv_ and 26 letters and digits."
    }
  },
  "required": [
    "versionId"
  ],
  "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"
        }
      }
    }
  ]
}

brand.suggestLook

Suggest a look

Kind
Change
Tool
brand_suggestLook
Scope
brand:write
Reached by
API, MCP

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": {
    "idea": {
      "default": "",
      "description": "What the owner wants it to feel like, in their words.",
      "type": "string",
      "maxLength": 300
    },
    "palette": {
      "description": "Colors you chose, as `brand.generatePalette` takes them.",
      "type": "object",
      "properties": {
        "theme": {
          "type": "string",
          "enum": [
            "forest",
            "clay",
            "ocean",
            "plum",
            "ink",
            "custom"
          ]
        },
        "accent": {
          "type": "string"
        },
        "headings": {
          "type": "string",
          "enum": [
            "ink",
            "accent"
          ]
        }
      },
      "required": [
        "theme",
        "accent"
      ],
      "additionalProperties": false
    },
    "type": {
      "description": "Fonts you chose, as `brand.generateType` takes them.",
      "type": "object",
      "properties": {
        "heading": {
          "type": "string",
          "enum": [
            "cormorant",
            "playfair-display",
            "fraunces",
            "lora",
            "eb-garamond",
            "newsreader",
            "libre-baskerville",
            "dm-serif-display",
            "abril-fatface",
            "syne",
            "bricolage-grotesque",
            "inter",
            "dm-sans",
            "work-sans",
            "manrope",
            "outfit",
            "nunito-sans",
            "figtree",
            "karla",
            "space-grotesk"
          ]
        },
        "body": {
          "type": "string",
          "enum": [
            "cormorant",
            "playfair-display",
            "fraunces",
            "lora",
            "eb-garamond",
            "newsreader",
            "libre-baskerville",
            "inter",
            "dm-sans",
            "work-sans",
            "manrope",
            "outfit",
            "nunito-sans",
            "figtree",
            "karla",
            "space-grotesk"
          ]
        }
      },
      "required": [
        "heading",
        "body"
      ],
      "additionalProperties": false
    }
  },
  "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"
        }
      }
    }
  ]
}

brand.summary

What’s going on

Kind
Read
Tool
brand_summary
Scope
brand: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": {}
    }
  ]
}

brand.update

Change your brand

Kind
Change
Tool
brand_update
Scope
brand: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": {
    "patch": {
      "type": "object",
      "properties": {
        "palette": {
          "type": "object",
          "properties": {
            "theme": {
              "type": "string",
              "enum": [
                "forest",
                "clay",
                "ocean",
                "plum",
                "ink",
                "custom"
              ]
            },
            "accent": {
              "type": "string"
            },
            "headings": {
              "type": "string",
              "enum": [
                "ink",
                "accent"
              ]
            }
          },
          "additionalProperties": false
        },
        "type": {
          "type": "object",
          "properties": {
            "heading": {
              "type": "string",
              "enum": [
                "cormorant",
                "playfair-display",
                "fraunces",
                "lora",
                "eb-garamond",
                "newsreader",
                "libre-baskerville",
                "dm-serif-display",
                "abril-fatface",
                "syne",
                "bricolage-grotesque",
                "inter",
                "dm-sans",
                "work-sans",
                "manrope",
                "outfit",
                "nunito-sans",
                "figtree",
                "karla",
                "space-grotesk"
              ]
            },
            "body": {
              "type": "string",
              "enum": [
                "cormorant",
                "playfair-display",
                "fraunces",
                "lora",
                "eb-garamond",
                "newsreader",
                "libre-baskerville",
                "inter",
                "dm-sans",
                "work-sans",
                "manrope",
                "outfit",
                "nunito-sans",
                "figtree",
                "karla",
                "space-grotesk"
              ]
            }
          },
          "additionalProperties": false
        },
        "logo": {
          "type": "object",
          "properties": {
            "mode": {
              "type": "string",
              "enum": [
                "symbol",
                "initials",
                "image",
                "none"
              ]
            },
            "symbol": {
              "type": "string",
              "enum": [
                "flower",
                "sun",
                "leaf",
                "waves",
                "spark"
              ]
            },
            "text": {
              "type": "string",
              "maxLength": 3
            },
            "image": {
              "type": "string",
              "maxLength": 500
            },
            "alt": {
              "type": "string",
              "maxLength": 120
            },
            "variants": {
              "type": "object",
              "properties": {
                "primary": {
                  "type": "string",
                  "maxLength": 500
                },
                "reversed": {
                  "type": "string",
                  "maxLength": 500
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "imagery": {
          "type": "string",
          "maxLength": 400
        },
        "voice": {
          "type": "object",
          "properties": {
            "tone": {
              "type": "string",
              "enum": [
                "warm",
                "direct",
                "neutral"
              ]
            },
            "summary": {
              "type": "string",
              "maxLength": 600
            },
            "dos": {
              "maxItems": 8,
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 140
              }
            },
            "donts": {
              "maxItems": 8,
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 140
              }
            }
          },
          "additionalProperties": false
        },
        "copy": {
          "type": "string",
          "maxLength": 1500
        },
        "taglines": {
          "maxItems": 6,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120
          }
        },
        "boilerplate": {
          "type": "object",
          "properties": {
            "short": {
              "type": "string",
              "maxLength": 280
            },
            "long": {
              "type": "string",
              "maxLength": 1500
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false,
      "description": "Only the sections and fields that change; lists are replaced whole."
    },
    "label": {
      "type": "string",
      "maxLength": 80
    }
  },
  "required": [
    "patch"
  ],
  "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"
        }
      }
    }
  ]
}

brand.voiceFromSample

Find your voice from your writing

Kind
Change
Tool
brand_voiceFromSample
Scope
brand: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": {
    "sample": {
      "description": "Something the owner wrote: a post, an email, their about text.",
      "type": "string",
      "minLength": 40,
      "maxLength": 4000
    },
    "voice": {
      "description": "The voice you read from their writing: its tone (warm, direct or neutral), a sentence or two on how it sounds, and short lists of what to do and avoid. Allpage uses it instead of reading the sample itself.",
      "type": "object",
      "properties": {
        "tone": {
          "type": "string",
          "enum": [
            "warm",
            "direct",
            "neutral"
          ]
        },
        "summary": {
          "type": "string",
          "maxLength": 600
        },
        "dos": {
          "maxItems": 8,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 140
          }
        },
        "donts": {
          "maxItems": 8,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 140
          }
        }
      },
      "required": [
        "tone",
        "summary",
        "dos",
        "donts"
      ],
      "additionalProperties": false
    }
  },
  "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"
        }
      }
    }
  ]
}