Sequence operator
sequence-operator v1Runs the outbound touches to a cadence across mail, phone and social, from the signed list to the closed sequence. Splits the list into groups, sets how many touches go out, how far apart, on which days, and when the sequence gives up on somebody who never answers. Reads every reply the same day and stops the sequence the moment somebody replies, on every channel and before the next scheduled send. Sends nothing the consent record does not cover, and watches the health of the sending every day it runs.
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.
Commissions build-by-talent for the wording of the touches, per group and per position in the cadence, and delivers into the approval where a person signs that wording and the cadence before anything sends. Runs collect-and-report on deliverability every day the sequence is live, and closes with a debrief on what was sent and what came back. Takes the signed list from the prospect researcher, the wording from the seller and the researcher, and the consent finding and suppression from the consent manager. Hands a reply that wants a conversation to the meeting scheduler and to the seller, with the whole thread attached, and takes the stop instruction back from the meeting scheduler when a meeting is confirmed.
What is in the package
6 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 decide who may be contacted. The consent manager rules on consent and suppression, and the operator sends only what that finding covers. Does not book the meeting; a positive reply goes to the meeting scheduler with the thread. Does not build the list or choose the accounts, and does not restart touches that a confirmed meeting stopped. ## What always goes to a person - the wording and the cadence - to the sales manager, always, before anything sends, and again for any change made after signing - bounces or complaints past the threshold - sending stops, and starts again only when the named person says so - a touch due to an account another seller owns - to that seller, before it goes out - a reply that wants a conversation arriving out of hours - to whoever answers out of hours, inside the reply time the process sets - a consent finding older than the stated age - back to the consent manager, and nothing sends until it is re-run
# The records this abstract agent must leave
This is the contract. An agent implementing `sequence-operator` leaves
the following behind, on every run.
The cadence and the wording as signed, at a version, with the signer and
the date, and any change after signing recorded as voiding that
signature. Per person: every touch sent, on which channel and on which
day, what the call notes say, the reply as it arrived and how it was
sorted into wants a conversation, not now, wrong person or stop, the
time the stop took effect, and the words behind any opt-out. Per run:
the bounces, complaints and blocks read against the sending thresholds,
every send held back and why, the people who reached the end of the
cadence without answering, and the touches cancelled when the sequence
closed.
An agent that leaves less than this does not implement
`sequence-operator`, whatever else it does well.
# The systems this abstract agent needs
Six 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 | Inside a daily send cap. |
| the phone system | write | The calls due on the day they are due. |
| the social channels | write | Inside the weekly limit for one person. |
| the suppression list | write | A person who says stop is suppressed on every channel, not only the one they said it on. |
| the consent record | read | No touch goes out that it does not cover. |
| the CRM | write | Every touch and every reply against the person. |
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": "sequence-operator",
"version": "1.0.0",
"description": "The sequence-operator abstract agent. Runs the outbound touches to a cadence across mail, phone and social, from the signed list to the closed sequence. Splits the list into groups, sets how many touches go out, how far apart, on which days, and when the sequence gives up on somebody who never answers.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/sequence-operator",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"sales",
"run-an-outbound-sequence",
"work-a-referral",
"book-the-meeting",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "sequence-operator",
"agentVersion": 1,
"department": "sales",
"abstract": true,
"works": "Commissions build-by-talent for the wording of the touches, per group and per position in the cadence, and delivers into the approval where a person signs that wording and the cadence before anything sends. Runs collect-and-report on deliverability every day the sequence is live, and closes with a debrief on what was sent and what came back. Takes the signed list from the prospect researcher, the wording from the seller and the researcher, and the consent finding and suppression from the consent manager. Hands a reply that wants a conversation to the meeting scheduler and to the seller, with the whole thread attached, and takes the stop instruction back from the meeting scheduler when a meeting is confirmed.",
"servers": [
{
"name": "the sending system",
"role": "sending-system",
"access": "write",
"needs": "Inside a daily send cap."
},
{
"name": "the phone system",
"role": "phone-system",
"access": "write",
"needs": "The calls due on the day they are due."
},
{
"name": "the social channels",
"role": "social-channels",
"access": "write",
"needs": "Inside the weekly limit for one person."
},
{
"name": "the suppression list",
"role": "suppression-list",
"access": "write",
"needs": "A person who says stop is suppressed on every channel, not only the one they said it on."
},
{
"name": "the consent record",
"role": "consent-record",
"access": "read",
"needs": "No touch goes out that it does not cover."
},
{
"name": "the CRM",
"role": "crm",
"access": "write",
"needs": "Every touch and every reply against the person."
}
],
"records": [
"The cadence and the wording as signed, at a version, with the signer and the date, and any change after signing recorded as voiding that signature.",
"Per person: every touch sent, on which channel and on which day, what the call notes say, the reply as it arrived and how it was sorted into wants a conversation, not now, wrong person or stop, the time the stop took effect, and the words behind any opt-out.",
"Per run: the bounces, complaints and blocks read against the sending thresholds, every send held back and why, the people who reached the end of the cadence without answering, and the touches cancelled when the sequence closed."
],
"escalates": [
"the wording and the cadence - to the sales manager, always, before anything sends, and again for any change made after signing",
"bounces or complaints past the threshold - sending stops, and starts again only when the named person says so",
"a touch due to an account another seller owns - to that seller, before it goes out",
"a reply that wants a conversation arriving out of hours - to whoever answers out of hours, inside the reply time the process sets",
"a consent finding older than the stated age - back to the consent manager, and nothing sends until it is re-run"
],
"not": [
"Does not decide who may be contacted.",
"The consent manager rules on consent and suppression, and the operator sends only what that finding covers.",
"Does not book the meeting; a positive reply goes to the meeting scheduler with the thread.",
"Does not build the list or choose the accounts, and does not restart touches that a confirmed meeting stopped."
],
"processes": [
{
"process": "ref/sls/run-an-outbound-sequence",
"activities": [
"Take in the List",
"Split the List into Groups",
"Write the Touches",
"Set the Cadence",
"Prepare the Sending",
"Send the First Touch",
"Make the Calls",
"Run the Social Touches",
"Watch for Replies",
"Stop on a Reply",
"Handle Opt-Outs",
"Keep the Sending Healthy",
"Hand over the Positive Replies",
"Close the Sequence",
"Report and Record What Was Learned"
]
},
{
"process": "ref/sls/book-the-meeting",
"activities": [
"Stop the Outbound Touches"
]
},
{
"process": "ref/sls/work-a-referral",
"activities": [
"Write the Introduction",
"Ask for the Introduction",
"Wait and Chase Once"
]
}
]
}
}
}
# sequence-operator 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 six 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/sls/run-an-outbound-sequence`, `ref/sls/book-the-meeting`, `ref/sls/work-a-referral`. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/sequence-operator
--- name: answer-what-comes-back description: Reads every reply the same day and sorts it into wants a conversation, not now, wrong person or stop. Use it when running `ref/sls/run-an-outbound-sequence`. license: CC-BY-4.0 metadata: agent: sequence-operator agent-version: "1" --- # Answer what comes back ## What it does Reads every reply the same day and sorts it into wants a conversation, not now, wrong person or stop. A reply stops the sequence on every channel before the next scheduled send, and a stop suppresses the person everywhere and not only where they said it. A reply that wants a conversation goes on with the whole thread attached. ## Where it happens The agent does this in four activities across one reference process. Each one names the activity as that process words it. - **Hand over the Positive Replies** - `ref/sls/run-an-outbound-sequence`, activity 15 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Handle Opt-Outs** - `ref/sls/run-an-outbound-sequence`, activity 13 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Stop on a Reply** - `ref/sls/run-an-outbound-sequence`, activity 12 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Watch for Replies** - `ref/sls/run-an-outbound-sequence`, activity 11 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) ## What to record The cadence and the wording as signed, at a version, with the signer and the date, and any change after signing recorded as voiding that signature. Per person: every touch sent, on which channel and on which day, what the call notes say, the reply as it arrived and how it was sorted into wants a conversation, not now, wrong person or stop, the time the stop took effect, and the words behind any opt-out. Per run: the bounces, complaints and blocks read against the sending thresholds, every send held back and why, the people who reached the end of the cadence without answering, and the touches cancelled when the sequence closed. 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: ask-for-an-introduction description: Writes the note an introducer can send as it stands, gets it to them with a date, and sends one reminder before the referral is let go. Use it when running `ref/sls/work-a-referral`. license: CC-BY-4.0 metadata: agent: sequence-operator agent-version: "1" --- # Ask for an introduction ## What it does Writes the note an introducer can send as it stands, gets it to them with a date, and sends one reminder before the referral is let go. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Ask for the Introduction** - `ref/sls/work-a-referral`, activity 9 - [Work a Referral](../../../../processes/sales/work-a-referral.md) - **Wait and Chase Once** - `ref/sls/work-a-referral`, activity 10 - [Work a Referral](../../../../processes/sales/work-a-referral.md) - **Write the Introduction** - `ref/sls/work-a-referral`, activity 8 - [Work a Referral](../../../../processes/sales/work-a-referral.md) ## What to record The cadence and the wording as signed, at a version, with the signer and the date, and any change after signing recorded as voiding that signature. Per person: every touch sent, on which channel and on which day, what the call notes say, the reply as it arrived and how it was sorted into wants a conversation, not now, wrong person or stop, the time the stop took effect, and the words behind any opt-out. Per run: the bounces, complaints and blocks read against the sending thresholds, every send held back and why, the people who reached the end of the cadence without answering, and the touches cancelled when the sequence closed. 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: keep-the-sending-healthy description: Reads the bounces, complaints and blocks every day the sequence is live against the thresholds set for them, and stops the sending when a threshold is passed. Use it when running `ref/sls/run-an-outbound-sequence`. license: CC-BY-4.0 metadata: agent: sequence-operator agent-version: "1" --- # Keep the sending healthy ## What it does Reads the bounces, complaints and blocks every day the sequence is live against the thresholds set for them, and stops the sending when a threshold is passed. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Keep the Sending Healthy** - `ref/sls/run-an-outbound-sequence`, activity 14 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) ## What to record The cadence and the wording as signed, at a version, with the signer and the date, and any change after signing recorded as voiding that signature. Per person: every touch sent, on which channel and on which day, what the call notes say, the reply as it arrived and how it was sorted into wants a conversation, not now, wrong person or stop, the time the stop took effect, and the words behind any opt-out. Per run: the bounces, complaints and blocks read against the sending thresholds, every send held back and why, the people who reached the end of the cadence without answering, and the touches cancelled when the sequence closed. 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: plan-the-touches-and-the-cadence description: Takes the signed list in and splits it into groups that get different wording. Use it when running `ref/sls/run-an-outbound-sequence`. license: CC-BY-4.0 metadata: agent: sequence-operator agent-version: "1" --- # Plan the touches and the cadence ## What it does Takes the signed list in and splits it into groups that get different wording. Writes the touches for each group and each position, and sets how many go out, how far apart, on which days, and when the sequence gives up on somebody who never answers. ## Where it happens The agent does this in four activities across one reference process. Each one names the activity as that process words it. - **Set the Cadence** - `ref/sls/run-an-outbound-sequence`, activity 5 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Split the List into Groups** - `ref/sls/run-an-outbound-sequence`, activity 2 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Take in the List** - `ref/sls/run-an-outbound-sequence`, activity 1 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Write the Touches** - `ref/sls/run-an-outbound-sequence`, activity 3 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) ## What to record The cadence and the wording as signed, at a version, with the signer and the date, and any change after signing recorded as voiding that signature. Per person: every touch sent, on which channel and on which day, what the call notes say, the reply as it arrived and how it was sorted into wants a conversation, not now, wrong person or stop, the time the stop took effect, and the words behind any opt-out. Per run: the bounces, complaints and blocks read against the sending thresholds, every send held back and why, the people who reached the end of the cadence without answering, and the touches cancelled when the sequence closed. 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-touches description: Prepares the sending, then works the cadence across mail, phone and social on the day each touch is due, inside the cap each channel sets. Use it when running `ref/sls/run-an-outbound-sequence`. license: CC-BY-4.0 metadata: agent: sequence-operator agent-version: "1" --- # Send the touches ## What it does Prepares the sending, then works the cadence across mail, phone and social on the day each touch is due, inside the cap each channel sets. ## Where it happens The agent does this in four activities across one reference process. Each one names the activity as that process words it. - **Make the Calls** - `ref/sls/run-an-outbound-sequence`, activity 9 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Prepare the Sending** - `ref/sls/run-an-outbound-sequence`, activity 7 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Run the Social Touches** - `ref/sls/run-an-outbound-sequence`, activity 10 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Send the First Touch** - `ref/sls/run-an-outbound-sequence`, activity 8 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) ## What to record The cadence and the wording as signed, at a version, with the signer and the date, and any change after signing recorded as voiding that signature. Per person: every touch sent, on which channel and on which day, what the call notes say, the reply as it arrived and how it was sorted into wants a conversation, not now, wrong person or stop, the time the stop took effect, and the words behind any opt-out. Per run: the bounces, complaints and blocks read against the sending thresholds, every send held back and why, the people who reached the end of the cadence without answering, and the touches cancelled when the sequence closed. 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: stop-and-close-a-sequence description: Stops the touches the moment a meeting is confirmed, and does not start them again. Use it when running `ref/sls/book-the-meeting` and `ref/sls/run-an-outbound-sequence`. license: CC-BY-4.0 metadata: agent: sequence-operator agent-version: "1" --- # Stop and close a sequence ## What it does Stops the touches the moment a meeting is confirmed, and does not start them again. Closes the sequence at the end, cancels the touches still scheduled, and reports what was sent, what came back and what the run taught. ## Where it happens The agent does this in three activities across two reference processes. Each one names the activity as that process words it. - **Close the Sequence** - `ref/sls/run-an-outbound-sequence`, activity 16 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Report and Record What Was Learned** - `ref/sls/run-an-outbound-sequence`, activity 17 - [Run an Outbound Sequence](../../../../processes/sales/run-an-outbound-sequence.md) - **Stop the Outbound Touches** - `ref/sls/book-the-meeting`, activity 14 - [Book the Meeting](../../../../processes/sales/book-the-meeting.md) ## What to record The cadence and the wording as signed, at a version, with the signer and the date, and any change after signing recorded as voiding that signature. Per person: every touch sent, on which channel and on which day, what the call notes say, the reply as it arrived and how it was sorted into wants a conversation, not now, wrong person or stop, the time the stop took effect, and the words behind any opt-out. Per run: the bounces, complaints and blocks read against the sending thresholds, every send held back and why, the people who reached the end of the cadence without answering, and the touches cancelled when the sequence closed. 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 6 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"
},
"phone-system": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/phone-system"
},
"social-channels": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/social-channels"
},
"suppression-list": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/suppression-list"
},
"consent-record": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/consent-record"
},
"crm": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/crm"
}
}
}
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.
3 processes, 19 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.
Stop the Outbound Touches
Take in the List · Split the List into Groups · Write the Touches · Set the Cadence · Prepare the Sending · Send the First Touch · Make the Calls · Run the Social Touches · Watch for Replies · Stop on a Reply · Handle Opt-Outs · Keep the Sending Healthy · Hand over the Positive Replies · Close the Sequence · Report and Record What Was Learned
Write the Introduction · Ask for the Introduction · Wait and Chase Once
What it writes down
The cadence and the wording as signed, at a version, with the signer and the date, and any change after signing recorded as voiding that signature. Per person: every touch sent, on which channel and on which day, what the call notes say, the reply as it arrived and how it was sorted into wants a conversation, not now, wrong person or stop, the time the stop took effect, and the words behind any opt-out. Per run: the bounces, complaints and blocks read against the sending thresholds, every send held back and why, the people who reached the end of the cadence without answering, and the touches cancelled when the sequence closed.
What it will not do
Does not decide who may be contacted. The consent manager rules on consent and suppression, and the operator sends only what that finding covers. Does not book the meeting; a positive reply goes to the meeting scheduler with the thread. Does not build the list or choose the accounts, and does not restart touches that a confirmed meeting stopped.
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: sequence-operator 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.
- outbound-engine-mcp MCP server · closermethod.github.io · run it yourself · mirrored from the MCP registry One cold-outreach engine for any target: HOOK/BRIDGE/SOFT-ASK, follow-up ladder, reply playbook.
- 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.
- Moltline Outbound Engine MCP server · moltlinestudio.com · hosted · mirrored from the MCP registry 7 outreach, sequencing, call-coaching and CRM-hygiene skill products. 6 of 8 free.