Sign in
abstract agent · marketing · 20 processes · plugin 1.0.0

Email producer

email-producer v1

Assembles 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.

The abstract agent

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.

WORKS INref/mkt/account-based-playref/mkt/advisory-boardref/mkt/announce-company-newsGRANTEDthe sending systemwrite — messages and audiences are assembled athe live sendstrigger — cap: how many contacts one send may the asset storeread — it reads the copy and the design at thethe consent recordreadthe suppression listsreadthe contact databasereadthe send record storewrite — each send lands with its audience coundeliverability monitoringreadTHE ABSTRACT AGENTemail-producerv1assembles an approved…HANDS TO A PERSONthe decision to send,…a person decidesa request to send to a…a person decidesa message that will not…a person decidesa complaint rate or a…a person decidesa send in flight that has…a person decidesan audience larger than…a person decidesMUST FOLLOWbuild-by-talentcollect-and-reportbriefingapprovalroll call

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.

The plugin

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.

email-producer · 17 files · 1.0.0
com.agentcatalog.agent/NOT.mdWhat the agent does not do, and when it asks a person.
# 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
com.agentcatalog.agent/RECORDS.mdThe records the agent must leave behind.
# 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.
com.agentcatalog.agent/SERVERS.mdThe systems the agent needs, by role rather than by product.
# 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.
plugin.jsonThe manifest. It lists the skills and the systems the agent needs.
{
  "$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"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# 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
skills/build-the-list-a-send-goes-to/SKILL.mdBuilds 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`.
---
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`.
skills/close-out-contacts-who-never-answered/SKILL.mdCloses 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`.
---
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`.
skills/follow-up-after-the-thing-happened/SKILL.md"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`."
---
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`.
skills/hand-material-to-another-party-to-send/SKILL.mdPuts 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`.
---
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`.
skills/promote-a-run-to-fill-it/SKILL.mdRuns 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.
---
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`.
skills/remake-the-templates-and-switch-over/SKILL.mdRemakes 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`.
---
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`.
skills/report-what-a-send-did/SKILL.md"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`."
---
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`.
skills/send-the-message/SKILL.mdFires 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.
---
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`.
skills/set-up-the-send/SKILL.mdAssembles 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.
---
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`.
skills/take-in-a-finished-definition/SKILL.mdTakes 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`.
---
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`.
skills/take-the-send-from-the-briefing/SKILL.md"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."
---
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`.
skills/work-the-registration-list/SKILL.md"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`."
---
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`.
mcp.jsonNot in the package.

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.

Setting 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.

sending-system · writelive-sends · triggerasset-store · readconsent-record · readsuppression-lists · readcontact-database · readsend-record-store · writedeliverability-monitoring · read
mcp.json You write this file. It is not part of the package.
{
  "$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.

Where it works

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.

Run Account-Based Playref/mkt/account-based-play · 19 activities
12345678910111213141516171819

Brief the Makers · Start the Touches

Convene Customer Advisory Boardref/mkt/advisory-board · 16 activities
12345678910111213141516

Send the Pre-Read · Follow up with the Members

Announce Company Newsref/mkt/announce-company-news · 17 activities
1234567891011121314151617

Publish It on the Owned Channels

Roll Out Brand Refreshref/mkt/brand-refresh · 26 activities
1234567891011121314151617181920212223242526

Brief the Agents that Remake the Material · Rebuild the Templates · Stage the Changes · Switch the Properties

Develop Buyer Personaref/mkt/buyer-persona · 20 activities
1234567891011121314151617181920

Hand over the Persona

Launch Channel Programref/mkt/channel-program · 17 activities
1234567891011121314151617

Open Recruitment

Run Churn-Risk Playref/mkt/churn-risk-play · 12 activities
123456789101112

Prepare the Send · Deliver the Intervention

Run Co-Marketing Campaignref/mkt/co-marketing-campaign · 16 activities
12345678910111213141516

Set up Each Side's Distribution

Manage Crisis Communicationref/mkt/crisis-communication · 16 activities
12345678910111213141516

Issue the Response

Publish Customer Newsletterref/mkt/customer-newsletter · 17 activities
1234567891011121314151617

Brief the Makers · Build the Issue · Proof the Issue · Send the Issue · Watch the Results

Solicit Customer Reviewsref/mkt/customer-reviews · 16 activities
12345678910111213141516

Set up the Practical Side · Send the Ask · Send the Reminder

Enable Channel Partnerref/mkt/enable-channel-partner · 16 activities
12345678910111213141516

Publish the Material

Announce Feature Releaseref/mkt/feature-release · 10 activities
12345678910

Tell the Customers Who Have It

Host Field Eventref/mkt/field-event · 16 activities
12345678910111213141516

Build the Invitation List · Promote the Event · Work the Registration List · Follow up with the People Who Came

Run Onboarding Email Programref/mkt/onboarding-email-program · 14 activities
1234567891011121314

Brief the Agents that Act · Build the Send · Send the Step

Launch Pricing Changeref/mkt/pricing-change · 16 activities
12345678910111213141516

Build the Notice Lists · Serve the Notice

Exhibit at Trade Showref/mkt/trade-show · 16 activities
12345678910111213141516

Promote the Presence

Host User Conferenceref/mkt/user-conference · 17 activities
1234567891011121314151617

Promote the Conference

Produce Webinarref/mkt/webinar · 18 activities
123456789101112131415161718

Promote the Session · Work the Registration List · Follow up with the Registrants

Run Win-Back Campaignref/mkt/win-back-campaign · 20 activities
1234567891011121314151617181920

Build the Contact List · Brief the Makers · Set up the Sending · Send the Sequence · Retire the Ones Who Stayed Silent

The records it leaves

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.

Where it stops

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.

Agents built from this plugin

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.

declare it implements: email-producer v1 One line in your agent's manifest. The catalog checks it against the records your runs actually leave.
A guess, not a claim

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.

Might be reached for

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.