Content Tools
Manage email, SMS, and push templates, reusable content modules, and brand voice profiles. 8 tools in this category.
templates.list
List email/SMS/push templates with optional filtering.
Roles: ALL_ROLES
| Field | Type | Required | Description |
|---|---|---|---|
channel | enum(email|sms|push) | No | Filter by channel |
status | enum(active|draft|archived) | No | Filter by status |
brandId | uuid | No | Filter by brand |
limit | integer | No | Max results (default 20) |
offset | integer | No | Pagination offset |
{
"tool": "templates.list",
"input": {
"channel": "email",
"status": "active",
"limit": 10
}
}templates.get
Get a template by ID with rendered preview.
Roles: ALL_ROLES
| Field | Type | Required | Description |
|---|---|---|---|
templateId | string | Yes | Template identifier |
renderPreview | boolean | No | Include rendered HTML (default false) |
{
"tool": "templates.get",
"input": {
"templateId": "tpl_abc123",
"renderPreview": true
}
}templates.create
Create a new template. Draft by default.
Roles: MARKETING_AND_ADMIN | draftByDefault: true
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Template name |
channel | enum(email|sms|push) | Yes | Delivery channel |
brandId | uuid | Yes | Brand identifier |
subject | string | No | Email subject line (email only) |
body | string | Yes | Template body (HTML for email, text for SMS/push) |
modules | string[] | No | Reusable module IDs to include |
{
"tool": "templates.create",
"input": {
"name": "Welcome Email",
"channel": "email",
"brandId": "brand-uuid",
"subject": "Welcome to {{brandName}}",
"body": "<h1>Welcome, {{firstName}}!</h1><p>We're glad you're here.</p>"
}
}templates.update
Update an existing template.
Roles: MARKETING_AND_ADMIN
| Field | Type | Required | Description |
|---|---|---|---|
templateId | string | Yes | Template identifier |
name | string | No | Updated name |
subject | string | No | Updated subject |
body | string | No | Updated body |
status | enum(active|draft|archived) | No | Updated status |
{
"tool": "templates.update",
"input": {
"templateId": "tpl_abc123",
"subject": "Welcome to Loop Health, {{firstName}}!",
"status": "active"
}
}modules.list
List reusable content modules (headers, footers, CTAs, etc.).
Roles: ALL_ROLES
| Field | Type | Required | Description |
|---|---|---|---|
brandId | uuid | No | Filter by brand |
type | enum(header|footer|cta|section) | No | Filter by module type |
{
"tool": "modules.list",
"input": {
"brandId": "brand-uuid",
"type": "footer"
}
}modules.create
Create a reusable content module.
Roles: MARKETING_AND_ADMIN | draftByDefault: true
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Module name |
type | enum(header|footer|cta|section) | Yes | Module type |
brandId | uuid | Yes | Brand identifier |
html | string | Yes | Module HTML content |
{
"tool": "modules.create",
"input": {
"name": "Standard Footer",
"type": "footer",
"brandId": "brand-uuid",
"html": "<footer><p>© 2026 Loop Health. <a href='{{unsubscribeUrl}}'>Unsubscribe</a></p></footer>"
}
}voice.get
Get the brand voice profile (tone, vocabulary, guidelines).
Roles: ALL_ROLES
| Field | Type | Required | Description |
|---|---|---|---|
brandId | uuid | Yes | Brand identifier |
{
"tool": "voice.get",
"input": {
"brandId": "brand-uuid"
}
}voice.propose_change
Propose a change to the brand voice profile. Changes require admin approval.
Roles: MARKETING_AND_ADMIN | draftByDefault: true
| Field | Type | Required | Description |
|---|---|---|---|
brandId | uuid | Yes | Brand identifier |
tone | string | No | Updated tone description |
vocabulary | object | No | Preferred/avoided terms |
guidelines | string | No | Updated voice guidelines |
rationale | string | Yes | Reason for the proposed change |
{
"tool": "voice.propose_change",
"input": {
"brandId": "brand-uuid",
"tone": "Warm, knowledgeable, and encouraging",
"vocabulary": {
"preferred": ["protocol", "wellness journey", "optimize"],
"avoided": ["drug", "medication", "cure"]
},
"rationale": "Aligning with updated brand guidelines from Q2 2026"
}
}