> Discover all available Postdom documentation from the machine-readable index: https://postdom.com/llms.txt

Configured tool · write

# `set_brand_notes`

Rewrite the Voice section and/or the Never do section of the workspace brief in the person's words, leaving every other section as it is.

write · non-destructive · closed-world · chat-only

Human and agent roles

## Configured boundary

### Configured workspace

Postdom Chat only, with the signed-in owner's, admin's or member's authority. Only the edited sections change: the brief is parsed, the one or two sections are replaced, and the same serializer the Rules page uses writes it back as a new version against the current one. Propose, then confirm: the API refuses any call the assistant's own previous answer did not propose and the person's current message does not agree to. The proposal is read from the end of that answer only: the last sentence ending in a question mark, plus the one sentence before it. Those sentences carry the new value and where it lands - the asking level as its own sentence, posts per day as a digit, quiet hours as HH:MM to HH:MM or the words no quiet hours, a pause as pause or resume, brand notes as the section text in double quotes - with @handle for one account or the word everywhere for the workspace. One change per question: a question that offers two changes, joins alternatives with or, or names two accounts (or an account and the workspace) is refused, because a yes does not say which. Anything else is refused with rules_change_not_asked before the call. Each line of a section has to appear in the answer the person agreed to, which is how a section of any length is normally settled: read it back, then save it on their yes.

This reference describes the hosted server at https://api.postdom.com/mcp, which runs current source, with a workspace-scoped key created under Connected apps → For developers. The published `@postdom/mcp@0.4.0` package has 14 of these tools: it lacks list_posts, create_slideshow, account_music and the media array.

Callable schema

## Input fields

Field names match the configured tool schema. Runtime-only constraints are labeled separately from schema validation.

| Field | Type | Contract |
| --- | --- | --- |
| voice Optional | string | 1 to 4,000 characters · the whole new section · no heading lines, no bare carriage returns How the brand should sound. A line beginning with # is refused: the brief is one document split on its headings, and a heading inside a section would take the sections after it. A carriage return with no newline after it is refused too - it ends a line for the parser and for a browser, so the same text would mean two different things. |
| never_do Optional | string | 1 to 4,000 characters · the whole new section · no heading lines, no bare carriage returns Topics, claims, phrases or treatments the agent must avoid. Refused on a heading line or a bare carriage return, for the same reason. |

**For AI agents:** Send only fields exposed by the current tool schema.

**Known failure:** Do not invent platform settings, account IDs, media fields, or setup steps.

Synthetic values

## Example call

Identifiers and values are examples. They do not represent a connected workspace or accepted media source.

_EXAMPLE CALL · CONFIGURED TOOL SCHEMA_

```
set_brand_notes({
  voice: "Calm and specific, first person plural. No hype.",
  never_do: "Never name competitors. Never promise availability dates."
})
```

Observed API record

## Return shape

Returns a rules_change card with subject brand_notes: the two sections before and after, which of them changed, and the brief version they were saved in.

**`kind · subject` (rules_change · brand_notes)** — The same card shape, over the brief's two sections.

**`applied · version` (boolean · integer | null)** — Whether a new version was saved, and which.

**`before · after · changed` ({ voice, never_do } · field[])** — The section text before and after, and which sections moved.

**`blocked` (object | null)** — brief_version_conflict when someone else saved the brief first, twice; the card then carries the latest sections.

**`shortened` (boolean)** — True when the section text quoted on the card was cut to keep the card inside the chat's result bound. It says nothing about what was saved: the brief holds the whole text.

Stop conditions

## Agent handoff

`applied`

### Say the change

Report which sections changed and the new text, from the card.

`brief_version_conflict`

### Show the latest

Nothing was written; say so and show the sections as they are now.

`rules_change_not_asked`

### Propose, do not retry

The section text has to be in the answer they agreed to. Show them the wording, ask, and save it on their yes.

 VERIFIED · 26 AUGUST 2026  **GET /v1/dashboard/brief · POST /v1/dashboard/brief with base_version**

Examples are synthetic. Human workspace-key creation and revocation remain in Postdom under Connected apps → For developers.
