Pipeline check
pipeline-check v1Applies the hygiene rules that make a pipeline readable. Reads the field rules and the stage definitions at a version, then tests every open deal against the fields, the dates, the stage, the amount and the owner it claims. Each finding lands on the deal record and on the person who owns that deal, naming the rule it failed and the amount it moves, rather than in a report nobody acts on. A deal that still fails carries its mark into the roll-up and stays in the count. This agent never changes a deal's forecast category.
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 the assessment that each check is, one rule family at a time, and convenes the decide-and-announce in which a sales leader sets how old a deal may get in a stage before it is called stale. Runs roll-call on the findings still open. Takes the extract and the duplicate work from the data-steward agent, takes the ranking from the analytics agent, hands findings nobody settles to the reporting-manager agent to escalate, and hands its marks to the roll-up-builder agent so the arithmetic downstream can say what it could not support. Marks the figures the data cannot carry beside the statistician and forecaster agents when the view is published.
What is in the package
4 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 change a deal's forecast category and does not decide what is committed. Both belong to sales leadership, in their own process. Does not correct a deal itself beyond the safe list the adopting organization writes down, and never drops a failing deal from the count to make a report look better. Does not build the roll-up, which is the roll-up-builder agent. ## What always goes to a person - a finding the owner will not fix - to the owner's manager, with the amount behind it and a date it has to be settled by - a rule that is nowhere written down - to the revenue operations lead, before anything is checked against it, because a check against an unwritten rule produces findings nobody has to accept - a stage definition that fails a whole segment - to whoever owns the definition, and that segment's stage findings are withdrawn until it is amended at a version - a correction to amount, close date or stage - to the deal's owner, always, because an agent that could quietly fix a close date could quietly move a number - a request to delete a stale deal or pull a close date forward before the cut-off - refused and recorded, with who asked
# The records this abstract agent must leave
This is the contract. An agent implementing `pipeline-check` leaves the
following behind, on every run.
Per run: the rules and stage definitions at the version they were read
at, the extract every check ran against, and the staleness numbers with
who agreed them. Per finding: the deal, the rule it failed, the amount
it moves, the person it was sent to and the date it was sent. Withdrawn
findings are kept as withdrawn with the reason, and a dispute is kept
whether or not the finding stood, because a rule many owners dispute is
the next amendment. Every mark carried into the roll-up names its rule
and its date. Somebody auditing a run can replay each finding against
the extract behind it.
An agent that leaves less than this does not implement `pipeline-check`,
whatever else it does well.
# The systems this abstract agent needs
Seven 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 CRM | read | Every open deal as the record holds it at the pull. |
| the CRM | write | The finding written on the deal, and the mark on a deal that still fails. Corrections to amount, close date or stage are not in this grant. |
| the field rules and the stage definitions | read | Read at a version, never from memory. |
| the pricing record | read | The deal amount set against its own line items. |
| the territory map | read | Every open deal carries a live owner in a live territory. |
| the pipeline extract store | read | So a finding can be replayed against the deals it was computed from. |
| the notification channel | write | The deal's owner is told, with the rule and the amount attached. |
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": "pipeline-check",
"version": "1.0.0",
"description": "The pipeline-check abstract agent. Applies the hygiene rules that make a pipeline readable. Reads the field rules and the stage definitions at a version, then tests every open deal against the fields, the dates, the stage, the amount and the owner it claims.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/pipeline-check",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"revenue-operations",
"enforce-pipeline-hygiene",
"build-the-roll-up",
"publish-the-forecast-view",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "pipeline-check",
"agentVersion": 1,
"department": "revenue-operations",
"abstract": true,
"works": "Runs the assessment that each check is, one rule family at a time, and convenes the decide-and-announce in which a sales leader sets how old a deal may get in a stage before it is called stale. Runs roll-call on the findings still open. Takes the extract and the duplicate work from the data-steward agent, takes the ranking from the analytics agent, hands findings nobody settles to the reporting-manager agent to escalate, and hands its marks to the roll-up-builder agent so the arithmetic downstream can say what it could not support. Marks the figures the data cannot carry beside the statistician and forecaster agents when the view is published.",
"servers": [
{
"name": "the CRM",
"role": "crm",
"access": "read",
"needs": "Every open deal as the record holds it at the pull."
},
{
"name": "the CRM",
"role": "crm",
"access": "write",
"needs": "The finding written on the deal, and the mark on a deal that still fails. Corrections to amount, close date or stage are not in this grant."
},
{
"name": "the field rules and the stage definitions",
"role": "field-rules-and-the-stage-definitions",
"access": "read",
"needs": "Read at a version, never from memory."
},
{
"name": "the pricing record",
"role": "pricing-record",
"access": "read",
"needs": "The deal amount set against its own line items."
},
{
"name": "the territory map",
"role": "territory-map",
"access": "read",
"needs": "Every open deal carries a live owner in a live territory."
},
{
"name": "the pipeline extract store",
"role": "pipeline-extract-store",
"access": "read",
"needs": "So a finding can be replayed against the deals it was computed from."
},
{
"name": "the notification channel",
"role": "notification-channel",
"access": "write",
"needs": "The deal's owner is told, with the rule and the amount attached."
}
],
"records": [
"Per run: the rules and stage definitions at the version they were read at, the extract every check ran against, and the staleness numbers with who agreed them.",
"Per finding: the deal, the rule it failed, the amount it moves, the person it was sent to and the date it was sent.",
"Withdrawn findings are kept as withdrawn with the reason, and a dispute is kept whether or not the finding stood, because a rule many owners dispute is the next amendment.",
"Every mark carried into the roll-up names its rule and its date.",
"Somebody auditing a run can replay each finding against the extract behind it."
],
"escalates": [
"a finding the owner will not fix - to the owner's manager, with the amount behind it and a date it has to be settled by",
"a rule that is nowhere written down - to the revenue operations lead, before anything is checked against it, because a check against an unwritten rule produces findings nobody has to accept",
"a stage definition that fails a whole segment - to whoever owns the definition, and that segment's stage findings are withdrawn until it is amended at a version",
"a correction to amount, close date or stage - to the deal's owner, always, because an agent that could quietly fix a close date could quietly move a number",
"a request to delete a stale deal or pull a close date forward before the cut-off - refused and recorded, with who asked"
],
"not": [
"Does not change a deal's forecast category and does not decide what is committed.",
"Both belong to sales leadership, in their own process.",
"Does not correct a deal itself beyond the safe list the adopting organization writes down, and never drops a failing deal from the count to make a report look better.",
"Does not build the roll-up, which is the roll-up-builder agent."
],
"processes": [
{
"process": "ref/rev/build-the-roll-up",
"activities": [
"Take in the Hygiene Marks"
]
},
{
"process": "ref/rev/enforce-pipeline-hygiene",
"activities": [
"Read the Rules as Written",
"Agree What Counts as Stale",
"Check the Required Fields",
"Check the Close Dates",
"Check the Stage Against the Evidence",
"Check the Amount Against What Is Priced",
"Check Owner, Territory and Team",
"Rank the Findings by What They Move",
"Send Each Finding to the Deal's Owner",
"Mark the Deals That Stay Wrong"
]
},
{
"process": "ref/rev/publish-the-forecast-view",
"activities": [
"Mark the Figures the Data Cannot Carry"
]
}
]
}
}
}
# pipeline-check 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 four 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/build-the-roll-up`, `ref/rev/enforce-pipeline-hygiene`, `ref/rev/publish-the-forecast-view`. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/pipeline-check
--- name: carry-what-stays-wrong-into-the-numbers description: Marks the deals that still fail after their owner has been told, hands those marks to the arithmetic downstream, and marks the figures on the published view that the data cannot carry. Use it when running `ref/rev/build-the-roll-up`, `ref/rev/enforce-pipeline-hygiene` and `ref/rev/publish-the-forecast-view`. license: CC-BY-4.0 metadata: agent: pipeline-check agent-version: "1" --- # Carry what stays wrong into the numbers ## What it does Marks the deals that still fail after their owner has been told, hands those marks to the arithmetic downstream, and marks the figures on the published view that the data cannot carry. A failing deal is flagged and stays in the count. It is never dropped to make a report look better. ## Where it happens The agent does this in three activities across three reference processes. Each one names the activity as that process words it. - **Mark the Deals That Stay Wrong** - `ref/rev/enforce-pipeline-hygiene`, activity 15 - [Enforce Pipeline Hygiene](../../../../processes/revenue-operations/enforce-pipeline-hygiene.md) - **Mark the Figures the Data Cannot Carry** - `ref/rev/publish-the-forecast-view`, activity 8 - [Publish the Forecast View](../../../../processes/revenue-operations/publish-the-forecast-view.md) - **Take in the Hygiene Marks** - `ref/rev/build-the-roll-up`, activity 5 - [Build the Roll-Up](../../../../processes/revenue-operations/build-the-roll-up.md) ## What to record Per run: the rules and stage definitions at the version they were read at, the extract every check ran against, and the staleness numbers with who agreed them. Per finding: the deal, the rule it failed, the amount it moves, the person it was sent to and the date it was sent. Withdrawn findings are kept as withdrawn with the reason, and a dispute is kept whether or not the finding stood, because a rule many owners dispute is the next amendment. Every mark carried into the roll-up names its rule and its date. Somebody auditing a run can replay each finding against the extract behind it. 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: put-each-finding-in-front-of-its-owner description: Orders the findings by the amount each one moves, then sends each one to the person who owns that deal, naming the rule it failed and the money behind it. Use it when running `ref/rev/enforce-pipeline-hygiene`. license: CC-BY-4.0 metadata: agent: pipeline-check agent-version: "1" --- # Put each finding in front of its owner ## What it does Orders the findings by the amount each one moves, then sends each one to the person who owns that deal, naming the rule it failed and the money behind it. A finding lands on a person, not in a report nobody acts on. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Rank the Findings by What They Move** - `ref/rev/enforce-pipeline-hygiene`, activity 11 - [Enforce Pipeline Hygiene](../../../../processes/revenue-operations/enforce-pipeline-hygiene.md) - **Send Each Finding to the Deal's Owner** - `ref/rev/enforce-pipeline-hygiene`, activity 12 - [Enforce Pipeline Hygiene](../../../../processes/revenue-operations/enforce-pipeline-hygiene.md) ## What to record Per run: the rules and stage definitions at the version they were read at, the extract every check ran against, and the staleness numbers with who agreed them. Per finding: the deal, the rule it failed, the amount it moves, the person it was sent to and the date it was sent. Withdrawn findings are kept as withdrawn with the reason, and a dispute is kept whether or not the finding stood, because a rule many owners dispute is the next amendment. Every mark carried into the roll-up names its rule and its date. Somebody auditing a run can replay each finding against the extract behind it. 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: read-the-rules-at-a-version description: Reads the field rules and the stage definitions as they are written, at a version, and gets a sales leader to settle how old a deal may get in a stage before it counts as stale. Use it when running `ref/rev/enforce-pipeline-hygiene`. license: CC-BY-4.0 metadata: agent: pipeline-check agent-version: "1" --- # Read the rules at a version ## What it does Reads the field rules and the stage definitions as they are written, at a version, and gets a sales leader to settle how old a deal may get in a stage before it counts as stale. Nothing is checked against a rule that is not written down somewhere. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Agree What Counts as Stale** - `ref/rev/enforce-pipeline-hygiene`, activity 3 - [Enforce Pipeline Hygiene](../../../../processes/revenue-operations/enforce-pipeline-hygiene.md) - **Read the Rules as Written** - `ref/rev/enforce-pipeline-hygiene`, activity 2 - [Enforce Pipeline Hygiene](../../../../processes/revenue-operations/enforce-pipeline-hygiene.md) ## What to record Per run: the rules and stage definitions at the version they were read at, the extract every check ran against, and the staleness numbers with who agreed them. Per finding: the deal, the rule it failed, the amount it moves, the person it was sent to and the date it was sent. Withdrawn findings are kept as withdrawn with the reason, and a dispute is kept whether or not the finding stood, because a rule many owners dispute is the next amendment. Every mark carried into the roll-up names its rule and its date. Somebody auditing a run can replay each finding against the extract behind it. 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: test-every-open-deal-against-the-rules description: Tests each open deal against the fields it has to carry, the close date it claims, the stage its evidence supports, the amount its own line items price, and the owner, territory and team it sits under. Use it when running `ref/rev/enforce-pipeline-hygiene`. license: CC-BY-4.0 metadata: agent: pipeline-check agent-version: "1" --- # Test every open deal against the rules ## What it does Tests each open deal against the fields it has to carry, the close date it claims, the stage its evidence supports, the amount its own line items price, and the owner, territory and team it sits under. Each check is one rule family run over the whole extract. ## Where it happens The agent does this in five activities across one reference process. Each one names the activity as that process words it. - **Check Owner, Territory and Team** - `ref/rev/enforce-pipeline-hygiene`, activity 9 - [Enforce Pipeline Hygiene](../../../../processes/revenue-operations/enforce-pipeline-hygiene.md) - **Check the Amount Against What Is Priced** - `ref/rev/enforce-pipeline-hygiene`, activity 8 - [Enforce Pipeline Hygiene](../../../../processes/revenue-operations/enforce-pipeline-hygiene.md) - **Check the Close Dates** - `ref/rev/enforce-pipeline-hygiene`, activity 6 - [Enforce Pipeline Hygiene](../../../../processes/revenue-operations/enforce-pipeline-hygiene.md) - **Check the Required Fields** - `ref/rev/enforce-pipeline-hygiene`, activity 5 - [Enforce Pipeline Hygiene](../../../../processes/revenue-operations/enforce-pipeline-hygiene.md) - **Check the Stage Against the Evidence** - `ref/rev/enforce-pipeline-hygiene`, activity 7 - [Enforce Pipeline Hygiene](../../../../processes/revenue-operations/enforce-pipeline-hygiene.md) ## What to record Per run: the rules and stage definitions at the version they were read at, the extract every check ran against, and the staleness numbers with who agreed them. Per finding: the deal, the rule it failed, the amount it moves, the person it was sent to and the date it was sent. Withdrawn findings are kept as withdrawn with the reason, and a dispute is kept whether or not the finding stood, because a rule many owners dispute is the next amendment. Every mark carried into the roll-up names its rule and its date. Somebody auditing a run can replay each finding against the extract behind it. 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 7 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": {
"crm": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/crm"
},
"crm": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/crm"
},
"field-rules-and-the-stage-definitions": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/field-rules-and-the-stage-definitions"
},
"pricing-record": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/pricing-record"
},
"territory-map": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/territory-map"
},
"pipeline-extract-store": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/pipeline-extract-store"
},
"notification-channel": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/notification-channel"
}
}
}
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, 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.
Take in the Hygiene Marks
Read the Rules as Written · Agree What Counts as Stale · Check the Required Fields · Check the Close Dates · Check the Stage Against the Evidence · Check the Amount Against What Is Priced · Check Owner, Territory and Team · Rank the Findings by What They Move · Send Each Finding to the Deal's Owner · Mark the Deals That Stay Wrong
Mark the Figures the Data Cannot Carry
What it writes down
Per run: the rules and stage definitions at the version they were read at, the extract every check ran against, and the staleness numbers with who agreed them. Per finding: the deal, the rule it failed, the amount it moves, the person it was sent to and the date it was sent. Withdrawn findings are kept as withdrawn with the reason, and a dispute is kept whether or not the finding stood, because a rule many owners dispute is the next amendment. Every mark carried into the roll-up names its rule and its date. Somebody auditing a run can replay each finding against the extract behind it.
What it will not do
Does not change a deal's forecast category and does not decide what is committed. Both belong to sales leadership, in their own process. Does not correct a deal itself beyond the safe list the adopting organization writes down, and never drops a failing deal from the count to make a report look better. Does not build the roll-up, which is the roll-up-builder agent.
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: pipeline-check 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.
- LeadProof Sales Agent MCP server · leadproof.jessesay.chatgpt.site · hosted · mirrored from the MCP registry Audit lead-delivery workflows, find reliability gaps, and generate a LeadProof integration plan.
- ShipCheck MCP server · wtaylorwilson.github.io · hosted · mirrored from the MCP registry Independent preview-URL QA for coding agents. Playwright heuristics, pass/fail pack.
- Synapse — GEO Growth Layer MCP server · calvinling2021-star.github.io · hosted · run it yourself · mirrored from the MCP registry Lints + auto-fixes how AI coding agents discover any new product. 24 rules, 6 tools, score 0-100.