Transactional Tools
Manage event-driven transactional messaging — declare events, bind templates, and test delivery. 5 tools in this category.
events.list
List all declared event types.
Roles: ALL_ROLES
| Field | Type | Required | Description |
|---|---|---|---|
brandId | uuid | No | Filter by brand |
domain | string | No | Filter by event domain (e.g., lead, message) |
{
"tool": "events.list",
"input": {
"brandId": "brand-uuid"
}
}events.declare
Declare a new event type with its schema. This registers the event for template binding, routing, and analytics.
Roles: ADMIN_ONLY
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Event name following <domain>.<action>.v<N> convention |
brandId | uuid | Yes | Brand identifier |
schema | object | Yes | JSON Schema for the event payload |
description | string | No | Human-readable event description |
{
"tool": "events.declare",
"input": {
"name": "lead.captured.v1",
"brandId": "brand-uuid",
"schema": {
"email": { "type": "string", "format": "email" },
"source": { "type": "string", "enum": ["vsl_form", "quiz_completion", "inbound_lead", "other"] },
"attribution": { "type": "object" },
"personId": { "type": ["string", "null"], "format": "uuid" }
},
"description": "Fired when a new lead is captured from any source"
}
}events.fire_test
Fire a test event to validate the end-to-end pipeline without sending real messages. Test events are tagged and routed to sandbox.
Roles: MARKETING_AND_ADMIN
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Event name |
payload | object | Yes | Event payload matching the declared schema |
recipientOverride | string | No | Override delivery address for testing |
{
"tool": "events.fire_test",
"input": {
"name": "lead.captured.v1",
"payload": {
"eventId": "550e8400-e29b-41d4-a716-446655440000",
"occurredAt": "2026-05-19T12:00:00Z",
"brandId": "brand-uuid",
"email": "test@loop.health",
"source": "vsl_form",
"attribution": { "utm_source": "test" },
"personId": null
},
"recipientOverride": "qa@loop.health"
}
}events.bind_template
Bind a template to an event type. When the event fires, the bound template is rendered and sent.
Roles: ADMIN_ONLY
| Field | Type | Required | Description |
|---|---|---|---|
eventName | string | Yes | Event type name |
templateId | string | Yes | Template to bind |
channel | enum(email|sms|push) | Yes | Delivery channel |
condition | object | No | Optional condition for conditional binding |
{
"tool": "events.bind_template",
"input": {
"eventName": "lead.captured.v1",
"templateId": "tpl_welcome01",
"channel": "email"
}
}products.register
Register a product for transactional events (e.g., order confirmations, shipping updates).
Roles: ADMIN_ONLY
| Field | Type | Required | Description |
|---|---|---|---|
productId | string | Yes | External product identifier |
brandId | uuid | Yes | Brand identifier |
name | string | Yes | Product display name |
events | string[] | Yes | Event types this product can trigger |
{
"tool": "products.register",
"input": {
"productId": "bpc-157-30ml",
"brandId": "brand-uuid",
"name": "BPC-157 30ml Vial",
"events": ["order.completed.v1", "shipment.created.v1"]
}
}