Sign in
abstract agent · revenue-operations · 4 processes · plugin 1.0.0

Stack planner

stack-planner v1

Works out what the revenue organization actually needs from a tool before anybody looks at one, and judges candidates against that rather than against a demonstration. It names the process that would run inside the tool, reads the stack for something already licensed that comes near, and writes the requirements down and dates them before the search opens. It runs the trial on the work the team really has, sets the finalists side by side against one list, and puts the choice in front of a named person. It holds the standing review that asks whether a tool still earns its place, and it keeps the stack record, so every entry names a process, an owner and a renewal date.

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/rev/administer-a-toolref/rev/choose-a-toolref/rev/integrate-a-toolGRANTEDthe stack recordwrite — every entry lands with the process it the requirements recordwrite — the requirements and the criteria at tthe scoring recordread — the verdicts the scoring agent returnedthe decision recordwrite — who chose, on what date, for what reasthe process registerread — whether a process exists that would runa trial environmentread — the finalists doing the team's real worthe budget recordread — what the stack already costs, so a new THE ABSTRACT AGENTstack-plannerv1works out what the…HANDS TO A PERSONthe choice of tool itself,…a person decidesa need with no process…a person decidesevery candidate failing a…a person decidesa review with nothing to…a person decidesa process with nowhere to…a person decidesMUST FOLLOWdecide-and-announcebriefingassessmentdebriefroll call

Convenes the briefing that opens an evaluation, so every agent hears the same requirements, the same criteria and the same due date at once. Runs assessment for the trial of the finalists and for the standing review, and convenes the decide-and-announce in which a named person chooses the tool, or says keep, change or retire. Runs roll-call on status while a search or a retirement is open, and convenes the debrief that closes one. Takes verdicts from the supplier-check agent, candidates from the researcher agent, the connection map from the integration-keeper agent and the standards verdict from the standards-keeper agent, then hands the chosen tool to the integration-keeper agent and the running tool to the tool-administrator agent.

The plugin

What is in the package

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

stack-planner · 12 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 score the candidates, which is the supplier-check agent working
from the requirements at the version they were fixed at, and does not
search the market, which is the researcher agent. Does not clear the
security review or the procurement review, which are human gates. Does
not sign an agreement or commit the money. Does not build the links
either side of a tool, which is the integration-keeper agent, and does
not run one once it is in: accounts, licences and configuration are the
tool-administrator agent.

## What always goes to a person

- the choice of tool itself, always. This agent sets the finalists
  against one list and a named person picks one and says why.
- a need with no process behind it, back to the requester, because the
  thing being asked for is a way of working rather than a tool
- every candidate failing a requirement, to whoever may lower the
  requirement, decide to build, or decide to do without, with the scores
  behind it
- a review with nothing to review, where nobody has used the tool or
  nobody can name the process it serves, with retirement as the
  reasonable answer
- a process with nowhere to go in a retirement, and the tool stays on
  until a home is named and somebody has agreed to take the work
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 `stack-planner` leaves the
following behind, on every run.

