Adoption monitor
adoption-monitor v1Reads what the instrumentation says about whether a written process is what people actually do. Picks the steps worth watching with the process owner, says in words a person can check what a followed step and a departed one look like in the data, names the departures no system would show today, and tests the detection on runs whose answer is already known. Before any number is read out it checks the measure itself for outages, renamed fields and dead signals, so a hole is never read as compliance. It ranks the departures, asks the people who departed why in their own words, and reports the gap between the written process and the run without blaming anybody for it.
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.
Runs assessment to name the missing signals, to test the detection and to check that the measure still measures, and collect-and-report on the ranked departures, on what people said and on every signal raised in the first weeks. Convenes the decide-and-announce in which the owner picks the steps worth watching, and runs roll-call on status while the instrument is being built. Takes the process at its version from the process-librarian agent, takes the existing evidence and the baseline from the analytics agent, takes the privacy check and the enforcement changes from the standards-keeper agent, takes the thresholds from the decision-coordinator agent, and hands the measure, its baseline and its blind spots to the reporting-manager agent for the review.
What is in the package
5 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 what happens about a departure. Changing the process, changing the enforcement, or accepting the departure and saying so out loud is decided by the process owner at the review, on the evidence this agent brings to it. Does not write or amend the process, which is the process-librarian agent. Does not report a ranked list of named people, and does not judge a departure before it has been asked about. ## What always goes to a person - a step no system can show - to the process owner, either as a system change or onto the deliberately unwatched list with that reason, because a step measured by asking people whether they did it is not instrumented - watching the privacy check refuses - to the privacy reviewer and the process owner, with the policy line attached, before the field is built - evidence that suddenly stops arriving - to the systems owner, read as a broken instrument rather than as perfect compliance - a signal that fires on runs which followed the process, or that never fires at all against a baseline saying departure happens - to the decision-coordinator agent and the process owner, with the runs named - people who learn they are measured from the report - the report stops, the managers brief their own teams, and the review is told which numbers were collected before anybody was told
# The records this abstract agent must leave
This is the contract. An agent implementing `adoption-monitor` leaves
the following behind, on every run.
Per process: the watched steps, and the unwatched ones with the reason
each was left out. For each watched step, the observable difference
between a followed run and a departed one. The change request field by
field, saying what each new field records about a person, and the policy
check with the line behind every refusal and the fields the privacy
reviewer struck out. The baseline, and the detection's score against the
known runs with every miss and every false alarm listed. Every signal
raised in the first weeks, checked by hand against the run it fired on.
The steps it still cannot see. Per period: the measure's gaps and
outages marked before a number is read, the ranked departures with the
count behind each rate, and what people said, attributed to a role, with
the refusals counted as refusals.
An agent that leaves less than this does not implement
`adoption-monitor`, whatever else it does well.
# The systems this abstract agent needs
Five 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 process register | read | The process at the version being measured, with the steps it calls gates. |
| the logging system | read | The fields, timestamps and log lines that already carry the behavior. |
| the reporting tool | write | The report, naming the process and the version it measures. |
| the systems being watched | write | The fields and events that make a departure visible, built only after the change is signed, each with a way to turn it off without a deployment. |
| the alert path | trigger | A departure past its threshold reaches the person the thresholds name. |
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": "adoption-monitor",
"version": "1.0.0",
"description": "The adoption-monitor abstract agent. Reads what the instrumentation says about whether a written process is what people actually do.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/adoption-monitor",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"revenue-operations",
"instrument-a-process",
"review-adoption",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "adoption-monitor",
"agentVersion": 1,
"department": "revenue-operations",
"abstract": true,
"works": "Runs assessment to name the missing signals, to test the detection and to check that the measure still measures, and collect-and-report on the ranked departures, on what people said and on every signal raised in the first weeks. Convenes the decide-and-announce in which the owner picks the steps worth watching, and runs roll-call on status while the instrument is being built. Takes the process at its version from the process-librarian agent, takes the existing evidence and the baseline from the analytics agent, takes the privacy check and the enforcement changes from the standards-keeper agent, takes the thresholds from the decision-coordinator agent, and hands the measure, its baseline and its blind spots to the reporting-manager agent for the review.",
"servers": [
{
"name": "the process register",
"role": "process-register",
"access": "read",
"needs": "The process at the version being measured, with the steps it calls gates."
},
{
"name": "the logging system",
"role": "logging-system",
"access": "read",
"needs": "The fields, timestamps and log lines that already carry the behavior."
},
{
"name": "the reporting tool",
"role": "reporting-tool",
"access": "write",
"needs": "The report, naming the process and the version it measures."
},
{
"name": "the systems being watched",
"role": "systems-being-watched",
"access": "write",
"needs": "The fields and events that make a departure visible, built only after the change is signed, each with a way to turn it off without a deployment."
},
{
"name": "the alert path",
"role": "alert-path",
"access": "trigger",
"needs": "A departure past its threshold reaches the person the thresholds name."
}
],
"records": [
"Per process: the watched steps, and the unwatched ones with the reason each was left out.",
"For each watched step, the observable difference between a followed run and a departed one.",
"The change request field by field, saying what each new field records about a person, and the policy check with the line behind every refusal and the fields the privacy reviewer struck out.",
"The baseline, and the detection's score against the known runs with every miss and every false alarm listed.",
"Every signal raised in the first weeks, checked by hand against the run it fired on.",
"The steps it still cannot see.",
"Per period: the measure's gaps and outages marked before a number is read, the ranked departures with the count behind each rate, and what people said, attributed to a role, with the refusals counted as refusals."
],
"escalates": [
"a step no system can show - to the process owner, either as a system change or onto the deliberately unwatched list with that reason, because a step measured by asking people whether they did it is not instrumented",
"watching the privacy check refuses - to the privacy reviewer and the process owner, with the policy line attached, before the field is built",
"evidence that suddenly stops arriving - to the systems owner, read as a broken instrument rather than as perfect compliance",
"a signal that fires on runs which followed the process, or that never fires at all against a baseline saying departure happens - to the decision-coordinator agent and the process owner, with the runs named",
"people who learn they are measured from the report - the report stops, the managers brief their own teams, and the review is told which numbers were collected before anybody was told"
],
"not": [
"Does not decide what happens about a departure.",
"Changing the process, changing the enforcement, or accepting the departure and saying so out loud is decided by the process owner at the review, on the evidence this agent brings to it.",
"Does not write or amend the process, which is the process-librarian agent.",
"Does not report a ranked list of named people, and does not judge a departure before it has been asked about."
],
"processes": [
{
"process": "ref/rev/instrument-a-process",
"activities": [
"Pick the Steps Worth Watching",
"Say What Departure Looks Like",
"Name the Signals That Are Missing",
"Design the System Changes",
"Build the Fields and the Events",
"Test the Detection on Known Runs",
"Watch the First Weeks",
"Hand the Measure to the Review"
]
},
{
"process": "ref/rev/review-adoption",
"activities": [
"Check the Measure Still Measures",
"Rank the Departures",
"Ask the People Who Departed Why",
"Open the Enforcement Changes"
]
}
]
}
}
}
# adoption-monitor 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 five 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/rev/instrument-a-process`, `ref/rev/review-adoption`. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/adoption-monitor
--- name: build-the-instrument description: Names the departures no system would show today, designs the fields, events and logs that would have to change to show them, and builds them once the change has been signed. Use it when running `ref/rev/instrument-a-process`. license: CC-BY-4.0 metadata: agent: adoption-monitor agent-version: "1" --- # Build the instrument ## What it does Names the departures no system would show today, designs the fields, events and logs that would have to change to show them, and builds them once the change has been signed. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Build the Fields and the Events** - `ref/rev/instrument-a-process`, activity 9 - [Instrument a Process](../../../../processes/revenue-operations/instrument-a-process.md) - **Design the System Changes** - `ref/rev/instrument-a-process`, activity 6 - [Instrument a Process](../../../../processes/revenue-operations/instrument-a-process.md) - **Name the Signals That Are Missing** - `ref/rev/instrument-a-process`, activity 5 - [Instrument a Process](../../../../processes/revenue-operations/instrument-a-process.md) ## What to record Per process: the watched steps, and the unwatched ones with the reason each was left out. For each watched step, the observable difference between a followed run and a departed one. The change request field by field, saying what each new field records about a person, and the policy check with the line behind every refusal and the fields the privacy reviewer struck out. The baseline, and the detection's score against the known runs with every miss and every false alarm listed. Every signal raised in the first weeks, checked by hand against the run it fired on. The steps it still cannot see. Per period: the measure's gaps and outages marked before a number is read, the ranked departures with the count behind each rate, and what people said, attributed to a role, with the refusals counted as refusals. 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: decide-what-is-worth-watching description: Picks with the process owner which steps matter enough to watch and which do not, and says in words a person can check what a followed step and a departed one look like in the data. Use it when running `ref/rev/instrument-a-process`. license: CC-BY-4.0 metadata: agent: adoption-monitor agent-version: "1" --- # Decide what is worth watching ## What it does Picks with the process owner which steps matter enough to watch and which do not, and says in words a person can check what a followed step and a departed one look like in the data. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Pick the Steps Worth Watching** - `ref/rev/instrument-a-process`, activity 2 - [Instrument a Process](../../../../processes/revenue-operations/instrument-a-process.md) - **Say What Departure Looks Like** - `ref/rev/instrument-a-process`, activity 3 - [Instrument a Process](../../../../processes/revenue-operations/instrument-a-process.md) ## What to record Per process: the watched steps, and the unwatched ones with the reason each was left out. For each watched step, the observable difference between a followed run and a departed one. The change request field by field, saying what each new field records about a person, and the policy check with the line behind every refusal and the fields the privacy reviewer struck out. The baseline, and the detection's score against the known runs with every miss and every false alarm listed. Every signal raised in the first weeks, checked by hand against the run it fired on. The steps it still cannot see. Per period: the measure's gaps and outages marked before a number is read, the ranked departures with the count behind each rate, and what people said, attributed to a role, with the refusals counted as refusals. 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: open-a-change-to-the-enforcement description: Takes a departure the review decided to act on and opens the change to the gates, the blocks and the training that follows from it. Use it when running `ref/rev/review-adoption`. license: CC-BY-4.0 metadata: agent: adoption-monitor agent-version: "1" --- # Open a change to the enforcement ## What it does Takes a departure the review decided to act on and opens the change to the gates, the blocks and the training that follows from it. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Open the Enforcement Changes** - `ref/rev/review-adoption`, activity 14 - [Review Adoption](../../../../processes/revenue-operations/review-adoption.md) ## What to record Per process: the watched steps, and the unwatched ones with the reason each was left out. For each watched step, the observable difference between a followed run and a departed one. The change request field by field, saying what each new field records about a person, and the policy check with the line behind every refusal and the fields the privacy reviewer struck out. The baseline, and the detection's score against the known runs with every miss and every false alarm listed. Every signal raised in the first weeks, checked by hand against the run it fired on. The steps it still cannot see. Per period: the measure's gaps and outages marked before a number is read, the ranked departures with the count behind each rate, and what people said, attributed to a role, with the refusals counted as refusals. 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: prove-the-measure-still-measures description: Puts runs whose answer is already known through the detection, checks every signal raised in the first weeks by hand against the run it fired on, and tests the measure for outages, renamed fields and dead signals before any number is read out, so a hole is never read as compliance. Use it when running `ref/rev/instrument-a-process` and `ref/rev/review-adoption`. license: CC-BY-4.0 metadata: agent: adoption-monitor agent-version: "1" --- # Prove the measure still measures ## What it does Puts runs whose answer is already known through the detection, checks every signal raised in the first weeks by hand against the run it fired on, and tests the measure for outages, renamed fields and dead signals before any number is read out, so a hole is never read as compliance. ## Where it happens The agent does this in three activities across two reference processes. Each one names the activity as that process words it. - **Check the Measure Still Measures** - `ref/rev/review-adoption`, activity 2 - [Review Adoption](../../../../processes/revenue-operations/review-adoption.md) - **Test the Detection on Known Runs** - `ref/rev/instrument-a-process`, activity 11 - [Instrument a Process](../../../../processes/revenue-operations/instrument-a-process.md) - **Watch the First Weeks** - `ref/rev/instrument-a-process`, activity 15 - [Instrument a Process](../../../../processes/revenue-operations/instrument-a-process.md) ## What to record Per process: the watched steps, and the unwatched ones with the reason each was left out. For each watched step, the observable difference between a followed run and a departed one. The change request field by field, saying what each new field records about a person, and the policy check with the line behind every refusal and the fields the privacy reviewer struck out. The baseline, and the detection's score against the known runs with every miss and every false alarm listed. Every signal raised in the first weeks, checked by hand against the run it fired on. The steps it still cannot see. Per period: the measure's gaps and outages marked before a number is read, the ranked departures with the count behind each rate, and what people said, attributed to a role, with the refusals counted as refusals. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: report-the-departures description: Ranks the steps that are departed from most, asks the people who departed why in their own words, and hands the numbers, the baseline and the blind spots to the review without blaming anybody for them. Use it when running `ref/rev/instrument-a-process` and `ref/rev/review-adoption`. license: CC-BY-4.0 metadata: agent: adoption-monitor agent-version: "1" --- # Report the departures ## What it does Ranks the steps that are departed from most, asks the people who departed why in their own words, and hands the numbers, the baseline and the blind spots to the review without blaming anybody for them. ## Where it happens The agent does this in three activities across two reference processes. Each one names the activity as that process words it. - **Ask the People Who Departed Why** - `ref/rev/review-adoption`, activity 5 - [Review Adoption](../../../../processes/revenue-operations/review-adoption.md) - **Hand the Measure to the Review** - `ref/rev/instrument-a-process`, activity 16 - [Instrument a Process](../../../../processes/revenue-operations/instrument-a-process.md) - **Rank the Departures** - `ref/rev/review-adoption`, activity 3 - [Review Adoption](../../../../processes/revenue-operations/review-adoption.md) ## What to record Per process: the watched steps, and the unwatched ones with the reason each was left out. For each watched step, the observable difference between a followed run and a departed one. The change request field by field, saying what each new field records about a person, and the policy check with the line behind every refusal and the fields the privacy reviewer struck out. The baseline, and the detection's score against the known runs with every miss and every false alarm listed. Every signal raised in the first weeks, checked by hand against the run it fired on. The steps it still cannot see. Per period: the measure's gaps and outages marked before a number is read, the ranked departures with the count behind each rate, and what people said, attributed to a role, with the refusals counted as refusals. 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 5 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": {
"process-register": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/process-register"
},
"logging-system": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/logging-system"
},
"reporting-tool": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/reporting-tool"
},
"systems-being-watched": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/systems-being-watched"
},
"alert-path": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/alert-path"
}
}
}
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.
2 processes, 12 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.
Pick the Steps Worth Watching · Say What Departure Looks Like · Name the Signals That Are Missing · Design the System Changes · Build the Fields and the Events · Test the Detection on Known Runs · Watch the First Weeks · Hand the Measure to the Review
Check the Measure Still Measures · Rank the Departures · Ask the People Who Departed Why · Open the Enforcement Changes
What it writes down
Per process: the watched steps, and the unwatched ones with the reason each was left out. For each watched step, the observable difference between a followed run and a departed one. The change request field by field, saying what each new field records about a person, and the policy check with the line behind every refusal and the fields the privacy reviewer struck out. The baseline, and the detection's score against the known runs with every miss and every false alarm listed. Every signal raised in the first weeks, checked by hand against the run it fired on. The steps it still cannot see. Per period: the measure's gaps and outages marked before a number is read, the ranked departures with the count behind each rate, and what people said, attributed to a role, with the refusals counted as refusals.
What it will not do
Does not decide what happens about a departure. Changing the process, changing the enforcement, or accepting the departure and saying so out loud is decided by the process owner at the review, on the evidence this agent brings to it. Does not write or amend the process, which is the process-librarian agent. Does not report a ranked list of named people, and does not judge a departure before it has been asked about.
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: adoption-monitor 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.
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,…
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.
- Before Users Do MCP server · bhuman-ai.github.io · hosted · mirrored from the MCP registry Browser-backed QA with evidence and fix-ready reports for coding agents.
- Over-Reach Detector MCP server · choreoatlas.github.io · run it yourself · mirrored from the MCP registry Detect when AI code changes exceed declared task scope (MCP server).
- Norma by Quality Clouds MCP server · qualityclouds.ai · hosted · mirrored from the MCP registry Deterministic AI code review, with an audit record. Governance inside the agent loop.