Close plan keeper
close-plan-keeper v1Holds the close plan. Starting from the agreed position and the signature date both sides are working toward, it lists every step still owed as one set rather than two, puts one named owner and one date on each, and counts the dates back from signing. The buyer's own approval path is inside the plan, committee by committee, not a mystery outside it. A step past its date is chased with its owner and either re-dated with the buyer or escalated, and when a date moves every step behind it moves too. The plan closes on the record with what slipped and why.
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 collect-and-report to name the steps and to report where the deal stands against its own plan, and convenes the briefing in which the buyer walks through their approval path with the dates each committee meets. Requests the approval in which the buyer confirms the plan, the owners and the dates, and convenes the approval that checks every pre-signature condition as done with evidence. Runs roll-call on status for the life of the plan and convenes the closing debrief. Takes the agreed position from the negotiation-coordinator agent, gives the signature date and the document to the signature-manager agent, works the security review alongside the questionnaire-responder agent, and takes the close conditions with the redline-reviewer agent.
What is in the package
6 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 execute the signature or confirm who signs, which is the signature-manager agent. Does not negotiate a term: a step that cannot be met because the deal has to change goes back to the negotiation-coordinator agent. Does not answer the buyer's security questions itself, which is the questionnaire-responder agent working with the owner of each fact. Does not move a date on our copy alone, and does not mark a condition done without the evidence behind it. ## What always goes to a person - a step nobody will move, to the sales leader and the matching person on the buyer's side, with the step, its owner, how long it has been late and what is blocking it - a step with no owner on the buyer's side, to the buyer's procurement lead, and the step is treated as stalled until it has a name - a close condition still open when the document would go out, to whoever may accept an open condition in writing, and the acceptance is recorded against the agreement - a security question the library cannot answer, to a named person, and if the honest answer is no, the term it affects goes back to the negotiation - a deal quiet past the limit the plan sets, to whoever decides whether it is still live
# The records this abstract agent must leave
This is the contract. An agent implementing `close-plan-keeper` leaves
the following behind, on every run.
The plan opened from the agreed position, with the signature date. Every
step, on either side, with one named owner and one date, and the steps
that block others marked. The buyer's approval path with the committee
dates and the person who takes it to each one. The buyer's confirmation
of the plan, kept and dated. Every chase, with the reason the owner gave
and the new date it produced. Every re-plan, showing which steps moved
and whether the signature date moved or the slack was named. The
pre-signature conditions marked done with their evidence. At close, the
plan with what slipped, why, and what to plan differently.
An agent that leaves less than this does not implement
`close-plan-keeper`, whatever else it does well.
# The systems this abstract agent needs
Six systems, named by role rather than by product. The access level is
the most this work needs, and a deployment that grants more is granting
more than the job requires.
| Role | Access | What the access is for |
|---|---|---|
| the close plan record | write | Every step, its owner, its date and every date that moved. |
| the CRM | write | The plan's state against the opportunity. |
| the contract system | read | The agreed text the conditions are checked against. |
| the security answer library | read | The buyer's security review worked as a dated step. |
| the buyer's vendor portal | write | Vendor forms, supplier setup, tax and banking details, and the order. |
| the shared workspace with the buyer | write | The plan and the dates both sides hold. |
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": "close-plan-keeper",
"version": "1.0.0",
"description": "The close-plan-keeper abstract agent. Holds the close plan. Starting from the agreed position and the signature date both sides are working toward, it lists every step still owed as one set rather than two, puts one named owner and one date on each, and counts the dates back from signing.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/close-plan-keeper",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"sales",
"run-the-close-plan",
"record-a-lost-deal",
"negotiate-the-agreement",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "close-plan-keeper",
"agentVersion": 1,
"department": "sales",
"abstract": true,
"works": "Runs collect-and-report to name the steps and to report where the deal stands against its own plan, and convenes the briefing in which the buyer walks through their approval path with the dates each committee meets. Requests the approval in which the buyer confirms the plan, the owners and the dates, and convenes the approval that checks every pre-signature condition as done with evidence. Runs roll-call on status for the life of the plan and convenes the closing debrief. Takes the agreed position from the negotiation-coordinator agent, gives the signature date and the document to the signature-manager agent, works the security review alongside the questionnaire-responder agent, and takes the close conditions with the redline-reviewer agent.",
"servers": [
{
"name": "the close plan record",
"role": "close-plan-record",
"access": "write",
"needs": "Every step, its owner, its date and every date that moved."
},
{
"name": "the CRM",
"role": "crm",
"access": "write",
"needs": "The plan's state against the opportunity."
},
{
"name": "the contract system",
"role": "contract-system",
"access": "read",
"needs": "The agreed text the conditions are checked against."
},
{
"name": "the security answer library",
"role": "security-answer-library",
"access": "read",
"needs": "The buyer's security review worked as a dated step."
},
{
"name": "the buyer's vendor portal",
"role": "buyers-vendor-portal",
"access": "write",
"needs": "Vendor forms, supplier setup, tax and banking details, and the order."
},
{
"name": "the shared workspace with the buyer",
"role": "shared-workspace-with-the-buyer",
"access": "write",
"needs": "The plan and the dates both sides hold."
}
],
"records": [
"The plan opened from the agreed position, with the signature date.",
"Every step, on either side, with one named owner and one date, and the steps that block others marked.",
"The buyer's approval path with the committee dates and the person who takes it to each one.",
"The buyer's confirmation of the plan, kept and dated.",
"Every chase, with the reason the owner gave and the new date it produced.",
"Every re-plan, showing which steps moved and whether the signature date moved or the slack was named.",
"The pre-signature conditions marked done with their evidence.",
"At close, the plan with what slipped, why, and what to plan differently."
],
"escalates": [
"a step nobody will move, to the sales leader and the matching person on the buyer's side, with the step, its owner, how long it has been late and what is blocking it",
"a step with no owner on the buyer's side, to the buyer's procurement lead, and the step is treated as stalled until it has a name",
"a close condition still open when the document would go out, to whoever may accept an open condition in writing, and the acceptance is recorded against the agreement",
"a security question the library cannot answer, to a named person, and if the honest answer is no, the term it affects goes back to the negotiation",
"a deal quiet past the limit the plan sets, to whoever decides whether it is still live"
],
"not": [
"Does not execute the signature or confirm who signs, which is the signature-manager agent.",
"Does not negotiate a term: a step that cannot be met because the deal has to change goes back to the negotiation-coordinator agent.",
"Does not answer the buyer's security questions itself, which is the questionnaire-responder agent working with the owner of each fact.",
"Does not move a date on our copy alone, and does not mark a condition done without the evidence behind it."
],
"processes": [
{
"process": "ref/sls/negotiate-the-agreement",
"activities": [
"Hand On the Agreed Position"
]
},
{
"process": "ref/sls/record-a-lost-deal",
"activities": [
"Stop the Open Work",
"Return the Buyer's Material"
]
},
{
"process": "ref/sls/run-the-close-plan",
"activities": [
"Open the Close Plan",
"Name the Steps Each Side Owes",
"Confirm the Buyer's Own Process",
"Put an Owner on Every Step",
"Date Every Step",
"Work the Security Review",
"Work the Procurement Steps",
"Chase the Slipping Steps",
"Re-Plan When a Date Moves",
"Report the Plan",
"Confirm the Close Conditions",
"Close the Plan on the Record"
]
}
]
}
}
}
# close-plan-keeper 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 six 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/sls/negotiate-the-agreement`, `ref/sls/record-a-lost-deal`, `ref/sls/run-the-close-plan`. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/close-plan-keeper
--- name: chase-what-slips-and-re-plan description: Chases a step past its date with its owner, re-dates it with the buyer or sends it up, and moves every step behind it when a date moves. Use it when running `ref/sls/run-the-close-plan`. license: CC-BY-4.0 metadata: agent: close-plan-keeper agent-version: "1" --- # Chase what slips and re plan ## What it does Chases a step past its date with its owner, re-dates it with the buyer or sends it up, and moves every step behind it when a date moves. Reports where the deal stands against its own plan. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Chase the Slipping Steps** - `ref/sls/run-the-close-plan`, activity 10 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) - **Re-Plan When a Date Moves** - `ref/sls/run-the-close-plan`, activity 11 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) - **Report the Plan** - `ref/sls/run-the-close-plan`, activity 12 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) ## What to record The plan opened from the agreed position, with the signature date. Every step, on either side, with one named owner and one date, and the steps that block others marked. The buyer's approval path with the committee dates and the person who takes it to each one. The buyer's confirmation of the plan, kept and dated. Every chase, with the reason the owner gave and the new date it produced. Every re-plan, showing which steps moved and whether the signature date moved or the slack was named. The pre-signature conditions marked done with their evidence. At close, the plan with what slipped, why, and what to plan differently. 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: close-the-plan-out description: Checks every condition owed before signature as done with the evidence behind it, and closes the plan on the record with what slipped, why, and what to plan differently next time. Use it when running `ref/sls/run-the-close-plan`. license: CC-BY-4.0 metadata: agent: close-plan-keeper agent-version: "1" --- # Close the plan out ## What it does Checks every condition owed before signature as done with the evidence behind it, and closes the plan on the record with what slipped, why, and what to plan differently next time. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Close the Plan on the Record** - `ref/sls/run-the-close-plan`, activity 16 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) - **Confirm the Close Conditions** - `ref/sls/run-the-close-plan`, activity 14 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) ## What to record The plan opened from the agreed position, with the signature date. Every step, on either side, with one named owner and one date, and the steps that block others marked. The buyer's approval path with the committee dates and the person who takes it to each one. The buyer's confirmation of the plan, kept and dated. Every chase, with the reason the owner gave and the new date it produced. Every re-plan, showing which steps moved and whether the signature date moved or the slack was named. The pre-signature conditions marked done with their evidence. At close, the plan with what slipped, why, and what to plan differently. 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: name-the-steps-and-put-an-owner-and-a-date-on-each description: Lists every step still owed as one set rather than two, walks the buyer's own approval path committee by committee, puts one named owner on each step and counts the dates back from signing. Use it when running `ref/sls/run-the-close-plan`. license: CC-BY-4.0 metadata: agent: close-plan-keeper agent-version: "1" --- # Name the steps and put an owner and a date on each ## What it does Lists every step still owed as one set rather than two, walks the buyer's own approval path committee by committee, puts one named owner on each step and counts the dates back from signing. ## Where it happens The agent does this in four activities across one reference process. Each one names the activity as that process words it. - **Confirm the Buyer's Own Process** - `ref/sls/run-the-close-plan`, activity 3 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) - **Date Every Step** - `ref/sls/run-the-close-plan`, activity 5 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) - **Name the Steps Each Side Owes** - `ref/sls/run-the-close-plan`, activity 2 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) - **Put an Owner on Every Step** - `ref/sls/run-the-close-plan`, activity 4 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) ## What to record The plan opened from the agreed position, with the signature date. Every step, on either side, with one named owner and one date, and the steps that block others marked. The buyer's approval path with the committee dates and the person who takes it to each one. The buyer's confirmation of the plan, kept and dated. Every chase, with the reason the owner gave and the new date it produced. Every re-plan, showing which steps moved and whether the signature date moved or the slack was named. The pre-signature conditions marked done with their evidence. At close, the plan with what slipped, why, and what to plan differently. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: open-a-plan-from-the-agreed-position description: Takes the agreed position as it comes across from the negotiation and opens the plan on it, with the signature date both sides are working toward written at the top. Use it when running `ref/sls/negotiate-the-agreement` and `ref/sls/run-the-close-plan`. license: CC-BY-4.0 metadata: agent: close-plan-keeper agent-version: "1" --- # Open a plan from the agreed position ## What it does Takes the agreed position as it comes across from the negotiation and opens the plan on it, with the signature date both sides are working toward written at the top. ## Where it happens The agent does this in two activities across two reference processes. Each one names the activity as that process words it. - **Hand On the Agreed Position** - `ref/sls/negotiate-the-agreement`, activity 15 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) - **Open the Close Plan** - `ref/sls/run-the-close-plan`, activity 1 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) ## What to record The plan opened from the agreed position, with the signature date. Every step, on either side, with one named owner and one date, and the steps that block others marked. The buyer's approval path with the committee dates and the person who takes it to each one. The buyer's confirmation of the plan, kept and dated. Every chase, with the reason the owner gave and the new date it produced. Every re-plan, showing which steps moved and whether the signature date moved or the slack was named. The pre-signature conditions marked done with their evidence. At close, the plan with what slipped, why, and what to plan differently. 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: wind-a-dead-deal-down description: Stops the trials, pilots and pending approvals when a deal is called lost, and gives back or deletes what the buyer gave us. Use it when running `ref/sls/record-a-lost-deal`. license: CC-BY-4.0 metadata: agent: close-plan-keeper agent-version: "1" --- # Wind a dead deal down ## What it does Stops the trials, pilots and pending approvals when a deal is called lost, and gives back or deletes what the buyer gave us. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Return the Buyer's Material** - `ref/sls/record-a-lost-deal`, activity 10 - [Record a Lost Deal](../../../../processes/sales/record-a-lost-deal.md) - **Stop the Open Work** - `ref/sls/record-a-lost-deal`, activity 9 - [Record a Lost Deal](../../../../processes/sales/record-a-lost-deal.md) ## What to record The plan opened from the agreed position, with the signature date. Every step, on either side, with one named owner and one date, and the steps that block others marked. The buyer's approval path with the committee dates and the person who takes it to each one. The buyer's confirmation of the plan, kept and dated. Every chase, with the reason the owner gave and the new date it produced. Every re-plan, showing which steps moved and whether the signature date moved or the slack was named. The pre-signature conditions marked done with their evidence. At close, the plan with what slipped, why, and what to plan differently. 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: work-the-steps-that-take-the-longest description: Runs the buyer's security review and the procurement steps as dated steps inside the plan, which means the vendor forms, the supplier setup and the order rather than a wait nobody owns. Use it when running `ref/sls/run-the-close-plan`. license: CC-BY-4.0 metadata: agent: close-plan-keeper agent-version: "1" --- # Work the steps that take the longest ## What it does Runs the buyer's security review and the procurement steps as dated steps inside the plan, which means the vendor forms, the supplier setup and the order rather than a wait nobody owns. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Work the Procurement Steps** - `ref/sls/run-the-close-plan`, activity 8 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) - **Work the Security Review** - `ref/sls/run-the-close-plan`, activity 7 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) ## What to record The plan opened from the agreed position, with the signature date. Every step, on either side, with one named owner and one date, and the steps that block others marked. The buyer's approval path with the committee dates and the person who takes it to each one. The buyer's confirmation of the plan, kept and dated. Every chase, with the reason the owner gave and the new date it produced. Every re-plan, showing which steps moved and whether the signature date moved or the slack was named. The pre-signature conditions marked done with their evidence. At close, the plan with what slipped, why, and what to plan differently. 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 6 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": {
"close-plan-record": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/close-plan-record"
},
"crm": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/crm"
},
"contract-system": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/contract-system"
},
"security-answer-library": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/security-answer-library"
},
"buyers-vendor-portal": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/buyers-vendor-portal"
},
"shared-workspace-with-the-buyer": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/shared-workspace-with-the-buyer"
}
}
}
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, 15 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.
Hand On the Agreed Position
Stop the Open Work · Return the Buyer's Material
Open the Close Plan · Name the Steps Each Side Owes · Confirm the Buyer's Own Process · Put an Owner on Every Step · Date Every Step · Work the Security Review · Work the Procurement Steps · Chase the Slipping Steps · Re-Plan When a Date Moves · Report the Plan · Confirm the Close Conditions · Close the Plan on the Record
What it writes down
The plan opened from the agreed position, with the signature date. Every step, on either side, with one named owner and one date, and the steps that block others marked. The buyer's approval path with the committee dates and the person who takes it to each one. The buyer's confirmation of the plan, kept and dated. Every chase, with the reason the owner gave and the new date it produced. Every re-plan, showing which steps moved and whether the signature date moved or the slack was named. The pre-signature conditions marked done with their evidence. At close, the plan with what slipped, why, and what to plan differently.
What it will not do
Does not execute the signature or confirm who signs, which is the signature-manager agent. Does not negotiate a term: a step that cannot be met because the deal has to change goes back to the negotiation-coordinator agent. Does not answer the buyer's security questions itself, which is the questionnaire-responder agent working with the owner of each fact. Does not move a date on our copy alone, and does not mark a condition done without the evidence behind it.
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: close-plan-keeper 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.
- md-feedback MCP server · yeominux.github.io · run it yourself · mirrored from the MCP registry Review markdown plans before AI agents build. Annotate, gate-check, apply fixes, session handoffs.
- CHAP Coordinator MCP server · brightbeamai.github.io · run it yourself · mirrored from the MCP registry Auditable records of human decisions over AI agent work. Approvals, edits, overrides, escalations.
- PlanWright MCP server · planwright.tools · hosted · mirrored from the MCP registry Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.