post_v1_marketing_sequences_id_enroll
Adds one contact or a whole audience to a sequence and schedules the first step for each.
Adds one contact or a whole audience to a sequence and schedules the first step for each. The sequence must be ACTIVE (a draft sends nothing), and the request must name exactly one of address or audienceId.
Enrolling is ALL this does: the message itself is sent later by the drip engine, through the suppression gate, so an opted-out customer can be enrolled here and still never be mailed. Re-posting is safe — an address this sequence already took is counted in alreadyEnrolled and never double-dripped — which is what makes retrying a partially-applied announcement a resume rather than a second send.
| Tool | post_v1_marketing_sequences_id_enroll |
| Door | https://api.hanzo.ai/v1/mcp |
| Method | tools/call (JSON-RPC 2.0) |
| Arguments | 4 |
| Operation | POST /v1/marketing/sequences/{id}/enroll |
| Product | marketing |
Arguments
| Field | Type | Required | Default | Values | Description |
|---|---|---|---|---|---|
address | string | — | — | — | Address is a single recipient, normalized (lower-cased, trimmed) before use. Give this OR audienceId, never both and never neither. |
audienceId | string | — | — | — | AudienceID fans the sequence out over a saved audience, resolved live to the org's mailable customers. Email only. |
channel | string | — | — | — | Channel is the delivery surface; empty means email. An audience resolves mailboxes, so an audience enroll must be email. |
id | string | — | — | — | ID is the sequence id from the path. |
tools/list declares a type and a description for each field and nothing further. A — means neither the door nor that operation constrains the field.
Call it
A tools/call carries every argument in one flat object — nothing binds to a path or a query string. Nothing above is required, so every declared argument is shown rather than a guess at which matter.
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "post_v1_marketing_sequences_id_enroll",
"arguments": {
"address": "<address>",
"audienceId": "<audienceId>",
"channel": "<channel>",
"id": "<id>"
}
}
}'Values are the operation's own defaults and enumerated values where it declares them, and a <placeholder> where neither source declares one. tools/list needs no credential; tools/call does — called without one the door answers HTTP 200 with a JSON-RPC result whose isError is set and whose text says what was missing. How to get a key →
The operation behind it
| Operation | Route | Product | Summary |
|---|---|---|---|
post_v1_marketing_sequences_id_enroll | POST /v1/marketing/sequences/{id}/enroll | marketing | Adds one contact or a whole audience to a sequence and schedules the first step for each. |
The same capability over plain HTTP is in the marketing API reference, on https://api.hanzo.ai.
All 755 tools · The door · API reference
Generated from tools/list on https://api.hanzo.ai/v1/mcp — 833 tools captured 2026-08-01, of which 755 are documented here (the operator surface is not published) (this build read the vendored copy; the door was unreachable).
How is this guide?
post_v1_marketing_sequences
Registers a drip sequence in the caller's org. Name is required; status defaults to draft, and a sequence must be ACTIVE before it will accept enrollments.
post_v1_marketing_sequences_id_enrollments_eid_cancel
Stops one walk mid-sequence and answers 204: no further step is sent, and steps already delivered are not recalled.