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.

voice_upsertOtherRead and write

Behavior

Read-only hint
Not declared
Destructive hint
Not declared
Idempotent hint
Not declared
Open-world hint
Not declared

Parameters

NameTypeRequirementDescription
workspaceIdstringRequiredThe workspace id or slug (from workspace_list).
summarystringOptionalNo additional description.
traitsarrayOptionalShort traits: “Direct”, “Warm, never cute”.
dosarrayOptionalConcrete writing rules to follow.
dontsarrayOptionalConcrete writing rules to avoid.
signaturePhrasesarrayOptionalPhrases the client really says.
bannedPhrasesarrayOptionalExact words or phrases never to write (replaces the list).
addBannedPhrasesarrayOptionalExact words or phrases never to write (added to the list).
platformHabitsarrayOptionalFormatting habits per platform (replaces the list).
addExamplesarrayOptionalPassages that show (good) or break (avoid) the voice.
notesstringOptionalNuance no list holds (Markdown). Replaces the stored notes.
reasonstringRequiredWhy 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": {}
  }
}