Skip to main content

Brand Boards Create Voice

Immutable Catalog Entry

This descriptor comes from the active versioned Portal catalog.

WRITEghl.brand_boards_create_voice
  • Contract tier: agent_ready
  • Risk: write
  • Catalog version: 2026-07-12.2
  • Descriptor hash: 02db949646b74554c397a63ccb6bc74aca28bfd9ded6da94ae5e6bfcd7f0ed35

Create a GHL Brand Voice for the authenticated location. GHL category: Marketing / Brand Boards. This writes to Brand Voice configuration. Verified manual/scratch Brand Voice payloads use body.type = "manual" and body.answers as an object containing the UI form answers such as brandName, businessType, toneOfVoice, targetAudience, customerPainPoints, brandPromise, brandValues, whatDoesYourBrandDo, competitorDifference, uniqueSellingProposition, risksOfInaction, and callToAction. Use disposable Brand Voice names during validation and delete test voices in the same flow.

Request Body

{
"jsonrpc": "2.0",
"id": "ghl-brand-boards-create-voice-example",
"method": "tools/call",
"params": {
"name": "ghl.brand_boards_create_voice",
"arguments": {
"body": {},
"query": {},
"tenantId": "tenantId_123",
"locationId": "locationId_123",
"strictTenant": false
}
}
}

Arguments Schema

{
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"name",
"type",
"answers"
],
"properties": {
"name": {
"type": "string",
"description": "Brand Voice name. Use a clear disposable prefix such as MAD_AUDIT_DELETE_ME_* for validation."
},
"type": {
"enum": [
"manual"
],
"type": "string",
"description": "Verified GHL Brand Voice type for the Start from scratch/manual UI flow."
},
"answers": {
"type": "object",
"required": [
"brandName",
"toneOfVoice",
"targetAudience",
"customerPainPoints"
],
"properties": {
"brandName": {
"type": "string",
"description": "Brand, company, or account name."
},
"brandValues": {
"type": "string",
"description": "Values or standards the brand does not compromise on."
},
"phoneNumber": {
"type": "string",
"description": "Business phone number."
},
"toneOfVoice": {
"type": "string",
"description": "Tone of voice, for example Professional."
},
"brandPromise": {
"type": "string",
"description": "How the brand benefits the audience."
},
"businessType": {
"type": "string",
"description": "Type of business, such as technology services or restaurant."
},
"callToAction": {
"type": "string",
"description": "Most important user action the brand wants people to take."
},
"companyEmail": {
"type": "string",
"description": "Company email."
},
"businessHours": {
"type": "string",
"description": "Business hours."
},
"companyAddress": {
"type": "string",
"description": "Company address."
},
"companyWebsite": {
"type": "string",
"description": "Company website URL."
},
"targetAudience": {
"type": "string",
"description": "Primary audience the brand speaks to."
},
"risksOfInaction": {
"type": "string",
"description": "What happens if the audience does not take action."
},
"customerPainPoints": {
"type": "string",
"description": "Problems or frustrations the brand helps solve."
},
"whatDoesYourBrandDo": {
"type": "string",
"description": "Core products or services the brand provides."
},
"competitorDifference": {
"type": "string",
"description": "What makes the brand better than competitors."
},
"uniqueSellingProposition": {
"type": "string",
"description": "What sets the brand apart in the market."
}
},
"description": "Answers from the GHL Brand Voice manual form. Required when type is manual.",
"additionalProperties": true
}
},
"description": "Verified scratch/manual Brand Voice create body. Use type \"manual\" with answers object from the GHL Brand Voice UI fields. Do not send arbitrary guessed type values.",
"additionalProperties": true
},
"query": {
"type": "object",
"description": "Optional GHL-supported query parameters for this official Brand Boards endpoint, such as pagination or documented filters.",
"additionalProperties": true
},
"tenantId": {
"type": "string",
"description": "Tenant ID from list_tenants."
},
"locationId": {
"type": "string",
"description": "Optional GHL location ID. If provided, it must match the authenticated runtime location; otherwise the runtime location is injected where the official Brand Boards endpoint requires it."
},
"strictTenant": {
"type": "boolean",
"default": true,
"description": "Require tenantId to match locationId routing (default: true)."
}
},
"additionalProperties": false
}

Output Schema

{
"type": "object",
"required": [
"ok",
"data",
"error",
"meta"
],
"properties": {
"ok": {
"type": "boolean",
"description": "Whether the GHL MCP operation completed successfully."
},
"data": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "array",
"items": {}
},
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Tool-specific GHL or local navigation result when ok is true."
},
"meta": {
"type": "object",
"description": "Safe execution, routing, and timing metadata.",
"additionalProperties": true
},
"error": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Safe error details when ok is false; credential values are never returned."
}
},
"description": "Normalized GHL MCP response envelope.",
"additionalProperties": false
}

Code Examples

curl -X POST 'https://portal.madpanda3d.com/api/mcp' \
-H 'Authorization: Bearer mad_live_***' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "ghl-brand-boards-create-voice-example",
"method": "tools/call",
"params": {
"name": "ghl.brand_boards_create_voice",
"arguments": {
"body": {},
"query": {},
"tenantId": "tenantId_123",
"locationId": "locationId_123",
"strictTenant": false
}
}
}'

Example Responses

{
"ok": true,
"message": "Tool ghl.brand_boards_create_voice executed successfully.",
"note": "Response shape varies by MCP tool. Inspect live responses for exact fields."
}