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

Consent manager

consent-manager v1

Holds the record of who agreed to be contacted, on which channel, when they agreed, and where the agreement came from. Before anything is sent, this agent applies that record to the list and takes out every contact the record does not cover. When somebody opts out, it makes sure the withdrawal reaches every system that keeps its own copy of the audience, and it confirms that each one took it. It scores a finished change to the contact base against the rules that were approved before the change started, and it stops a send that would break the record.

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/analyze-customer-baseref/mkt/attribution-modelGRANTEDthe consent recordwrite — every agreement and every withdrawal lthe suppression listswrite — a withdrawal is written into every listhe contact databasereadthe sending systemreadthe approved rules for the changeread — at the version they were approved atthe live sendstrigger — it stops a send that would break theTHE ABSTRACT AGENTconsent-managerv1holds the record of who…HANDS TO A PERSONa contact whose permission…a person decidesa withdrawal it cannot…a person decidesa request to release a…a person decidescontacts arriving from a…a person decidesMUST FOLLOWbriefingapprovalassessmentroll call

The examiner in an assessment: the rules are named and versioned before scoring starts, every item in the change gets a verdict, and every verdict cites the rule it was scored against. Its findings are what the approval that follows reads. Sits in the briefing that starts a program or a hygiene cycle, so it hears the entry condition while the entry condition can still be changed. Answers the roll-call before a send with whether the list may be sent to, and with the count it removed.

The plugin

What is in the package

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

consent-manager · 19 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 decide who enters a program, what its steps are, or what a
hygiene cycle covers, which the audience-manager agent does. This agent
says which contacts may be reached at all, and the audience-manager
chooses among them. Does not standardize fields, merge records, enrich
them, delete them or rebuild segments, which is the audience-operator
agent. The only thing this agent writes into the sending systems is a
withdrawal. Does not write or design the messages, and never starts a
send. Does not score material against the brand guidelines or the claims
register, which is the brand-check agent running its own pass. Does not
write the consent rules it applies. Those come from the legal reviewer,
and the process names the version in force. Does not sign anything.

## What always goes to a person

- a contact whose permission it cannot establish either way. It treats
  the contact as not contactable and puts the question to a person.
- a withdrawal it cannot confirm reached every system that holds a copy
  of the audience
- a request to release a send it has stopped. Only a person overrides
  this agent, and the override is recorded with the reason and the name.
- contacts arriving from a source whose terms do not cover the sending
  the program plans
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 `consent-manager` leaves the
following behind, on every run.

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

