Propose or save the Voice
Change the Voice. Only the fields you send change; lists you send replace the stored list, while addBannedPhrases and addExamples add to it. From an agent this becomes a proposal a person accepts in Knowledge.
Behavior
- Read-only hint
- Not declared
- Destructive hint
- Not declared
- Idempotent hint
- Not declared
- Open-world hint
- Not declared
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
workspaceId | string | Required | The workspace id or slug (from workspace_list). |
summary | string | Optional | No additional description. |
traits | array | Optional | Short traits: “Direct”, “Warm, never cute”. |
dos | array | Optional | Concrete writing rules to follow. |
donts | array | Optional | Concrete writing rules to avoid. |
signaturePhrases | array | Optional | Phrases the client really says. |
bannedPhrases | array | Optional | Exact words or phrases never to write (replaces the list). |
addBannedPhrases | array | Optional | Exact words or phrases never to write (added to the list). |
platformHabits | array | Optional | Formatting habits per platform (replaces the list). |
addExamples | array | Optional | Passages that show (good) or break (avoid) the voice. |
notes | string | Optional | Nuance no list holds (Markdown). Replaces the stored notes. |
reason | string | Required | Why this change helps, in one or two sentences. Shown to the person who accepts it. |
Input JSON Schema
Generated from the registered input schema
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "The workspace id or slug (from workspace_list)."
},
"summary": {
"type": "string",
"maxLength": 2000
},
"traits": {
"description": "Short traits: “Direct”, “Warm, never cute”.",
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"dos": {
"description": "Concrete writing rules to follow.",
"maxItems": 24,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 400
}
},
"donts": {
"description": "Concrete writing rules to avoid.",
"maxItems": 24,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 400
}
},
"signaturePhrases": {
"description": "Phrases the client really says.",
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"bannedPhrases": {
"description": "Exact words or phrases never to write (replaces the list).",
"maxItems": 120,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"addBannedPhrases": {
"description": "Exact words or phrases never to write (added to the list).",
"maxItems": 120,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"platformHabits": {
"description": "Formatting habits per platform (replaces the list).",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"habits": {
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
}
}
},
"required": [
"platform",
"habits"
]
}
},
"addExamples": {
"description": "Passages that show (good) or break (avoid) the voice.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"verdict": {
"type": "string",
"enum": [
"good",
"avoid"
]
},
"platform": {
"type": "string",
"maxLength": 40
},
"note": {
"type": "string",
"maxLength": 400
}
},
"required": [
"text",
"verdict"
]
}
},
"notes": {
"description": "Nuance no list holds (Markdown). Replaces the stored notes.",
"type": "string",
"maxLength": 60000
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Why this change helps, in one or two sentences. Shown to the person who accepts it."
}
},
"required": [
"workspaceId",
"reason"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Call shape
Use an MCP client rather than sending this JSON directly. The client handles protocol negotiation, sessions, and authentication.
Protocol request
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "voice_upsert",
"arguments": {}
}
}