update_brand_foundation
Overwrite a single Brand Foundation element (company overview, brand voice, writing style, or writing examples).
Input Schema
{
"type": "object",
"required": [
"element",
"content"
],
"properties": {
"content": {
"type": "string",
"description": "New markdown content. Replaces existing content in full. Free-form — no enforced structure."
},
"element": {
"enum": [
"company_overview",
"brand_voice",
"writing_style",
"writing_examples"
],
"type": "string",
"description": "Which element to overwrite."
}
}
}Output Schema
{
"type": "object",
"properties": {
"content": {
"type": "string",
"description": "Updated markdown content (echoes what was stored)."
},
"element": {
"type": "string",
"description": "Which element was updated (echoes the input)."
}
}
}Instructions
Overwrites one of the team's four Brand Foundation elements with new content. Always full-replace — no patch semantics. Other elements are untouched. If the team has no row for the element yet, one is created.
Important: Before calling this tool, you should typically call
get_brand_foundation({elements: ["<element>"]})first to read the current value so the user can confirm what's being replaced. Brand Foundation content shapes every AI-generated piece of content the team produces, so unintended overwrites are costly.
Elements and character limits:
| Element | Description | Max chars |
|---|---|---|
company_overview |
General information about the company | 10,000 |
brand_voice |
Tone, core values, mission, personality | 20,000 |
writing_style |
Language complexity, sentence structure, formatting preferences, CTA style | 20,000 |
writing_examples |
Sample content demonstrating the team's distinctive voice (free-form structure) | 20,000 |
Privacy: Team-scoped via $auth.id → current_team_id. Users can only write to their own team's Brand Foundation.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
element |
enum | Yes | Which element to overwrite. One of company_overview, brand_voice, writing_style, writing_examples. |
content |
string | Yes | New markdown content. Replaces existing content in full. Free-form — no enforced structure. |
Output
| Field | Type | Description |
|---|---|---|
element |
string | Which element was updated (echoes the input). |
content |
string | Updated markdown content (echoes what was stored). |
Errors
If content exceeds the element's max character limit, the call returns a structured ERROR_CODE_INPUT_ERROR response naming both the limit and the actual length — e.g. "company_overview content exceeds the 10000-character limit (got 12483 chars)". The write is rejected before any DB mutation; no partial updates.
Example prompts
- "Update my brand voice to be less formal and more conversational"
- "Replace my company overview with the latest one-pager I just shared"
- "Save this as my writing examples"