Stack planner
stack-planner v1Works 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.
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.
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.
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.
# 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
# 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.
# 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.
{
"$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"
]
}
]
}
}
}
# 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
--- 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`.
--- 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`.
--- 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`.
--- 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`.
--- 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`.
--- 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`.
--- 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`.
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": {
"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.
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.
Run the Standing Review · Decide Keep, Change or Retire · Record the Review
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
Take in the Chosen Tool
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
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.
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.
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: stack-planner 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.
- 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.