Per run: the need as the requester stated it, the process named as the
one that would run inside the tool, and what the stack already holds
that comes near, with what each of those falls short on. The
requirements and the criteria at their fixed version with the date they
were fixed, and every later change carried as a new version marking the
scores made against the earlier one. The shortlist, with the requirement
each dropped candidate failed. The trial result for each finalist on the
same work over the same period, with the figures and the range around
each. The whole cost, the comparison against one list, and the decision
naming who chose, when and why. The stack entry itself, and for a
retirement the closed entry with what replaced it and where the kept
data now sits. Each standing review lands with its decision, its date,
the evidence it was made on and the date the next one falls, and a
review that did not happen is recorded as not held rather than left
blank.

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

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 stack record | write | Every entry lands with the process it serves, its owner, its cost, its term and its renewal date. |
| the requirements record | write | The requirements and the criteria at the version they were fixed at, dated before any candidate was seen. |
| the scoring record | read | The verdicts the scoring agent returned, read rather than edited. |
| the decision record | write | Who chose, on what date, for what reasons, and anyone who disagreed. |
| the process register | read | Whether a process exists that would run inside the tool at all. |
| a trial environment | read | The finalists doing the team's real work over the same period, measured once. |
| the budget record | read | What the stack already costs, so a new entry is read against it. |

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": "stack-planner",
  "version": "1.0.0",
  "description": "The stack-planner abstract agent. Works out what the revenue organization actually needs from a tool before anybody looks at one, and judges candidates against that rather than against a demonstration.",
  "author": {
    "name": "AgentCatalog",
    "url": "https://agentcatalog.com"
  },
  "homepage": "https://agentcatalog.com/abstract-agents/stack-planner",
  "repository": "https://github.com/jeffrschneider/agentcatalog",
  "license": "CC-BY-4.0",
  "keywords": [
    "abstract-agent",
    "reference",
    "revenue-operations",
    "choose-a-tool",
    "retire-a-tool",
    "administer-a-tool",
    "abstract"
  ],
  "extensions": {
    "com.agentcatalog.agent": {
      "agent": "stack-planner",
      "agentVersion": 1,
      "department": "revenue-operations",
      "abstract": true,
      "works": "Convenes the briefing that opens an evaluation, so every agent hears the same requirements, the same criteria and the same due date at once. Runs assessment for the trial of the finalists and for the standing review, and convenes the decide-and-announce in which a named person chooses the tool, or says keep, change or retire. Runs roll-call on status while a search or a retirement is open, and convenes the debrief that closes one. Takes verdicts from the supplier-check agent, candidates from the researcher agent, the connection map from the integration-keeper agent and the standards verdict from the standards-keeper agent, then hands the chosen tool to the integration-keeper agent and the running tool to the tool-administrator agent.",
      "servers": [
        {
          "name": "the stack record",
          "role": "stack-record",
          "access": "write",
          "needs": "Every entry lands with the process it serves, its owner, its cost, its term and its renewal date."
        },
        {
          "name": "the requirements record",
          "role": "requirements-record",
          "access": "write",
          "needs": "The requirements and the criteria at the version they were fixed at, dated before any candidate was seen."
        },
        {
          "name": "the scoring record",
          "role": "scoring-record",
          "access": "read",
          "needs": "The verdicts the scoring agent returned, read rather than edited."
        },
        {
          "name": "the decision record",
          "role": "decision-record",
          "access": "write",
          "needs": "Who chose, on what date, for what reasons, and anyone who disagreed."
        },
        {
          "name": "the process register",
          "role": "process-register",
          "access": "read",
          "needs": "Whether a process exists that would run inside the tool at all."
        },
        {
          "name": "a trial environment",
          "role": "trial-environment",
          "access": "read",
          "needs": "The finalists doing the team's real work over the same period, measured once."
        },
        {
          "name": "the budget record",
          "role": "budget-record",
          "access": "read",
          "needs": "What the stack already costs, so a new entry is read against it."
        }
      ],
      "records": [
        "Per run: the need as the requester stated it, the process named as the one that would run inside the tool, and what the stack already holds that comes near, with what each of those falls short on.",
        "The requirements and the criteria at their fixed version with the date they were fixed, and every later change carried as a new version marking the scores made against the earlier one.",
        "The shortlist, with the requirement each dropped candidate failed.",
        "The trial result for each finalist on the same work over the same period, with the figures and the range around each.",
        "The whole cost, the comparison against one list, and the decision naming who chose, when and why.",
        "The stack entry itself, and for a retirement the closed entry with what replaced it and where the kept data now sits.",
        "Each standing review lands with its decision, its date, the evidence it was made on and the date the next one falls, and a review that did not happen is recorded as not held rather than left blank."
      ],
      "escalates": [
        "the choice of tool itself, always. This agent sets the finalists against one list and a named person picks one and says why.",
        "a need with no process behind it, back to the requester, because the thing being asked for is a way of working rather than a tool",
        "every candidate failing a requirement, to whoever may lower the requirement, decide to build, or decide to do without, with the scores behind it",
        "a review with nothing to review, where nobody has used the tool or nobody can name the process it serves, with retirement as the reasonable answer",
        "a process with nowhere to go in a retirement, and the tool stays on until a home is named and somebody has agreed to take the work"
      ],
      "not": [
        "Does not score the candidates, which is the supplier-check agent working from the requirements at the version they were fixed at, and does not search the market, which is the researcher agent.",
        "Does not clear the security review or the procurement review, which are human gates.",
        "Does not sign an agreement or commit the money.",
        "Does not build the links either side of a tool, which is the integration-keeper agent, and does not run one once it is in: accounts, licences and configuration are the tool-administrator agent."
      ],
      "processes": [
        {
          "process": "ref/rev/administer-a-tool",
          "activities": [
            "Run the Standing Review",
            "Decide Keep, Change or Retire",
            "Record the Review"
          ]
        },
        {
          "process": "ref/rev/choose-a-tool",
          "activities": [
            "Take in the Need",
            "Name the Process It Serves",
            "Check the Stack for It",
            "Write down the Requirements",
            "Set the Scoring Criteria",
            "Brief the Evaluation",
            "Search the Market",
            "Cut to a Shortlist",
            "Trial the Finalists on Real Work",
            "Work out the Whole Cost",
            "Compare the Finalists",
            "Choose the Tool",
            "Write It into the Stack Record"
          ]
        },
        {
          "process": "ref/rev/integrate-a-tool",
          "activities": [
            "Take in the Chosen Tool"
          ]
        },
        {
          "process": "ref/rev/retire-a-tool",
          "activities": [
            "Take in the Decision to Retire",
            "Name Where the Process Goes",
            "Move the Process to Its New Home",
            "Update the Stack Record",
            "Record What Was Learned"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# stack-planner

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 seven 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/administer-a-tool`, `ref/rev/choose-a-tool`,
`ref/rev/integrate-a-tool`, `ref/rev/retire-a-tool`. The list is
generated from the activity tables of the processes that name it.

https://agentcatalog.com/abstract-agents/stack-planner
skills/fix-the-requirements-before-any-candidate-is-seen/SKILL.mdWrites the requirements and the scoring criteria down, dates them at a version, and puts them in front of every agent in the evaluation at once. Use it when running `ref/rev/choose-a-tool`.
---
name: fix-the-requirements-before-any-candidate-is-seen
description: Writes the requirements and the scoring criteria down, dates them at a version, and puts them in front of every agent in the evaluation at once. Use it when running `ref/rev/choose-a-tool`.
license: CC-BY-4.0
metadata:
  agent: stack-planner
  agent-version: "1"
---

# Fix the requirements before any candidate is seen

## What it does

Writes the requirements and the scoring criteria down, dates them at a
version, and puts them in front of every agent in the evaluation at
once. Nothing is judged against a demonstration, because the list
existed first.

## Where it happens

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

- **Brief the Evaluation**
  - `ref/rev/choose-a-tool`, activity 6 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)
- **Set the Scoring Criteria**
  - `ref/rev/choose-a-tool`, activity 5 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)
- **Write down the Requirements**
  - `ref/rev/choose-a-tool`, activity 4 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)

## What to record

Per run: the need as the requester stated it, the process named as the
one that would run inside the tool, and what the stack already holds
that comes near, with what each of those falls short on. The
requirements and the criteria at their fixed version with the date they
were fixed, and every later change carried as a new version marking the
scores made against the earlier one. The shortlist, with the requirement
each dropped candidate failed. The trial result for each finalist on the
same work over the same period, with the figures and the range around
each. The whole cost, the comparison against one list, and the decision
naming who chose, when and why. The stack entry itself, and for a
retirement the closed entry with what replaced it and where the kept
data now sits. Each standing review lands with its decision, its date,
the evidence it was made on and the date the next one falls, and a
review that did not happen is recorded as not held rather than left
blank.

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-standing-review/SKILL.mdHolds the review that asks whether a tool still earns its place, and records the decision with its date, the evidence it was made on and the date the next one falls. Use it when running `ref/rev/administer-a-tool`.
---
name: hold-the-standing-review
description: Holds the review that asks whether a tool still earns its place, and records the decision with its date, the evidence it was made on and the date the next one falls. Use it when running `ref/rev/administer-a-tool`.
license: CC-BY-4.0
metadata:
  agent: stack-planner
  agent-version: "1"
---

# Hold the standing review

## What it does

Holds the review that asks whether a tool still earns its place, and
records the decision with its date, the evidence it was made on and the
date the next one falls. A review that did not happen is recorded as not
held rather than left blank.

## Where it happens

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

- **Record the Review**
  - `ref/rev/administer-a-tool`, activity 15 -
    [Administer a Tool](../../../../processes/revenue-operations/administer-a-tool.md)
- **Run the Standing Review**
  - `ref/rev/administer-a-tool`, activity 13 -
    [Administer a Tool](../../../../processes/revenue-operations/administer-a-tool.md)

## What to record

Per run: the need as the requester stated it, the process named as the
one that would run inside the tool, and what the stack already holds
that comes near, with what each of those falls short on. The
requirements and the criteria at their fixed version with the date they
were fixed, and every later change carried as a new version marking the
scores made against the earlier one. The shortlist, with the requirement
each dropped candidate failed. The trial result for each finalist on the
same work over the same period, with the figures and the range around
each. The whole cost, the comparison against one list, and the decision
naming who chose, when and why. The stack entry itself, and for a
retirement the closed entry with what replaced it and where the kept
data now sits. Each standing review lands with its decision, its date,
the evidence it was made on and the date the next one falls, and a
review that did not happen is recorded as not held rather than left
blank.

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-the-stack-record/SKILL.mdWrites the chosen tool into the stack record and keeps that record true afterwards, so every entry names the process it serves, its owner, its cost, its term and its renewal date. Use it when running `ref/rev/choose-a-tool`, `ref/rev/integrate-a-tool` and `ref/rev/retire-a-tool`.
---
name: keep-the-stack-record
description: Writes the chosen tool into the stack record and keeps that record true afterwards, so every entry names the process it serves, its owner, its cost, its term and its renewal date. Use it when running `ref/rev/choose-a-tool`, `ref/rev/integrate-a-tool` and `ref/rev/retire-a-tool`.
license: CC-BY-4.0
metadata:
  agent: stack-planner
  agent-version: "1"
---

# Keep the stack record

## What it does

Writes the chosen tool into the stack record and keeps that record true
afterwards, so every entry names the process it serves, its owner, its
cost, its term and its renewal date. A retirement closes an entry with
what replaced it rather than removing it.

## Where it happens

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

- **Take in the Chosen Tool**
  - `ref/rev/integrate-a-tool`, activity 1 -
    [Integrate a Tool](../../../../processes/revenue-operations/integrate-a-tool.md)
- **Update the Stack Record**
  - `ref/rev/retire-a-tool`, activity 14 -
    [Retire a Tool](../../../../processes/revenue-operations/retire-a-tool.md)
- **Write It into the Stack Record**
  - `ref/rev/choose-a-tool`, activity 18 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)

## What to record

Per run: the need as the requester stated it, the process named as the
one that would run inside the tool, and what the stack already holds
that comes near, with what each of those falls short on. The
requirements and the criteria at their fixed version with the date they
were fixed, and every later change carried as a new version marking the
scores made against the earlier one. The shortlist, with the requirement
each dropped candidate failed. The trial result for each finalist on the
same work over the same period, with the figures and the range around
each. The whole cost, the comparison against one list, and the decision
naming who chose, when and why. The stack entry itself, and for a
retirement the closed entry with what replaced it and where the kept
data now sits. Each standing review lands with its decision, its date,
the evidence it was made on and the date the next one falls, and a
review that did not happen is recorded as not held rather than left
blank.

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/move-a-process-out-of-a-tool-that-is-going/SKILL.mdTakes a decision to retire, names where the work goes next, sees it moved there, and files what the retirement taught. Use it when running `ref/rev/retire-a-tool`.
---
name: move-a-process-out-of-a-tool-that-is-going
description: Takes a decision to retire, names where the work goes next, sees it moved there, and files what the retirement taught. Use it when running `ref/rev/retire-a-tool`.
license: CC-BY-4.0
metadata:
  agent: stack-planner
  agent-version: "1"
---

# Move a process out of a tool that is going

## What it does

Takes a decision to retire, names where the work goes next, sees it
moved there, and files what the retirement taught. The tool stays on
until a home is named and somebody has agreed to take the work.

## Where it happens

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

- **Move the Process to Its New Home**
  - `ref/rev/retire-a-tool`, activity 6 -
    [Retire a Tool](../../../../processes/revenue-operations/retire-a-tool.md)
- **Name Where the Process Goes**
  - `ref/rev/retire-a-tool`, activity 3 -
    [Retire a Tool](../../../../processes/revenue-operations/retire-a-tool.md)
- **Record What Was Learned**
  - `ref/rev/retire-a-tool`, activity 15 -
    [Retire a Tool](../../../../processes/revenue-operations/retire-a-tool.md)
- **Take in the Decision to Retire**
  - `ref/rev/retire-a-tool`, activity 1 -
    [Retire a Tool](../../../../processes/revenue-operations/retire-a-tool.md)

## What to record

Per run: the need as the requester stated it, the process named as the
one that would run inside the tool, and what the stack already holds
that comes near, with what each of those falls short on. The
requirements and the criteria at their fixed version with the date they
were fixed, and every later change carried as a new version marking the
scores made against the earlier one. The shortlist, with the requirement
each dropped candidate failed. The trial result for each finalist on the
same work over the same period, with the figures and the range around
each. The whole cost, the comparison against one list, and the decision
naming who chose, when and why. The stack entry itself, and for a
retirement the closed entry with what replaced it and where the kept
data now sits. Each standing review lands with its decision, its date,
the evidence it was made on and the date the next one falls, and a
review that did not happen is recorded as not held rather than left
blank.

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/narrow-the-field-to-finalists/SKILL.mdWorks the market down to a shortlist, naming the requirement each dropped candidate failed. Use it when running `ref/rev/choose-a-tool`.
---
name: narrow-the-field-to-finalists
description: Works the market down to a shortlist, naming the requirement each dropped candidate failed. Use it when running `ref/rev/choose-a-tool`.
license: CC-BY-4.0
metadata:
  agent: stack-planner
  agent-version: "1"
---

# Narrow the field to finalists

## What it does

Works the market down to a shortlist, naming the requirement each
dropped candidate failed. Runs the finalists on the work the team really
has, over the same period, adds up what each one costs over its term,
and sets them side by side against one list.

## Where it happens

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

- **Compare the Finalists**
  - `ref/rev/choose-a-tool`, activity 16 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)
- **Cut to a Shortlist**
  - `ref/rev/choose-a-tool`, activity 9 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)
- **Search the Market**
  - `ref/rev/choose-a-tool`, activity 8 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)
- **Trial the Finalists on Real Work**
  - `ref/rev/choose-a-tool`, activity 13 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)
- **Work out the Whole Cost**
  - `ref/rev/choose-a-tool`, activity 14 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)

## What to record

Per run: the need as the requester stated it, the process named as the
one that would run inside the tool, and what the stack already holds
that comes near, with what each of those falls short on. The
requirements and the criteria at their fixed version with the date they
were fixed, and every later change carried as a new version marking the
scores made against the earlier one. The shortlist, with the requirement
each dropped candidate failed. The trial result for each finalist on the
same work over the same period, with the figures and the range around
each. The whole cost, the comparison against one list, and the decision
naming who chose, when and why. The stack entry itself, and for a
retirement the closed entry with what replaced it and where the kept
data now sits. Each standing review lands with its decision, its date,
the evidence it was made on and the date the next one falls, and a
review that did not happen is recorded as not held rather than left
blank.

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-the-choice-to-a-named-person/SKILL.mdPuts the comparison in front of a person who picks one and says why. Use it when running `ref/rev/administer-a-tool` and `ref/rev/choose-a-tool`.
---
name: put-the-choice-to-a-named-person
description: Puts the comparison in front of a person who picks one and says why. Use it when running `ref/rev/administer-a-tool` and `ref/rev/choose-a-tool`.
license: CC-BY-4.0
metadata:
  agent: stack-planner
  agent-version: "1"
---

# Put the choice to a named person

## What it does

Puts the comparison in front of a person who picks one and says why. The
same happens at a review, where the answer is keep it, change it or
retire it. The choice is never this agent's.

## Where it happens

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

- **Choose the Tool**
  - `ref/rev/choose-a-tool`, activity 17 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)
- **Decide Keep, Change or Retire**
  - `ref/rev/administer-a-tool`, activity 14 -
    [Administer a Tool](../../../../processes/revenue-operations/administer-a-tool.md)

## What to record

Per run: the need as the requester stated it, the process named as the
one that would run inside the tool, and what the stack already holds
that comes near, with what each of those falls short on. The
requirements and the criteria at their fixed version with the date they
were fixed, and every later change carried as a new version marking the
scores made against the earlier one. The shortlist, with the requirement
each dropped candidate failed. The trial result for each finalist on the
same work over the same period, with the figures and the range around
each. The whole cost, the comparison against one list, and the decision
naming who chose, when and why. The stack entry itself, and for a
retirement the closed entry with what replaced it and where the kept
data now sits. Each standing review lands with its decision, its date,
the evidence it was made on and the date the next one falls, and a
review that did not happen is recorded as not held rather than left
blank.

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/read-the-need-against-the-stack/SKILL.mdTakes in what somebody says they need, names the process that would run inside the tool, and reads the stack for something already licensed that comes near. Use it when running `ref/rev/choose-a-tool`.
---
name: read-the-need-against-the-stack
description: Takes in what somebody says they need, names the process that would run inside the tool, and reads the stack for something already licensed that comes near. Use it when running `ref/rev/choose-a-tool`.
license: CC-BY-4.0
metadata:
  agent: stack-planner
  agent-version: "1"
---

# Read the need against the stack

## What it does

Takes in what somebody says they need, names the process that would run
inside the tool, and reads the stack for something already licensed that
comes near. A need with no process behind it goes back, because the
thing being asked for is a way of working rather than a tool.

## Where it happens

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

- **Check the Stack for It**
  - `ref/rev/choose-a-tool`, activity 3 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)
- **Name the Process It Serves**
  - `ref/rev/choose-a-tool`, activity 2 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)
- **Take in the Need**
  - `ref/rev/choose-a-tool`, activity 1 -
    [Choose a Tool](../../../../processes/revenue-operations/choose-a-tool.md)

## What to record

Per run: the need as the requester stated it, the process named as the
one that would run inside the tool, and what the stack already holds
that comes near, with what each of those falls short on. The
requirements and the criteria at their fixed version with the date they
were fixed, and every later change carried as a new version marking the
scores made against the earlier one. The shortlist, with the requirement
each dropped candidate failed. The trial result for each finalist on the
same work over the same period, with the figures and the range around
each. The whole cost, the comparison against one list, and the decision
naming who chose, when and why. The stack entry itself, and for a
retirement the closed entry with what replaced it and where the kept
data now sits. Each standing review lands with its decision, its date,
the evidence it was made on and the date the next one falls, and a
review that did not happen is recorded as not held rather than left
blank.

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

stack-record · writerequirements-record · writescoring-record · readdecision-record · writeprocess-register · readtrial-environment · readbudget-record · read
mcp.json You write this file. It is not part of the package.
{
  "$schema": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
  "mcpServers": {
    "stack-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/stack-record"
    },
    "requirements-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/requirements-record"
    },
    "scoring-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/scoring-record"
    },
    "decision-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/decision-record"
    },
    "process-register": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/process-register"
    },
    "trial-environment": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/trial-environment"
    },
    "budget-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/budget-record"
    }
  }
}

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

4 processes, 22 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.

Administer a Toolref/rev/administer-a-tool · 15 activities
123456789101112131415

Run the Standing Review · Decide Keep, Change or Retire · Record the Review

Choose a Toolref/rev/choose-a-tool · 18 activities
123456789101112131415161718

Take in the Need · Name the Process It Serves · Check the Stack for It · Write down the Requirements · Set the Scoring Criteria · Brief the Evaluation · Search the Market · Cut to a Shortlist · Trial the Finalists on Real Work · Work out the Whole Cost · Compare the Finalists · Choose the Tool · Write It into the Stack Record

Integrate a Toolref/rev/integrate-a-tool · 16 activities
12345678910111213141516

Take in the Chosen Tool

Retire a Toolref/rev/retire-a-tool · 15 activities
123456789101112131415

Take in the Decision to Retire · Name Where the Process Goes · Move the Process to Its New Home · Update the Stack Record · Record What Was Learned

The records it leaves

What it writes down

Per run: the need as the requester stated it, the process named as the one that would run inside the tool, and what the stack already holds that comes near, with what each of those falls short on. The requirements and the criteria at their fixed version with the date they were fixed, and every later change carried as a new version marking the scores made against the earlier one. The shortlist, with the requirement each dropped candidate failed. The trial result for each finalist on the same work over the same period, with the figures and the range around each. The whole cost, the comparison against one list, and the decision naming who chose, when and why. The stack entry itself, and for a retirement the closed entry with what replaced it and where the kept data now sits. Each standing review lands with its decision, its date, the evidence it was made on and the date the next one falls, and a review that did not happen is recorded as not held rather than left blank.

Where it stops

What it will not do

Does not score the candidates, which is the supplier-check agent working from the requirements at the version they were fixed at, and does not search the market, which is the researcher agent. Does not clear the security review or the procurement review, which are human gates. Does not sign an agreement or commit the money. Does not build the links either side of a tool, which is the integration-keeper agent, and does not run one once it is in: accounts, licences and configuration are the tool-administrator agent.

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: stack-planner 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.

  • AI/MCP Enablement Agency MCP server · checkmycontractorquote.com · hosted · mirrored from the MCP registry AI workflow/MCP implementation package planner.
  • No-Shell Agent Architect MCP MCP server · loved0543-dotcom.github.io · hosted · mirrored from the MCP registry Turns vague automation requests into tool stacks, prompts, QA checks, and human boundaries.
  • The Tab (scvd-tab) MCP server · scvd.store · run it yourself · mirrored from the MCP registry Every tool a builder signs up for, on one tab: trials, burn, price drift. Local JSONL, zero deps.