An agent that leaves less than this does not implement
`consent-manager`, 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

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 consent record | write | Every agreement and every withdrawal lands with its date and the place it came from. |
| the suppression lists | write | A withdrawal is written into every list that holds the contact. |
| the contact database | read |  |
| the sending system | read |  |
| the approved rules for the change | read | At the version they were approved at. |
| the live sends | trigger | It stops a send that would break the record. |

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": "consent-manager",
  "version": "1.0.0",
  "description": "The consent-manager abstract agent. Holds the record of who agreed to be contacted, on which channel, when they agreed, and where the agreement came from. Before anything is sent, this agent applies that record to the list and takes out every contact the record does not cover.",
  "author": {
    "name": "AgentCatalog",
    "url": "https://agentcatalog.com"
  },
  "homepage": "https://agentcatalog.com/abstract-agents/consent-manager",
  "repository": "https://github.com/jeffrschneider/agentcatalog",
  "license": "CC-BY-4.0",
  "keywords": [
    "abstract-agent",
    "reference",
    "marketing",
    "contact-database-hygiene",
    "display-retargeting",
    "co-marketing-campaign",
    "abstract"
  ],
  "extensions": {
    "com.agentcatalog.agent": {
      "agent": "consent-manager",
      "agentVersion": 1,
      "department": "marketing",
      "abstract": true,
      "works": "The examiner in an assessment: the rules are named and versioned before scoring starts, every item in the change gets a verdict, and every verdict cites the rule it was scored against. Its findings are what the approval that follows reads. Sits in the briefing that starts a program or a hygiene cycle, so it hears the entry condition while the entry condition can still be changed. Answers the roll-call before a send with whether the list may be sent to, and with the count it removed.",
      "servers": [
        {
          "name": "the consent record",
          "role": "consent-record",
          "access": "write",
          "needs": "Every agreement and every withdrawal lands with its date and the place it came from."
        },
        {
          "name": "the suppression lists",
          "role": "suppression-lists",
          "access": "write",
          "needs": "A withdrawal is written into every list that holds the contact."
        },
        {
          "name": "the contact database",
          "role": "contact-database",
          "access": "read"
        },
        {
          "name": "the sending system",
          "role": "sending-system",
          "access": "read"
        },
        {
          "name": "the approved rules for the change",
          "role": "approved-rules-for-the-change",
          "access": "read",
          "needs": "At the version they were approved at."
        },
        {
          "name": "the live sends",
          "role": "live-sends",
          "access": "trigger",
          "needs": "It stops a send that would break the record."
        }
      ],
      "records": [
        "For every list it clears, the count it removed and the rule each removal was made under.",
        "For every withdrawal, a dated line naming each system that keeps a copy of the audience, when the withdrawal was written into it, and when the write was confirmed.",
        "A verdict per item for a scored change, each citing the rule and its version.",
        "For every send it stopped, the rule the send would have broken and the contacts it would have reached."
      ],
      "escalates": [
        "a contact whose permission it cannot establish either way. It treats the contact as not contactable and puts the question to a person.",
        "a withdrawal it cannot confirm reached every system that holds a copy of the audience",
        "a request to release a send it has stopped. Only a person overrides this agent, and the override is recorded with the reason and the name.",
        "contacts arriving from a source whose terms do not cover the sending the program plans"
      ],
      "not": [
        "Does not decide who enters a program, what its steps are, or what a hygiene cycle covers, which the audience-manager agent does.",
        "This agent says which contacts may be reached at all, and the audience-manager chooses among them.",
        "Does not standardize fields, merge records, enrich them, delete them or rebuild segments, which is the audience-operator agent.",
        "The only thing this agent writes into the sending systems is a withdrawal.",
        "Does not write or design the messages, and never starts a send.",
        "Does not score material against the brand guidelines or the claims register, which is the brand-check agent running its own pass.",
        "Does not write the consent rules it applies.",
        "Those come from the legal reviewer, and the process names the version in force.",
        "Does not sign anything."
      ],
      "processes": [
        {
          "process": "ref/mkt/account-based-play",
          "activities": [
            "Check Who May Be Contacted"
          ]
        },
        {
          "process": "ref/mkt/analyze-customer-base",
          "activities": [
            "Clear the Data for This Use"
          ]
        },
        {
          "process": "ref/mkt/attribution-model",
          "activities": [
            "Clear the Data for Use"
          ]
        },
        {
          "process": "ref/mkt/brand-audit",
          "activities": [
            "Ask the Audience"
          ]
        },
        {
          "process": "ref/mkt/brand-health",
          "activities": [
            "Brief the Wave",
            "Check Who May Be Contacted"
          ]
        },
        {
          "process": "ref/mkt/buyer-persona",
          "activities": [
            "Clear the Sample and the Questions"
          ]
        },
        {
          "process": "ref/mkt/channel-program",
          "activities": [
            "Open Recruitment"
          ]
        },
        {
          "process": "ref/mkt/co-marketing-campaign",
          "activities": [
            "Settle the Lead Terms",
            "Wire up the Split",
            "Set up Each Side's Distribution",
            "Split and Hand over the Leads"
          ]
        },
        {
          "process": "ref/mkt/contact-database-hygiene",
          "activities": [
            "Confirm the Rules in Force",
            "Brief the Cycle",
            "Reconcile the Consent Record",
            "Merge the Records",
            "Apply the Suppression",
            "Score the Finished Change",
            "Record What Was Learned"
          ]
        },
        {
          "process": "ref/mkt/customer-research",
          "activities": [
            "Brief the Study",
            "Check Who May Be Contacted"
          ]
        },
        {
          "process": "ref/mkt/display-retargeting",
          "activities": [
            "Check Who May Be Retargeted",
            "Build the Suppression List",
            "Tag the Site",
            "Apply the Suppression",
            "Check the Suppression Is Holding"
          ]
        },
        {
          "process": "ref/mkt/engage-marketing-agency",
          "activities": [
            "Set up the Access"
          ]
        },
        {
          "process": "ref/mkt/lead-scoring-model",
          "activities": [
            "Clear the New Signals"
          ]
        },
        {
          "process": "ref/mkt/map-buyer-journey",
          "activities": [
            "Clear the Sample and the Questions"
          ]
        },
        {
          "process": "ref/mkt/media-plan",
          "activities": [
            "Clear the Targeting and the Data"
          ]
        },
        {
          "process": "ref/mkt/nurture-sequence",
          "activities": [
            "Check Who May Be Contacted",
            "Set the Exits",
            "Brief the Makers",
            "Run Test Contacts Through It"
          ]
        },
        {
          "process": "ref/mkt/pricing-change",
          "activities": [
            "Build the Notice Lists"
          ]
        },
        {
          "process": "ref/mkt/select-marketing-technology",
          "activities": [
            "Brief the Selection",
            "Check the Terms and the Data"
          ]
        },
        {
          "process": "ref/mkt/target-audience-segment",
          "activities": [
            "Confirm the Rules in Force",
            "Brief the Build",
            "Apply Consent and Suppression",
            "Score the Finished List"
          ]
        },
        {
          "process": "ref/mkt/traffic-ad-creative",
          "activities": [
            "Load the Audiences the Plan Names"
          ]
        },
        {
          "process": "ref/mkt/webinar",
          "activities": [
            "Build the Invitation Audience"
          ]
        },
        {
          "process": "ref/mkt/win-loss-analysis",
          "activities": [
            "Brief the Study",
            "Check Who May Be Approached"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# consent-manager

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 fourteen 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/analyze-customer-base`,
`ref/mkt/attribution-model`, `ref/mkt/brand-audit`,
`ref/mkt/brand-health`, `ref/mkt/buyer-persona`, and 16 more. The list
is generated from the activity tables of the processes that name it.

https://agentcatalog.com/abstract-agents/consent-manager
skills/build-the-list-a-run-sends-to/SKILL.mdBuilds the list a run will reach and takes out everyone the consent record does not cover, then delivers that list wherever it has to go, whether that is an invitation, a notice per treatment, an approach to candidates or an audience loaded into the systems that serve ads. Use it when running `ref/mkt/channel-program` and 4 other reference processes.
---
name: build-the-list-a-run-sends-to
description: Builds the list a run will reach and takes out everyone the consent record does not cover, then delivers that list wherever it has to go, whether that is an invitation, a notice per treatment, an approach to candidates or an audience loaded into the systems that serve ads. Use it when running `ref/mkt/channel-program` and 4 other reference processes.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Build the list a run sends to

## What it does

Builds the list a run will reach and takes out everyone the consent
record does not cover, then delivers that list wherever it has to go,
whether that is an invitation, a notice per treatment, an approach to
candidates or an audience loaded into the systems that serve ads.

## Where it happens

The agent does this in five activities across five reference processes.
Each one names the activity as that process words it.

- **Apply Consent and Suppression**
  - `ref/mkt/target-audience-segment`, activity 9 -
    [Build Target Audience Segment](../../../../processes/marketing/target-audience-segment.md)
- **Build the Invitation Audience**
  - `ref/mkt/webinar`, activity 7 -
    [Produce Webinar](../../../../processes/marketing/webinar.md)
- **Build the Notice Lists**
  - `ref/mkt/pricing-change`, activity 9 -
    [Launch Pricing Change](../../../../processes/marketing/pricing-change.md)
- **Load the Audiences the Plan Names**
  - `ref/mkt/traffic-ad-creative`, activity 11 -
    [Traffic Ad Creative](../../../../processes/marketing/traffic-ad-creative.md)
- **Open Recruitment**
  - `ref/mkt/channel-program`, activity 11 -
    [Launch Channel Program](../../../../processes/marketing/channel-program.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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/hold-the-suppression-list/SKILL.mdKeeps the list of people who must never be reached, with a reason against each entry, and writes it into every list and system that sends. Use it when running `ref/mkt/contact-database-hygiene` and `ref/mkt/display-retargeting`.
---
name: hold-the-suppression-list
description: Keeps the list of people who must never be reached, with a reason against each entry, and writes it into every list and system that sends. Use it when running `ref/mkt/contact-database-hygiene` and `ref/mkt/display-retargeting`.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Hold the suppression list

## What it does

Keeps the list of people who must never be reached, with a reason
against each entry, and writes it into every list and system that sends.
Afterwards it reads what was delivered and confirms that nobody the list
took out was reached anyway.

## Where it happens

The agent does this in three activities across two reference processes.
Each one names the activity as that process words it.

- **Apply the Suppression**
  - `ref/mkt/contact-database-hygiene`, activity 13 -
    [Cleanse Contact Database](../../../../processes/marketing/contact-database-hygiene.md)
  - `ref/mkt/display-retargeting`, activity 8 -
    [Run Display Retargeting Campaign](../../../../processes/marketing/display-retargeting.md)
- **Build the Suppression List**
  - `ref/mkt/display-retargeting`, activity 5 -
    [Run Display Retargeting Campaign](../../../../processes/marketing/display-retargeting.md)
- **Check the Suppression Is Holding**
  - `ref/mkt/display-retargeting`, activity 15 -
    [Run Display Retargeting Campaign](../../../../processes/marketing/display-retargeting.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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/keep-one-record-per-person/SKILL.mdGathers opt-outs from every system that holds its own copy and merges duplicate records into one per person, keeping the strictest consent it finds. Use it when running `ref/mkt/contact-database-hygiene`.
---
name: keep-one-record-per-person
description: Gathers opt-outs from every system that holds its own copy and merges duplicate records into one per person, keeping the strictest consent it finds. Use it when running `ref/mkt/contact-database-hygiene`.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Keep one record per person

## What it does

Gathers opt-outs from every system that holds its own copy and merges
duplicate records into one per person, keeping the strictest consent it
finds.

## Where it happens

The agent does this in two activities across one reference process. Each
one names the activity as that process words it.

- **Merge the Records**
  - `ref/mkt/contact-database-hygiene`, activity 8 -
    [Cleanse Contact Database](../../../../processes/marketing/contact-database-hygiene.md)
- **Reconcile the Consent Record**
  - `ref/mkt/contact-database-hygiene`, activity 5 -
    [Cleanse Contact Database](../../../../processes/marketing/contact-database-hygiene.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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/put-a-question-to-customers/SKILL.mdPuts an approved question to customers who may be contacted and brings back what they said. Use it when running `ref/mkt/brand-audit`.
---
name: put-a-question-to-customers
description: Puts an approved question to customers who may be contacted and brings back what they said. Use it when running `ref/mkt/brand-audit`.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Put a question to customers

## What it does

Puts an approved question to customers who may be contacted and brings
back what they said.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Ask the Audience**
  - `ref/mkt/brand-audit`, activity 10 -
    [Conduct Brand Audit](../../../../processes/marketing/brand-audit.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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/record-what-was-learned/SKILL.mdCloses a cycle with what should be fixed where the records come in, so the same problems do not arrive again. Use it when running `ref/mkt/contact-database-hygiene`.
---
name: record-what-was-learned
description: Closes a cycle with what should be fixed where the records come in, so the same problems do not arrive again. Use it when running `ref/mkt/contact-database-hygiene`.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Record what was learned

## What it does

Closes a cycle with what should be fixed where the records come in, so
the same problems do not arrive again.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Record What Was Learned**
  - `ref/mkt/contact-database-hygiene`, activity 17 -
    [Cleanse Contact Database](../../../../processes/marketing/contact-database-hygiene.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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/say-what-a-data-source-may-be-used-for/SKILL.md"Reads the terms on each source of data and says what may be done with it: what may be read, whether touches may be joined to one person, what may be scored on, which traits may be used to target, and where the data is allowed to sit. Use it when running `ref/mkt/analyze-customer-base` and 4 other reference processes."
---
name: say-what-a-data-source-may-be-used-for
description: "Reads the terms on each source of data and says what may be done with it: what may be read, whether touches may be joined to one person, what may be scored on, which traits may be used to target, and where the data is allowed to sit. Use it when running `ref/mkt/analyze-customer-base` and 4 other reference processes."
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Say what a data source may be used for

## What it does

Reads the terms on each source of data and says what may be done with
it: what may be read, whether touches may be joined to one person, what
may be scored on, which traits may be used to target, and where the data
is allowed to sit.

## Where it happens

The agent does this in five activities across five reference processes.
Each one names the activity as that process words it.

- **Check the Terms and the Data**
  - `ref/mkt/select-marketing-technology`, activity 11 -
    [Select Marketing Technology](../../../../processes/marketing/select-marketing-technology.md)
- **Clear the Data for This Use**
  - `ref/mkt/analyze-customer-base`, activity 4 -
    [Analyze Customer Base](../../../../processes/marketing/analyze-customer-base.md)
- **Clear the Data for Use**
  - `ref/mkt/attribution-model`, activity 6 -
    [Maintain Attribution Model](../../../../processes/marketing/attribution-model.md)
- **Clear the New Signals**
  - `ref/mkt/lead-scoring-model`, activity 6 -
    [Maintain Lead Scoring Model](../../../../processes/marketing/lead-scoring-model.md)
- **Clear the Targeting and the Data**
  - `ref/mkt/media-plan`, activity 4 -
    [Develop Media Plan](../../../../processes/marketing/media-plan.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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/say-who-may-be-contacted/SKILL.mdApplies the consent record to a named set of people or accounts and says which of them may be approached, on which channel, and where a study is involved, what may be asked of them. Use it when running `ref/mkt/account-based-play` and 7 other reference processes.
---
name: say-who-may-be-contacted
description: Applies the consent record to a named set of people or accounts and says which of them may be approached, on which channel, and where a study is involved, what may be asked of them. Use it when running `ref/mkt/account-based-play` and 7 other reference processes.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Say who may be contacted

## What it does

Applies the consent record to a named set of people or accounts and says
which of them may be approached, on which channel, and where a study is
involved, what may be asked of them.

## Where it happens

The agent does this in four activities across eight reference processes.
Each one names the activity as that process words it.

- **Check Who May Be Approached**
  - `ref/mkt/win-loss-analysis`, activity 6 -
    [Conduct Win/Loss Analysis](../../../../processes/marketing/win-loss-analysis.md)
- **Check Who May Be Contacted**
  - `ref/mkt/account-based-play`, activity 6 -
    [Run Account-Based Play](../../../../processes/marketing/account-based-play.md)
  - `ref/mkt/brand-health`, activity 8 -
    [Measure Brand Health](../../../../processes/marketing/brand-health.md)
  - `ref/mkt/customer-research`, activity 7 -
    [Conduct Customer Research](../../../../processes/marketing/customer-research.md)
  - `ref/mkt/nurture-sequence`, activity 3 -
    [Build Nurture Sequence](../../../../processes/marketing/nurture-sequence.md)
- **Check Who May Be Retargeted**
  - `ref/mkt/display-retargeting`, activity 3 -
    [Run Display Retargeting Campaign](../../../../processes/marketing/display-retargeting.md)
- **Clear the Sample and the Questions**
  - `ref/mkt/buyer-persona`, activity 6 -
    [Develop Buyer Persona](../../../../processes/marketing/buyer-persona.md)
  - `ref/mkt/map-buyer-journey`, activity 5 -
    [Map Buyer Journey](../../../../processes/marketing/map-buyer-journey.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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/score-a-finished-change-against-the-rules/SKILL.mdNames the consent and retention rules at the versions that apply before any scoring starts, then scores every item in a finished change or list against them and cites the rule behind each removal. Use it when running `ref/mkt/contact-database-hygiene` and `ref/mkt/target-audience-segment`.
---
name: score-a-finished-change-against-the-rules
description: Names the consent and retention rules at the versions that apply before any scoring starts, then scores every item in a finished change or list against them and cites the rule behind each removal. Use it when running `ref/mkt/contact-database-hygiene` and `ref/mkt/target-audience-segment`.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Score a finished change against the rules

## What it does

Names the consent and retention rules at the versions that apply before
any scoring starts, then scores every item in a finished change or list
against them and cites the rule behind each removal.

## Where it happens

The agent does this in three activities across two reference processes.
Each one names the activity as that process words it.

- **Confirm the Rules in Force**
  - `ref/mkt/contact-database-hygiene`, activity 3 -
    [Cleanse Contact Database](../../../../processes/marketing/contact-database-hygiene.md)
  - `ref/mkt/target-audience-segment`, activity 2 -
    [Build Target Audience Segment](../../../../processes/marketing/target-audience-segment.md)
- **Score the Finished Change**
  - `ref/mkt/contact-database-hygiene`, activity 15 -
    [Cleanse Contact Database](../../../../processes/marketing/contact-database-hygiene.md)
- **Score the Finished List**
  - `ref/mkt/target-audience-segment`, activity 11 -
    [Build Target Audience Segment](../../../../processes/marketing/target-audience-segment.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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-the-rules-that-take-a-contact-out/SKILL.mdWrites the rules that end a contact's run through a program and says where that contact goes next. Use it when running `ref/mkt/nurture-sequence`.
---
name: set-the-rules-that-take-a-contact-out
description: Writes the rules that end a contact's run through a program and says where that contact goes next. Use it when running `ref/mkt/nurture-sequence`.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Set the rules that take a contact out

## What it does

Writes the rules that end a contact's run through a program and says
where that contact goes next.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Set the Exits**
  - `ref/mkt/nurture-sequence`, activity 5 -
    [Build Nurture Sequence](../../../../processes/marketing/nurture-sequence.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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-access-for-an-outside-party/SKILL.mdGives an outside party the accounts and system access its work needs, with a date on which that access comes back. Use it when running `ref/mkt/engage-marketing-agency`.
---
name: set-up-access-for-an-outside-party
description: Gives an outside party the accounts and system access its work needs, with a date on which that access comes back. Use it when running `ref/mkt/engage-marketing-agency`.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Set up access for an outside party

## What it does

Gives an outside party the accounts and system access its work needs,
with a date on which that access comes back.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Set up the Access**
  - `ref/mkt/engage-marketing-agency`, activity 14 -
    [Engage Marketing Agency](../../../../processes/marketing/engage-marketing-agency.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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/settle-how-two-parties-share-leads/SKILL.mdSettles who gets which leads from a joint run, which fields go with them and on what basis, then applies the split and delivers each side its share while each side readies its own list and channels. Use it when running `ref/mkt/co-marketing-campaign`.
---
name: settle-how-two-parties-share-leads
description: Settles who gets which leads from a joint run, which fields go with them and on what basis, then applies the split and delivers each side its share while each side readies its own list and channels. Use it when running `ref/mkt/co-marketing-campaign`.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Settle how two parties share leads

## What it does

Settles who gets which leads from a joint run, which fields go with them
and on what basis, then applies the split and delivers each side its
share while each side readies its own list and channels.

## Where it happens

The agent does this in three activities across one reference process.
Each one names the activity as that process words it.

- **Set up Each Side's Distribution**
  - `ref/mkt/co-marketing-campaign`, activity 11 -
    [Run Co-Marketing Campaign](../../../../processes/marketing/co-marketing-campaign.md)
- **Settle the Lead Terms**
  - `ref/mkt/co-marketing-campaign`, activity 2 -
    [Run Co-Marketing Campaign](../../../../processes/marketing/co-marketing-campaign.md)
- **Split and Hand over the Leads**
  - `ref/mkt/co-marketing-campaign`, activity 14 -
    [Run Co-Marketing Campaign](../../../../processes/marketing/co-marketing-campaign.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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-request-from-the-briefing/SKILL.md"Sits in the briefing that opens a build, a cycle, a study or a selection and takes away the same request everyone else heard: the question, the method, the dates and what is being asked of it. Use it when running `ref/mkt/brand-health` and 6 other reference processes."
---
name: take-the-request-from-the-briefing
description: "Sits in the briefing that opens a build, a cycle, a study or a selection and takes away the same request everyone else heard: the question, the method, the dates and what is being asked of it. Use it when running `ref/mkt/brand-health` and 6 other reference processes."
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Take the request from the briefing

## What it does

Sits in the briefing that opens a build, a cycle, a study or a selection
and takes away the same request everyone else heard: the question, the
method, the dates and what is being asked of it.

## Where it happens

The agent does this in six activities across seven reference processes.
Each one names the activity as that process words it.

- **Brief the Build**
  - `ref/mkt/target-audience-segment`, activity 7 -
    [Build Target Audience Segment](../../../../processes/marketing/target-audience-segment.md)
- **Brief the Cycle**
  - `ref/mkt/contact-database-hygiene`, activity 4 -
    [Cleanse Contact Database](../../../../processes/marketing/contact-database-hygiene.md)
- **Brief the Makers**
  - `ref/mkt/nurture-sequence`, activity 6 -
    [Build Nurture Sequence](../../../../processes/marketing/nurture-sequence.md)
- **Brief the Selection**
  - `ref/mkt/select-marketing-technology`, activity 5 -
    [Select Marketing Technology](../../../../processes/marketing/select-marketing-technology.md)
- **Brief the Study**
  - `ref/mkt/customer-research`, activity 4 -
    [Conduct Customer Research](../../../../processes/marketing/customer-research.md)
  - `ref/mkt/win-loss-analysis`, activity 3 -
    [Conduct Win/Loss Analysis](../../../../processes/marketing/win-loss-analysis.md)
- **Brief the Wave**
  - `ref/mkt/brand-health`, activity 5 -
    [Measure Brand Health](../../../../processes/marketing/brand-health.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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/walk-test-contacts-through-a-program/SKILL.mdWalks a test contact down every path a program can take and reports where the path does not do what the rules require. Use it when running `ref/mkt/nurture-sequence`.
---
name: walk-test-contacts-through-a-program
description: Walks a test contact down every path a program can take and reports where the path does not do what the rules require. Use it when running `ref/mkt/nurture-sequence`.
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Walk test contacts through a program

## What it does

Walks a test contact down every path a program can take and reports
where the path does not do what the rules require.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Run Test Contacts Through It**
  - `ref/mkt/nurture-sequence`, activity 12 -
    [Build Nurture Sequence](../../../../processes/marketing/nurture-sequence.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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/wire-up-where-data-is-collected/SKILL.md"Sets up the places data is collected so they only collect where consent covers it: the tag on the site, the form fields, the tracking, and where each record goes once it is taken. Use it when running `ref/mkt/co-marketing-campaign` and `ref/mkt/display-retargeting`."
---
name: wire-up-where-data-is-collected
description: "Sets up the places data is collected so they only collect where consent covers it: the tag on the site, the form fields, the tracking, and where each record goes once it is taken. Use it when running `ref/mkt/co-marketing-campaign` and `ref/mkt/display-retargeting`."
license: CC-BY-4.0
metadata:
  agent: consent-manager
  agent-version: "1"
---

# Wire up where data is collected

## What it does

Sets up the places data is collected so they only collect where consent
covers it: the tag on the site, the form fields, the tracking, and where
each record goes once it is taken.

## Where it happens

The agent does this in two activities across two reference processes.
Each one names the activity as that process words it.

- **Tag the Site**
  - `ref/mkt/display-retargeting`, activity 6 -
    [Run Display Retargeting Campaign](../../../../processes/marketing/display-retargeting.md)
- **Wire up the Split**
  - `ref/mkt/co-marketing-campaign`, activity 10 -
    [Run Co-Marketing Campaign](../../../../processes/marketing/co-marketing-campaign.md)

## What to record

For every list it clears, the count it removed and the rule each removal
was made under. For every withdrawal, a dated line naming each system
that keeps a copy of the audience, when the withdrawal was written into
it, and when the write was confirmed. A verdict per item for a scored
change, each citing the rule and its version. For every send it stopped,
the rule the send would have broken and the contacts it would have
reached.

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 6 roles, and the access level beside each one is the most the work needs.

consent-record · writesuppression-lists · writecontact-database · readsending-system · readapproved-rules-for-the-change · readlive-sends · trigger
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": {
    "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"
    },
    "sending-system": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/sending-system"
    },
    "approved-rules-for-the-change": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/approved-rules-for-the-change"
    },
    "live-sends": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/live-sends"
    }
  }
}

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

30 processes, 54 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

Check Who May Be Contacted

Analyze Customer Baseref/mkt/analyze-customer-base · 19 activities
12345678910111213141516171819

Clear the Data for This Use

Maintain Attribution Modelref/mkt/attribution-model · 16 activities
12345678910111213141516

Clear the Data for Use

Conduct Brand Auditref/mkt/brand-audit · 17 activities
1234567891011121314151617

Ask the Audience

Measure Brand Healthref/mkt/brand-health · 23 activities
1234567891011121314151617181920212223

Brief the Wave · Check Who May Be Contacted

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

Clear the Sample and the Questions

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

Open Recruitment

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

Settle the Lead Terms · Wire up the Split · Set up Each Side's Distribution · Split and Hand over the Leads

Cleanse Contact Databaseref/mkt/contact-database-hygiene · 17 activities
1234567891011121314151617

Confirm the Rules in Force · Brief the Cycle · Reconcile the Consent Record · Merge the Records · Apply the Suppression · Score the Finished Change · Record What Was Learned

Conduct Customer Researchref/mkt/customer-research · 20 activities
1234567891011121314151617181920

Brief the Study · Check Who May Be Contacted

Run Display Retargeting Campaignref/mkt/display-retargeting · 16 activities
12345678910111213141516

Check Who May Be Retargeted · Build the Suppression List · Tag the Site · Apply the Suppression · Check the Suppression Is Holding

Engage Marketing Agencyref/mkt/engage-marketing-agency · 16 activities
12345678910111213141516

Set up the Access

Maintain Lead Scoring Modelref/mkt/lead-scoring-model · 18 activities
123456789101112131415161718

Clear the New Signals

Map Buyer Journeyref/mkt/map-buyer-journey · 19 activities
12345678910111213141516171819

Clear the Sample and the Questions

Develop Media Planref/mkt/media-plan · 14 activities
1234567891011121314

Clear the Targeting and the Data

Build Nurture Sequenceref/mkt/nurture-sequence · 16 activities
12345678910111213141516

Check Who May Be Contacted · Set the Exits · Brief the Makers · Run Test Contacts Through It

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

Build the Notice Lists

Select Marketing Technologyref/mkt/select-marketing-technology · 21 activities
123456789101112131415161718192021

Brief the Selection · Check the Terms and the Data

Build Target Audience Segmentref/mkt/target-audience-segment · 16 activities
12345678910111213141516

Confirm the Rules in Force · Brief the Build · Apply Consent and Suppression · Score the Finished List

Traffic Ad Creativeref/mkt/traffic-ad-creative · 17 activities
1234567891011121314151617

Load the Audiences the Plan Names

Produce Webinarref/mkt/webinar · 18 activities
123456789101112131415161718

Build the Invitation Audience

Conduct Win/Loss Analysisref/mkt/win-loss-analysis · 21 activities
123456789101112131415161718192021

Brief the Study · Check Who May Be Approached

Dedupe and Mergeref/rev/dedupe-and-merge · 17 activities
1234567891011121314151617

Check Consent Before Merging

Define a Recordref/rev/define-a-record · 17 activities
1234567891011121314151617

Check What May Be Held

Enrich a Recordref/rev/enrich-a-record · 16 activities
12345678910111213141516

Check What May Be Filled

Fix a Data Quality Failureref/rev/fix-a-data-quality-failure · 16 activities
12345678910111213141516

Check What the Fix May Touch

Book the Meetingref/sls/book-the-meeting · 16 activities
12345678910111213141516

Stop the Outbound Touches

Build a Prospect Listref/sls/build-a-prospect-list · 14 activities
1234567891011121314

Apply Consent and Suppression

Run an Outbound Sequenceref/sls/run-an-outbound-sequence · 17 activities
1234567891011121314151617

Check What May Be Sent · Handle Opt-Outs

Work a Referralref/sls/work-a-referral · 14 activities
1234567891011121314

Check Consent and Suppression

The records it leaves

What it writes down

For every list it clears, the count it removed and the rule each removal was made under. For every withdrawal, a dated line naming each system that keeps a copy of the audience, when the withdrawal was written into it, and when the write was confirmed. A verdict per item for a scored change, each citing the rule and its version. For every send it stopped, the rule the send would have broken and the contacts it would have reached.

Where it stops

What it will not do

Does not decide who enters a program, what its steps are, or what a hygiene cycle covers, which the audience-manager agent does. This agent says which contacts may be reached at all, and the audience-manager chooses among them. Does not standardize fields, merge records, enrich them, delete them or rebuild segments, which is the audience-operator agent. The only thing this agent writes into the sending systems is a withdrawal. Does not write or design the messages, and never starts a send. Does not score material against the brand guidelines or the claims register, which is the brand-check agent running its own pass. Does not write the consent rules it applies. Those come from the legal reviewer, and the process names the version in force. 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: consent-manager 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 do the job

Things that could be the worker: an agent, a packaged product, a plugin.

  • The Website Specification — A2A agent Agent · specification.website Read-only A2A agent that answers natural-language questions about The Website Specification and returns matching topics with status, canonical URL,…
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.

  • compliance MCP server · rulemesh.com · hosted · mirrored from the MCP registry Engineered GDPR compliance for engineers and AI agents: pull rules, implement, submit evidence.
  • agent-crm MCP server · khaoss85.github.io · hosted · mirrored from the MCP registry Read-only docs for the Accordo CRM framework: what it proves, and where it stops.
  • CHAP Coordinator MCP server · brightbeamai.github.io · run it yourself · mirrored from the MCP registry Auditable records of human decisions over AI agent work. Approvals, edits, overrides, escalations.