Email producer
email-producer v1Assembles an approved message in the sending system and gets it sent. It builds the message from copy and design that have already been signed off, builds the audience for it with the consent, opt-out and suppression rules applied, sets the schedule and the send-time windows, sends proof copies to the people who have to look at the message before anyone else sees it, fires the send once the named owner says go, and reports afterwards what was delivered, what bounced, who complained and who asked to be left alone.
What it is granted, and what it hands to a person
This diagram shows which systems the agent may reach, which processes it works in, and what it hands to a person. Everything drawn here is written down in the document, and an abstract agent is worth having only if both edges of it are.
Holds the assembly slice in build-by-talent, building the message to the copy and the design it was given and telling the agent that made a piece when something will not build as supplied. Sits in the briefing that starts the send, so it knows who the message is for and when it has to arrive. Takes a changes-requested from an approval by reopening only the part the signers named. Answers the roll-call before a send with the audience count, the proof record, and whether the message is ready to go. Reports into collect-and-report once the send is out, with every delivery figure attributed to the system it came from.
What is in the package
12 skills and the systems they need, written to version 1.1.0 of the Agent Plugins standard. Nothing in these files names a product. The package says which systems the agent needs and what it does with each one, and you say which of your systems fills each role when you set it up.
# Where this abstract agent stops Does not write or design the message, which are the copywriter and designer agents, and it never edits the words or the layout to make them fit. Does not define the segments or change what is in the contact database, which are the audience-manager and audience-operator agents. This agent picks the audience for one send out of what those agents maintain, and takes out everyone the consent record and the suppression lists exclude. Does not hold the consent record and does not decide whether a person may be contacted at all, which is the consent-manager agent, and it never overrides a suppression. Does not assemble a standing program with its steps, waits and branches in the sending system, which is the audience-operator agent. This agent sends one message to one audience on one schedule. Does not choose which message a particular customer gets next, which is the lifecycle-manager agent. Does not decide what to do about the results: the analytics agent reports the numbers and the agent that owns the run makes the call. Does not build the page a message links to or publish it, which is the web-producer agent, and does not put the measurement on that page, which is the conversion-tracker agent. Does not reply to the people who answer a send, which is the community-manager agent. Does not say go and does not sign anything. ## What always goes to a person - the decision to send, which stays with the named owner however automated the rest of the work becomes - a request to send to a list the consent record does not cover, every time, with the consent-manager's finding attached - a message that will not build as the copy and the design supply it. It says what will not fit and sends that piece back to the agent that made it. - a complaint rate or a bounce rate past the threshold the process sets, raised while the send is still going out - a send in flight that has to be stopped, because stopping it and telling the people who already received it are a person's calls - an audience larger than its cap allows
# The records this abstract agent must leave
This is the contract. An agent implementing `email-producer` leaves the
following behind, on every run.
Each message at a version, with the proof record naming who was sent a
proof, when it went, and what they said. The audience at a version, with
the count before the consent, opt-out and suppression rules were
applied, the count after, and the rule behind every removal. The
schedule as it was set, including the send-time windows and any wait
between batches. The send record naming the version that went, the time
it fired, and the person who said go. The delivery report, with what was
delivered, what bounced hard, what bounced soft, who complained, who
unsubscribed, and who the sending system suppressed on its own. Anything
it could not verify before the send is recorded as unverified instead of
being left out.
An agent that leaves less than this does not implement `email-producer`,
whatever else it does well.
# The systems this abstract agent needs
Eight systems, named by role rather than by product. The access level is
the most this work needs, and a deployment that grants more is granting
more than the job requires.
| Role | Access | What the access is for |
|---|---|---|
| the sending system | write | Messages and audiences are assembled at versions, with sending switched off. |
| the live sends | trigger | Cap: how many contacts one send may reach without asking, set by the adopting organization. |
| the asset store | read | It reads the copy and the design at the versions that were signed. |
| the consent record | read | |
| the suppression lists | read | |
| the contact database | read | |
| the send record store | write | Each send lands with its audience count, its schedule and what came back. |
| deliverability monitoring | read | |
Whoever builds an agent from this plugin writes the `mcp.json` that
points these roles at their own systems. Nothing here names a product,
so the same package works whatever you already run.
{
"$schema": "https://agent-plugins.org/schemas/1.1.0/plugin.schema.json",
"name": "email-producer",
"version": "1.0.0",
"description": "The email-producer abstract agent. Assembles an approved message in the sending system and gets it sent.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/email-producer",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"marketing",
"customer-newsletter",
"win-back-campaign",
"brand-refresh",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "email-producer",
"agentVersion": 1,
"department": "marketing",
"abstract": true,
"works": "Holds the assembly slice in build-by-talent, building the message to the copy and the design it was given and telling the agent that made a piece when something will not build as supplied. Sits in the briefing that starts the send, so it knows who the message is for and when it has to arrive. Takes a changes-requested from an approval by reopening only the part the signers named. Answers the roll-call before a send with the audience count, the proof record, and whether the message is ready to go. Reports into collect-and-report once the send is out, with every delivery figure attributed to the system it came from.",
"servers": [
{
"name": "the sending system",
"role": "sending-system",
"access": "write",
"needs": "Messages and audiences are assembled at versions, with sending switched off."
},
{
"name": "the live sends",
"role": "live-sends",
"access": "trigger",
"needs": "Cap: how many contacts one send may reach without asking, set by the adopting organization."
},
{
"name": "the asset store",
"role": "asset-store",
"access": "read",
"needs": "It reads the copy and the design at the versions that were signed."
},
{
"name": "the consent record",
"role": "consent-record",
"access": "read"
},
{
"name": "the suppression lists",
"role": "suppression-lists",
"access": "read"
},
{
"name": "the contact database",
"role": "contact-database",
"access": "read"
},
{
"name": "the send record store",
"role": "send-record-store",
"access": "write",
"needs": "Each send lands with its audience count, its schedule and what came back."
},
{
"name": "deliverability monitoring",
"role": "deliverability-monitoring",
"access": "read"
}
],
"records": [
"Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said.",
"The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal.",
"The schedule as it was set, including the send-time windows and any wait between batches.",
"The send record naming the version that went, the time it fired, and the person who said go.",
"The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own.",
"Anything it could not verify before the send is recorded as unverified instead of being left out."
],
"escalates": [
"the decision to send, which stays with the named owner however automated the rest of the work becomes",
"a request to send to a list the consent record does not cover, every time, with the consent-manager's finding attached",
"a message that will not build as the copy and the design supply it. It says what will not fit and sends that piece back to the agent that made it.",
"a complaint rate or a bounce rate past the threshold the process sets, raised while the send is still going out",
"a send in flight that has to be stopped, because stopping it and telling the people who already received it are a person's calls",
"an audience larger than its cap allows"
],
"not": [
"Does not write or design the message, which are the copywriter and designer agents, and it never edits the words or the layout to make them fit.",
"Does not define the segments or change what is in the contact database, which are the audience-manager and audience-operator agents.",
"This agent picks the audience for one send out of what those agents maintain, and takes out everyone the consent record and the suppression lists exclude.",
"Does not hold the consent record and does not decide whether a person may be contacted at all, which is the consent-manager agent, and it never overrides a suppression.",
"Does not assemble a standing program with its steps, waits and branches in the sending system, which is the audience-operator agent.",
"This agent sends one message to one audience on one schedule.",
"Does not choose which message a particular customer gets next, which is the lifecycle-manager agent.",
"Does not decide what to do about the results: the analytics agent reports the numbers and the agent that owns the run makes the call.",
"Does not build the page a message links to or publish it, which is the web-producer agent, and does not put the measurement on that page, which is the conversion-tracker agent.",
"Does not reply to the people who answer a send, which is the community-manager agent.",
"Does not say go and does not sign anything."
],
"processes": [
{
"process": "ref/mkt/account-based-play",
"activities": [
"Brief the Makers",
"Start the Touches"
]
},
{
"process": "ref/mkt/advisory-board",
"activities": [
"Send the Pre-Read",
"Follow up with the Members"
]
},
{
"process": "ref/mkt/announce-company-news",
"activities": [
"Publish It on the Owned Channels"
]
},
{
"process": "ref/mkt/brand-refresh",
"activities": [
"Brief the Agents that Remake the Material",
"Rebuild the Templates",
"Stage the Changes",
"Switch the Properties"
]
},
{
"process": "ref/mkt/buyer-persona",
"activities": [
"Hand over the Persona"
]
},
{
"process": "ref/mkt/channel-program",
"activities": [
"Open Recruitment"
]
},
{
"process": "ref/mkt/churn-risk-play",
"activities": [
"Prepare the Send",
"Deliver the Intervention"
]
},
{
"process": "ref/mkt/co-marketing-campaign",
"activities": [
"Set up Each Side's Distribution"
]
},
{
"process": "ref/mkt/crisis-communication",
"activities": [
"Issue the Response"
]
},
{
"process": "ref/mkt/customer-newsletter",
"activities": [
"Brief the Makers",
"Build the Issue",
"Proof the Issue",
"Send the Issue",
"Watch the Results"
]
},
{
"process": "ref/mkt/customer-reviews",
"activities": [
"Set up the Practical Side",
"Send the Ask",
"Send the Reminder"
]
},
{
"process": "ref/mkt/enable-channel-partner",
"activities": [
"Publish the Material"
]
},
{
"process": "ref/mkt/feature-release",
"activities": [
"Tell the Customers Who Have It"
]
},
{
"process": "ref/mkt/field-event",
"activities": [
"Build the Invitation List",
"Promote the Event",
"Work the Registration List",
"Follow up with the People Who Came"
]
},
{
"process": "ref/mkt/onboarding-email-program",
"activities": [
"Brief the Agents that Act",
"Build the Send",
"Send the Step"
]
},
{
"process": "ref/mkt/pricing-change",
"activities": [
"Build the Notice Lists",
"Serve the Notice"
]
},
{
"process": "ref/mkt/trade-show",
"activities": [
"Promote the Presence"
]
},
{
"process": "ref/mkt/user-conference",
"activities": [
"Promote the Conference"
]
},
{
"process": "ref/mkt/webinar",
"activities": [
"Promote the Session",
"Work the Registration List",
"Follow up with the Registrants"
]
},
{
"process": "ref/mkt/win-back-campaign",
"activities": [
"Build the Contact List",
"Brief the Makers",
"Set up the Sending",
"Send the Sequence",
"Retire the Ones Who Stayed Silent"
]
}
]
}
}
}
# email-producer This is an abstract agent, published as an Agent Plugin. An abstract agent is a job description rather than an implementation. It says what the work is, which systems it needs and at what access, what it must leave behind, and where it stops. Any agent that leaves the records can implement it. The plugin carries twelve skills, no `mcp.json`, and everything the abstract agent owes under `com.agentcatalog.agent/`. ## Why there is no mcp.json A conformant server entry in `mcp.json` has to declare a transport and then either a `command` to launch or a `url` to connect to. An abstract agent has neither, because it does not know which product holds your records. Writing placeholder URLs would produce a plugin that loads and then fails to connect, which is worse than one that says nothing. Section 6.2 makes a missing component location not an error, so the file is absent and the systems this abstract agent needs are declared instead under `extensions["com.agentcatalog.agent"].servers`, as a role, an access level and what the access is for. Whoever builds an agent from this plugin writes the `mcp.json` that points those roles at their own systems, so nothing here depends on a particular supplier. ## Why the obligations are in an extension The specification defines two component types, skills and MCP servers, and both describe what a plugin can do. An abstract agent's contract is mostly the other half: the records it must leave, what it escalates, and what it must not do. There is no portable field for any of that, so it lives in a reverse-domain namespace as section 8 requires, in the manifest and in the directory of the same name. ## Where this abstract agent is used `ref/mkt/account-based-play`, `ref/mkt/advisory-board`, `ref/mkt/announce-company-news`, `ref/mkt/brand-refresh`, `ref/mkt/buyer-persona`, `ref/mkt/channel-program`, and 14 more. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/email-producer
--- name: build-the-list-a-send-goes-to description: Builds the list a message goes to from the contacts that are eligible for it, with opt-outs and suppressions taken out, and splits it where each group has to get a different message. Use it when running `ref/mkt/field-event`, `ref/mkt/pricing-change` and `ref/mkt/win-back-campaign`. license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Build the list a send goes to ## What it does Builds the list a message goes to from the contacts that are eligible for it, with opt-outs and suppressions taken out, and splits it where each group has to get a different message. ## Where it happens The agent does this in three activities across three reference processes. Each one names the activity as that process words it. - **Build the Contact List** - `ref/mkt/win-back-campaign`, activity 6 - [Run Win-Back Campaign](../../../../processes/marketing/win-back-campaign.md) - **Build the Invitation List** - `ref/mkt/field-event`, activity 5 - [Host Field Event](../../../../processes/marketing/field-event.md) - **Build the Notice Lists** - `ref/mkt/pricing-change`, activity 9 - [Launch Pricing Change](../../../../processes/marketing/pricing-change.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: close-out-contacts-who-never-answered description: Closes out the contacts that went through a whole run without ever answering, so they stop receiving messages. Use it when running `ref/mkt/win-back-campaign`. license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Close out contacts who never answered ## What it does Closes out the contacts that went through a whole run without ever answering, so they stop receiving messages. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Retire the Ones Who Stayed Silent** - `ref/mkt/win-back-campaign`, activity 18 - [Run Win-Back Campaign](../../../../processes/marketing/win-back-campaign.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: follow-up-after-the-thing-happened description: "Sends people what they were promised after they came: the recording, the material, the answers to what was asked, and what happens next. Use it when running `ref/mkt/advisory-board`, `ref/mkt/field-event` and `ref/mkt/webinar`." license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Follow up after the thing happened ## What it does Sends people what they were promised after they came: the recording, the material, the answers to what was asked, and what happens next. ## Where it happens The agent does this in three activities across three reference processes. Each one names the activity as that process words it. - **Follow up with the Members** - `ref/mkt/advisory-board`, activity 15 - [Convene Customer Advisory Board](../../../../processes/marketing/advisory-board.md) - **Follow up with the People Who Came** - `ref/mkt/field-event`, activity 14 - [Host Field Event](../../../../processes/marketing/field-event.md) - **Follow up with the Registrants** - `ref/mkt/webinar`, activity 15 - [Produce Webinar](../../../../processes/marketing/webinar.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: hand-material-to-another-party-to-send description: Puts approved material and lists where another party can pick them up, so a partner or the other side of a joint run can send from its own systems. Use it when running `ref/mkt/co-marketing-campaign` and `ref/mkt/enable-channel-partner`. license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Hand material to another party to send ## What it does Puts approved material and lists where another party can pick them up, so a partner or the other side of a joint run can send from its own systems. ## Where it happens The agent does this in two activities across two reference processes. Each one names the activity as that process words it. - **Publish the Material** - `ref/mkt/enable-channel-partner`, activity 9 - [Enable Channel Partner](../../../../processes/marketing/enable-channel-partner.md) - **Set up Each Side's Distribution** - `ref/mkt/co-marketing-campaign`, activity 11 - [Run Co-Marketing Campaign](../../../../processes/marketing/co-marketing-campaign.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: promote-a-run-to-fill-it description: Runs the messages that get people to sign up for something or turn up to it, pointed at registration or at where the thing is happening. Use it when running `ref/mkt/field-event` and 3 other reference processes. license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Promote a run to fill it ## What it does Runs the messages that get people to sign up for something or turn up to it, pointed at registration or at where the thing is happening. ## Where it happens The agent does this in four activities across four reference processes. Each one names the activity as that process words it. - **Promote the Conference** - `ref/mkt/user-conference`, activity 8 - [Host User Conference](../../../../processes/marketing/user-conference.md) - **Promote the Event** - `ref/mkt/field-event`, activity 9 - [Host Field Event](../../../../processes/marketing/field-event.md) - **Promote the Presence** - `ref/mkt/trade-show`, activity 10 - [Exhibit at Trade Show](../../../../processes/marketing/trade-show.md) - **Promote the Session** - `ref/mkt/webinar`, activity 8 - [Produce Webinar](../../../../processes/marketing/webinar.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: remake-the-templates-and-switch-over description: Remakes the templates that messages and pages are built from, stages the new versions where they can be previewed without serving anyone, and switches the properties and the sending system over on the agreed day. Use it when running `ref/mkt/brand-refresh`. license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Remake the templates and switch over ## What it does Remakes the templates that messages and pages are built from, stages the new versions where they can be previewed without serving anyone, and switches the properties and the sending system over on the agreed day. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Rebuild the Templates** - `ref/mkt/brand-refresh`, activity 12 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) - **Stage the Changes** - `ref/mkt/brand-refresh`, activity 18 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) - **Switch the Properties** - `ref/mkt/brand-refresh`, activity 19 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: report-what-a-send-did description: "Reports what happened after a send: what was delivered, what bounced, who opened and clicked, who unsubscribed or complained, and what converted. Use it when running `ref/mkt/customer-newsletter`." license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Report what a send did ## What it does Reports what happened after a send: what was delivered, what bounced, who opened and clicked, who unsubscribed or complained, and what converted. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Watch the Results** - `ref/mkt/customer-newsletter`, activity 14 - [Publish Customer Newsletter](../../../../processes/marketing/customer-newsletter.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: send-the-message description: Fires a prepared send once the named owner says go, and keeps the record of what went out to whom. Use it when running `ref/mkt/account-based-play` and 11 other reference processes. license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Send the message ## What it does Fires a prepared send once the named owner says go, and keeps the record of what went out to whom. The same work covers a single message, a step in a sequence, a reminder to the people who have not answered, a notice that has to be provable, and a statement that goes out on every channel at once. ## Where it happens The agent does this in thirteen activities across twelve reference processes. Each one names the activity as that process words it. - **Deliver the Intervention** - `ref/mkt/churn-risk-play`, activity 9 - [Run Churn-Risk Play](../../../../processes/marketing/churn-risk-play.md) - **Issue the Response** - `ref/mkt/crisis-communication`, activity 11 - [Manage Crisis Communication](../../../../processes/marketing/crisis-communication.md) - **Open Recruitment** - `ref/mkt/channel-program`, activity 11 - [Launch Channel Program](../../../../processes/marketing/channel-program.md) - **Publish It on the Owned Channels** - `ref/mkt/announce-company-news`, activity 14 - [Announce Company News](../../../../processes/marketing/announce-company-news.md) - **Send the Ask** - `ref/mkt/customer-reviews`, activity 10 - [Solicit Customer Reviews](../../../../processes/marketing/customer-reviews.md) - **Send the Issue** - `ref/mkt/customer-newsletter`, activity 13 - [Publish Customer Newsletter](../../../../processes/marketing/customer-newsletter.md) - **Send the Pre-Read** - `ref/mkt/advisory-board`, activity 9 - [Convene Customer Advisory Board](../../../../processes/marketing/advisory-board.md) - **Send the Reminder** - `ref/mkt/customer-reviews`, activity 11 - [Solicit Customer Reviews](../../../../processes/marketing/customer-reviews.md) - **Send the Sequence** - `ref/mkt/win-back-campaign`, activity 14 - [Run Win-Back Campaign](../../../../processes/marketing/win-back-campaign.md) - **Send the Step** - `ref/mkt/onboarding-email-program`, activity 9 - [Run Onboarding Email Program](../../../../processes/marketing/onboarding-email-program.md) - **Serve the Notice** - `ref/mkt/pricing-change`, activity 10 - [Launch Pricing Change](../../../../processes/marketing/pricing-change.md) - **Start the Touches** - `ref/mkt/account-based-play`, activity 14 - [Run Account-Based Play](../../../../processes/marketing/account-based-play.md) - **Tell the Customers Who Have It** - `ref/mkt/feature-release`, activity 7 - [Announce Feature Release](../../../../processes/marketing/feature-release.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: set-up-the-send description: Assembles the message in the sending system from copy and design that have already been signed off, loads the audience, sets the schedule, and sends proof copies so the people who have to read the message before anyone else see it exactly as a recipient would. Use it when running `ref/mkt/churn-risk-play` and 4 other reference processes. license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Set up the send ## What it does Assembles the message in the sending system from copy and design that have already been signed off, loads the audience, sets the schedule, and sends proof copies so the people who have to read the message before anyone else see it exactly as a recipient would. ## Where it happens The agent does this in six activities across five reference processes. Each one names the activity as that process words it. - **Build the Issue** - `ref/mkt/customer-newsletter`, activity 9 - [Publish Customer Newsletter](../../../../processes/marketing/customer-newsletter.md) - **Build the Send** - `ref/mkt/onboarding-email-program`, activity 8 - [Run Onboarding Email Program](../../../../processes/marketing/onboarding-email-program.md) - **Prepare the Send** - `ref/mkt/churn-risk-play`, activity 8 - [Run Churn-Risk Play](../../../../processes/marketing/churn-risk-play.md) - **Proof the Issue** - `ref/mkt/customer-newsletter`, activity 11 - [Publish Customer Newsletter](../../../../processes/marketing/customer-newsletter.md) - **Set up the Practical Side** - `ref/mkt/customer-reviews`, activity 9 - [Solicit Customer Reviews](../../../../processes/marketing/customer-reviews.md) - **Set up the Sending** - `ref/mkt/win-back-campaign`, activity 12 - [Run Win-Back Campaign](../../../../processes/marketing/win-back-campaign.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: take-in-a-finished-definition description: Takes in a definition another agent has finished and says what it changes about how messages are built and who they go to. Use it when running `ref/mkt/buyer-persona`. license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Take in a finished definition ## What it does Takes in a definition another agent has finished and says what it changes about how messages are built and who they go to. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Hand over the Persona** - `ref/mkt/buyer-persona`, activity 18 - [Develop Buyer Persona](../../../../processes/marketing/buyer-persona.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: take-the-send-from-the-briefing description: "Sits in the briefing that starts a send and takes away the same account everyone else heard: who the message is for, what it has to say, what is changing, and when it has to arrive. Use it when running `ref/mkt/account-based-play` and 4 other reference processes." license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Take the send from the briefing ## What it does Sits in the briefing that starts a send and takes away the same account everyone else heard: who the message is for, what it has to say, what is changing, and when it has to arrive. ## Where it happens The agent does this in three activities across five reference processes. Each one names the activity as that process words it. - **Brief the Agents that Act** - `ref/mkt/onboarding-email-program`, activity 5 - [Run Onboarding Email Program](../../../../processes/marketing/onboarding-email-program.md) - **Brief the Agents that Remake the Material** - `ref/mkt/brand-refresh`, activity 11 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) - **Brief the Makers** - `ref/mkt/account-based-play`, activity 7 - [Run Account-Based Play](../../../../processes/marketing/account-based-play.md) - `ref/mkt/customer-newsletter`, activity 5 - [Publish Customer Newsletter](../../../../processes/marketing/customer-newsletter.md) - `ref/mkt/win-back-campaign`, activity 7 - [Run Win-Back Campaign](../../../../processes/marketing/win-back-campaign.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: work-the-registration-list description: "Keeps the registration list moving between the invitation and the day: chases the people who have not answered, confirms the ones who have, and manages the waitlist. Use it when running `ref/mkt/field-event` and `ref/mkt/webinar`." license: CC-BY-4.0 metadata: agent: email-producer agent-version: "1" --- # Work the registration list ## What it does Keeps the registration list moving between the invitation and the day: chases the people who have not answered, confirms the ones who have, and manages the waitlist. ## Where it happens The agent does this in one activity across two reference processes. Each one names the activity as that process words it. - **Work the Registration List** - `ref/mkt/field-event`, activity 10 - [Host Field Event](../../../../processes/marketing/field-event.md) - `ref/mkt/webinar`, activity 9 - [Produce Webinar](../../../../processes/marketing/webinar.md) ## What to record Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
Every server entry in an mcp.json needs either a command to run or a url to connect to, and the package cannot know either of those until somebody points it at their own systems. So the file is left out, the systems the agent needs are named by role in plugin.json, and you write the mcp.json when you set it up.
Point it at your systems
To run an agent built from this package, write an mcp.json that says which of your systems fills each role. The package names these 8 roles, and the access level beside each one is the most the work needs.
{
"$schema": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
"mcpServers": {
"sending-system": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/sending-system"
},
"live-sends": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/live-sends"
},
"asset-store": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/asset-store"
},
"consent-record": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/consent-record"
},
"suppression-lists": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/suppression-lists"
},
"contact-database": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/contact-database"
},
"send-record-store": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/send-record-store"
},
"deliverability-monitoring": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/deliverability-monitoring"
}
}
}
The hostnames here are a placeholder for your own. Whichever product holds each of these systems, the agent you build is yours and nobody else has to be involved in running it.
20 processes, 44 activities
The highlighted activities are the ones this abstract agent does. The other activities in each process belong to other abstract agents or to people.
Brief the Makers · Start the Touches
Send the Pre-Read · Follow up with the Members
Publish It on the Owned Channels
Brief the Agents that Remake the Material · Rebuild the Templates · Stage the Changes · Switch the Properties
Hand over the Persona
Open Recruitment
Prepare the Send · Deliver the Intervention
Set up Each Side's Distribution
Issue the Response
Brief the Makers · Build the Issue · Proof the Issue · Send the Issue · Watch the Results
Set up the Practical Side · Send the Ask · Send the Reminder
Publish the Material
Tell the Customers Who Have It
Build the Invitation List · Promote the Event · Work the Registration List · Follow up with the People Who Came
Brief the Agents that Act · Build the Send · Send the Step
Build the Notice Lists · Serve the Notice
Promote the Presence
Promote the Conference
Promote the Session · Work the Registration List · Follow up with the Registrants
Build the Contact List · Brief the Makers · Set up the Sending · Send the Sequence · Retire the Ones Who Stayed Silent
What it writes down
Each message at a version, with the proof record naming who was sent a proof, when it went, and what they said. The audience at a version, with the count before the consent, opt-out and suppression rules were applied, the count after, and the rule behind every removal. The schedule as it was set, including the send-time windows and any wait between batches. The send record naming the version that went, the time it fired, and the person who said go. The delivery report, with what was delivered, what bounced hard, what bounced soft, who complained, who unsubscribed, and who the sending system suppressed on its own. Anything it could not verify before the send is recorded as unverified instead of being left out.
What it will not do
Does not write or design the message, which are the copywriter and designer agents, and it never edits the words or the layout to make them fit. Does not define the segments or change what is in the contact database, which are the audience-manager and audience-operator agents. This agent picks the audience for one send out of what those agents maintain, and takes out everyone the consent record and the suppression lists exclude. Does not hold the consent record and does not decide whether a person may be contacted at all, which is the consent-manager agent, and it never overrides a suppression. Does not assemble a standing program with its steps, waits and branches in the sending system, which is the audience-operator agent. This agent sends one message to one audience on one schedule. Does not choose which message a particular customer gets next, which is the lifecycle-manager agent. Does not decide what to do about the results: the analytics agent reports the numbers and the agent that owns the run makes the call. Does not build the page a message links to or publish it, which is the web-producer agent, and does not put the measurement on that page, which is the conversion-tracker agent. Does not reply to the people who answer a send, which is the community-manager agent. Does not say go and does not sign anything.
These limits are written into the job on purpose, so that everyone adopting the process knows which decisions stay with a person.
Who has built one, and how far each one got
Nobody has built one yet. The catalog says so rather than leaving the section off, because an empty list is a fact about the document.
implements: email-producer v1
One line in your agent's manifest. The catalog checks it against the records your runs actually leave.
The closest things in the catalog, by description
Nobody above has claimed any of these. This is the nearest match by wording between the job written above and what publishers wrote about their own listings, closest first, and wording is not evidence: some of these will be wrong, and a job with nothing suitable still gets whatever was nearest. The publishers have never heard of this abstract agent and have promised nothing about it. What a claim looks like is in the table above, and it is signed.
Not workers. These are capability that whatever does the job would use, which is a different relationship and kept in its own column for that reason.
- mail-send MCP server · mailkite.dev · hosted · mirrored from the MCP registry Send transactional email over a verified domain — templates, attachments, custom headers.
- GoodSender MCP server · good-sender.github.io · run it yourself · mirrored from the MCP registry Free consent-based emailing and interactive email template design tools
- email-outreach MCP server · openhelm.ai · hosted · mirrored from the MCP registry Goal-directed email outreach: research, draft, send, triage replies. Real data, never fabricated.