Skip to Content
MCP Tool CatalogTransactional

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

FieldTypeRequiredDescription
brandIduuidNoFilter by brand
domainstringNoFilter 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

FieldTypeRequiredDescription
namestringYesEvent name following <domain>.<action>.v<N> convention
brandIduuidYesBrand identifier
schemaobjectYesJSON Schema for the event payload
descriptionstringNoHuman-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

FieldTypeRequiredDescription
namestringYesEvent name
payloadobjectYesEvent payload matching the declared schema
recipientOverridestringNoOverride 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

FieldTypeRequiredDescription
eventNamestringYesEvent type name
templateIdstringYesTemplate to bind
channelenum(email|sms|push)YesDelivery channel
conditionobjectNoOptional 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

FieldTypeRequiredDescription
productIdstringYesExternal product identifier
brandIduuidYesBrand identifier
namestringYesProduct display name
eventsstring[]YesEvent 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"] } }