Capacity manager
capacity-manager v1Keeps the department's book of work: the requests waiting for an answer, the runs already committed, which agents each run needs, who holds each role, how long the work actually takes, and how much room is left in the period ahead. It answers one question for the agents that plan the year and the agents that ask for work: whether a new commitment fits in the period, and what it would displace if the department made it anyway. The answer comes from the department's own record of how long past runs took, so an estimate is checked against what happened rather than against what somebody remembers.
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.
Sits in the briefing that opens a plan or a decision about what the department will take on, and brings what is already committed and what room is left. Runs collect-and-report to gather what each run actually took: every run is asked the same things, every line keeps the run it came from, and a run that did not answer appears as missing. Answers roll-calls with what is committed, what is waiting for an answer, and where the department is short an agent. Requests an approval when a request needs more than the period holds, and puts what would have to move in front of the signers beside the request itself. Tells every run whose dates change what changed and from when.
What is in the package
14 skills and the systems they need, written to version 1.1.0 of the Agent Plugins standard. Nothing in these files names a product. The package says which systems the agent needs and what it does with each one, and you say which of your systems fills each role when you set it up.
# Where this abstract agent stops Does not decide what the department does. It says what the department can carry and what a new commitment would displace, and the decision-coordinator agent runs the decision that named people make. Does not rank one initiative above another on its merits. It supplies what each candidate would take and what room is left, and the people who decide do the ranking. Does not run any of the work in the book. The campaign-manager agent answers for a campaign, the content-manager agent for one published piece, and the launch-coordinator agent for a launch, and this agent records the agents those runs need and the time they take. Does not hold the department's money, which is the budget-keeper agent. A department can hold the money for a run and still have nobody free to do it. Does not report how the department performed over a reporting period, which is the reporting-manager agent. Does not say what an initiative would cost or return, which is the forecaster agent. Does not staff a role, hire anyone, or set an automation level. Does not keep the record of what the department buys from outside parties, which is the supplier-manager agent. Does not sign anything. ## What always goes to a person - a request that does not fit in the period, said on the day it arrives. The agent names what would have to move, and a person chooses. - two committed runs that need the same agent at the same time, where neither can move without breaking a commitment already made - a committed run with a role nobody holds - work committed outside the book, because the agent cannot answer for a period whose commitments it does not know about - a run that has passed its dates and is still holding roles other runs are waiting on - a request to commit work with no dates, or with no account of the agents it needs - a pattern of runs taking materially longer than the department plans for, because that is a question about the plan rather than about one run
# The records this abstract agent must leave
This is the contract. An agent implementing `capacity-manager` leaves
the following behind, on every run.
It leaves the book of work at a version for each period, with every
request carrying the date it arrived and its current state, and every
committed run carrying the agents it needs and the dates it holds. Every
commitment it makes is recorded with the date it was made and what it
displaced, and every commitment that changes is recorded the same way.
It records what each activity actually took against the run it came
from, so the department's estimates come from its own history. The room
left in the period is restated whenever a commitment lands or moves. A
request the department could not take is recorded with the reason and
the date, and it stays in the book.
An agent that leaves less than this does not implement
`capacity-manager`, 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 book of work | write | Every request and every committed run lands here with the agents it needs and the dates it holds. |
| the process bindings | read | Which agents each process needs, and at which activity. |
| the agent roster | read | Who or what holds each role, and when. |
| the run records | read | When each activity started and finished, so the agent knows what the work takes. |
| the plans and commitments for the period | read | What the department has already said it will do. |
| the notification channel | write | A run whose dates move hears it from here. |
There is deliberately no grant over the roster. This agent reads who
holds each role and never changes it, because staffing a role belongs to
the adopting organization.
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": "capacity-manager",
"version": "1.0.0",
"description": "The capacity-manager abstract agent. Keeps the department's book of work: the requests waiting for an answer, the runs already committed, which agents each run needs, who holds each role, how long the work actually takes, and how much room is left in the period ahead.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/capacity-manager",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"marketing",
"plan-marketing-capacity",
"prioritize-initiatives",
"engage-marketing-agency",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "capacity-manager",
"agentVersion": 1,
"department": "marketing",
"abstract": true,
"works": "Sits in the briefing that opens a plan or a decision about what the department will take on, and brings what is already committed and what room is left. Runs collect-and-report to gather what each run actually took: every run is asked the same things, every line keeps the run it came from, and a run that did not answer appears as missing. Answers roll-calls with what is committed, what is waiting for an answer, and where the department is short an agent. Requests an approval when a request needs more than the period holds, and puts what would have to move in front of the signers beside the request itself. Tells every run whose dates change what changed and from when.",
"servers": [
{
"name": "the book of work",
"role": "book-of-work",
"access": "write",
"needs": "Every request and every committed run lands here with the agents it needs and the dates it holds."
},
{
"name": "the process bindings",
"role": "process-bindings",
"access": "read",
"needs": "Which agents each process needs, and at which activity."
},
{
"name": "the agent roster",
"role": "agent-roster",
"access": "read",
"needs": "Who or what holds each role, and when."
},
{
"name": "the run records",
"role": "run-records",
"access": "read",
"needs": "When each activity started and finished, so the agent knows what the work takes."
},
{
"name": "the plans and commitments for the period",
"role": "plans-and-commitments-for-the-period",
"access": "read",
"needs": "What the department has already said it will do."
},
{
"name": "the notification channel",
"role": "notification-channel",
"access": "write",
"needs": "A run whose dates move hears it from here."
}
],
"records": [
"It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds.",
"Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way.",
"It records what each activity actually took against the run it came from, so the department's estimates come from its own history.",
"The room left in the period is restated whenever a commitment lands or moves.",
"A request the department could not take is recorded with the reason and the date, and it stays in the book."
],
"escalates": [
"a request that does not fit in the period, said on the day it arrives. The agent names what would have to move, and a person chooses.",
"two committed runs that need the same agent at the same time, where neither can move without breaking a commitment already made",
"a committed run with a role nobody holds",
"work committed outside the book, because the agent cannot answer for a period whose commitments it does not know about",
"a run that has passed its dates and is still holding roles other runs are waiting on",
"a request to commit work with no dates, or with no account of the agents it needs",
"a pattern of runs taking materially longer than the department plans for, because that is a question about the plan rather than about one run"
],
"not": [
"Does not decide what the department does.",
"It says what the department can carry and what a new commitment would displace, and the decision-coordinator agent runs the decision that named people make.",
"Does not rank one initiative above another on its merits.",
"It supplies what each candidate would take and what room is left, and the people who decide do the ranking.",
"Does not run any of the work in the book.",
"The campaign-manager agent answers for a campaign, the content-manager agent for one published piece, and the launch-coordinator agent for a launch, and this agent records the agents those runs need and the time they take.",
"Does not hold the department's money, which is the budget-keeper agent.",
"A department can hold the money for a run and still have nobody free to do it.",
"Does not report how the department performed over a reporting period, which is the reporting-manager agent.",
"Does not say what an initiative would cost or return, which is the forecaster agent.",
"Does not staff a role, hire anyone, or set an automation level.",
"Does not keep the record of what the department buys from outside parties, which is the supplier-manager agent.",
"Does not sign anything."
],
"processes": [
{
"process": "ref/mkt/brand-refresh",
"activities": [
"Check What the Department Can Carry",
"Set the Switch Date and the Order"
]
},
{
"process": "ref/mkt/brief-executive-leadership",
"activities": [
"Account for the Book of Work",
"Hand the Decisions On"
]
},
{
"process": "ref/mkt/develop-marketing-strategy",
"activities": [
"Check What Each Option Would Take"
]
},
{
"process": "ref/mkt/engage-marketing-agency",
"activities": [
"Take in the Gap",
"Choose the Route",
"Decide What Is Handed Over",
"Write the Scope"
]
},
{
"process": "ref/mkt/plan-marketing-capacity",
"activities": [
"Take in the Planning Trigger",
"Break the Work into Activities",
"Measure What the Department Got Through",
"Size the Effort Each Run Takes",
"Find the Shortfall",
"Sort the Activities by Who Can Hold Them",
"Check What an Abstract Agent Would Need",
"Match the Work to Holders",
"Name the Gaps that Remain",
"Record What Was Learned"
]
},
{
"process": "ref/mkt/prioritize-initiatives",
"activities": [
"Open the Round",
"Take in the Requests",
"Screen the Requests",
"Read What Is Already Committed",
"Work out What Is Free",
"Choose What Gets Committed",
"Resource the Commitments",
"Record the Declines",
"Tell the Requesters",
"Record What the Round Rests On"
]
},
{
"process": "ref/mkt/quarterly-business-review",
"activities": [
"Put Numbers on the Proposed Changes"
]
},
{
"process": "ref/mkt/select-marketing-technology",
"activities": [
"Brief the Selection",
"Size What the Tool Has to Carry",
"Hand It to the Owner"
]
}
]
}
}
}
# capacity-manager 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 fourteen 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/mkt/brand-refresh`, `ref/mkt/brief-executive-leadership`, `ref/mkt/develop-marketing-strategy`, `ref/mkt/engage-marketing-agency`, `ref/mkt/plan-marketing-capacity`, `ref/mkt/prioritize-initiatives`, and 2 more. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/capacity-manager
--- name: answer-the-people-who-asked description: Tells each requester what happened to their request, and records every request that was not committed with the reason it was declined. Use it when running `ref/mkt/prioritize-initiatives`. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Answer the people who asked ## What it does Tells each requester what happened to their request, and records every request that was not committed with the reason it was declined. ## 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 Declines** - `ref/mkt/prioritize-initiatives`, activity 13 - [Prioritize Marketing Initiatives](../../../../processes/marketing/prioritize-initiatives.md) - **Tell the Requesters** - `ref/mkt/prioritize-initiatives`, activity 14 - [Prioritize Marketing Initiatives](../../../../processes/marketing/prioritize-initiatives.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: decide-what-the-department-commits-to description: Decides how far down the ranked list the department commits, and attaches the agents, the dates and the money to each thing it commits to. Use it when running `ref/mkt/prioritize-initiatives`. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Decide what the department commits to ## What it does Decides how far down the ranked list the department commits, and attaches the agents, the dates and the money to each thing it commits to. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Choose What Gets Committed** - `ref/mkt/prioritize-initiatives`, activity 10 - [Prioritize Marketing Initiatives](../../../../processes/marketing/prioritize-initiatives.md) - **Resource the Commitments** - `ref/mkt/prioritize-initiatives`, activity 11 - [Prioritize Marketing Initiatives](../../../../processes/marketing/prioritize-initiatives.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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: give-every-piece-of-work-a-holder description: Sorts the work by whether it needs a person or could be held by an agent, gives every piece in the period a holder, and names what is left with no holder and what happens to it. Use it when running `ref/mkt/plan-marketing-capacity`. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Give every piece of work a holder ## What it does Sorts the work by whether it needs a person or could be held by an agent, gives every piece in the period a holder, and names what is left with no holder and what happens to it. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Match the Work to Holders** - `ref/mkt/plan-marketing-capacity`, activity 12 - [Plan Marketing Capacity](../../../../processes/marketing/plan-marketing-capacity.md) - **Name the Gaps that Remain** - `ref/mkt/plan-marketing-capacity`, activity 13 - [Plan Marketing Capacity](../../../../processes/marketing/plan-marketing-capacity.md) - **Sort the Activities by Who Can Hold Them** - `ref/mkt/plan-marketing-capacity`, activity 7 - [Plan Marketing Capacity](../../../../processes/marketing/plan-marketing-capacity.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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: hand-the-decision-to-whoever-acts-on-it description: Passes a settled decision to the agents that have to act on it, and hands an owned item to its named owner with a date to review it. Use it when running `ref/mkt/brief-executive-leadership` and `ref/mkt/select-marketing-technology`. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Hand the decision to whoever acts on it ## What it does Passes a settled decision to the agents that have to act on it, and hands an owned item to its named owner with a date to review it. ## 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 It to the Owner** - `ref/mkt/select-marketing-technology`, activity 20 - [Select Marketing Technology](../../../../processes/marketing/select-marketing-technology.md) - **Hand the Decisions On** - `ref/mkt/brief-executive-leadership`, activity 19 - [Brief Executive Leadership](../../../../processes/marketing/brief-executive-leadership.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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: measure-what-past-runs-took description: "Reads the record of runs that have closed and reports what the department actually got through: how long each run took, where it waited, and the hours and agent time one run costs. Use it when running `ref/mkt/plan-marketing-capacity`." license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Measure what past runs took ## What it does Reads the record of runs that have closed and reports what the department actually got through: how long each run took, where it waited, and the hours and agent time one run costs. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Measure What the Department Got Through** - `ref/mkt/plan-marketing-capacity`, activity 4 - [Plan Marketing Capacity](../../../../processes/marketing/plan-marketing-capacity.md) - **Size the Effort Each Run Takes** - `ref/mkt/plan-marketing-capacity`, activity 5 - [Plan Marketing Capacity](../../../../processes/marketing/plan-marketing-capacity.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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-round-of-planning description: Takes in whatever started the round, whether that is a planning cycle coming around or a gap the department cannot cover, and states what has to be settled and by when. Use it when running `ref/mkt/engage-marketing-agency` and 3 other reference processes. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Open a round of planning ## What it does Takes in whatever started the round, whether that is a planning cycle coming around or a gap the department cannot cover, and states what has to be settled and by when. Everyone taking part hears the same scope and the same requirements at once. ## Where it happens The agent does this in four activities across four reference processes. Each one names the activity as that process words it. - **Brief the Selection** - `ref/mkt/select-marketing-technology`, activity 5 - [Select Marketing Technology](../../../../processes/marketing/select-marketing-technology.md) - **Open the Round** - `ref/mkt/prioritize-initiatives`, activity 1 - [Prioritize Marketing Initiatives](../../../../processes/marketing/prioritize-initiatives.md) - **Take in the Gap** - `ref/mkt/engage-marketing-agency`, activity 1 - [Engage Marketing Agency](../../../../processes/marketing/engage-marketing-agency.md) - **Take in the Planning Trigger** - `ref/mkt/plan-marketing-capacity`, activity 1 - [Plan Marketing Capacity](../../../../processes/marketing/plan-marketing-capacity.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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-book-of-work description: Reports what the department has already committed, what each committed run still owes, and how much room each agent has left in the period. Use it when running `ref/mkt/brief-executive-leadership` and `ref/mkt/prioritize-initiatives`. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Read the book of work ## What it does Reports what the department has already committed, what each committed run still owes, and how much room each agent has left in the period. ## Where it happens The agent does this in three activities across two reference processes. Each one names the activity as that process words it. - **Account for the Book of Work** - `ref/mkt/brief-executive-leadership`, activity 7 - [Brief Executive Leadership](../../../../processes/marketing/brief-executive-leadership.md) - **Read What Is Already Committed** - `ref/mkt/prioritize-initiatives`, activity 4 - [Prioritize Marketing Initiatives](../../../../processes/marketing/prioritize-initiatives.md) - **Work out What Is Free** - `ref/mkt/prioritize-initiatives`, activity 5 - [Prioritize Marketing Initiatives](../../../../processes/marketing/prioritize-initiatives.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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: record-what-the-plan-rests-on description: Writes down the assumptions the plan or the ranking rests on, what would reopen it, and what is worth repeating the next time this is run. Use it when running `ref/mkt/plan-marketing-capacity` and `ref/mkt/prioritize-initiatives`. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Record what the plan rests on ## What it does Writes down the assumptions the plan or the ranking rests on, what would reopen it, and what is worth repeating the next time this is run. ## Where it happens The agent does this in two activities across two reference processes. Each one names the activity as that process words it. - **Record What Was Learned** - `ref/mkt/plan-marketing-capacity`, activity 15 - [Plan Marketing Capacity](../../../../processes/marketing/plan-marketing-capacity.md) - **Record What the Round Rests On** - `ref/mkt/prioritize-initiatives`, activity 16 - [Prioritize Marketing Initiatives](../../../../processes/marketing/prioritize-initiatives.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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: say-what-a-proposal-would-take description: Says what a proposed option, change or tool would need in money and in people, what it would return, and what it would displace if the department took it on. Use it when running `ref/mkt/brand-refresh` and 3 other reference processes. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Say what a proposal would take ## What it does Says what a proposed option, change or tool would need in money and in people, what it would return, and what it would displace if the department took it on. ## Where it happens The agent does this in four activities across four reference processes. Each one names the activity as that process words it. - **Check What Each Option Would Take** - `ref/mkt/develop-marketing-strategy`, activity 8 - [Develop Marketing Strategy](../../../../processes/marketing/develop-marketing-strategy.md) - **Check What the Department Can Carry** - `ref/mkt/brand-refresh`, activity 9 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) - **Put Numbers on the Proposed Changes** - `ref/mkt/quarterly-business-review`, activity 9 - [Conduct Quarterly Business Review](../../../../processes/marketing/quarterly-business-review.md) - **Size What the Tool Has to Carry** - `ref/mkt/select-marketing-technology`, activity 6 - [Select Marketing Technology](../../../../processes/marketing/select-marketing-technology.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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: say-what-an-agent-would-need-to-hold-the-work description: "Says what an abstract agent would have to be given before it could hold a piece of work: the grants it needs, the standards it works to, and what it has to put to a person. Use it when running `ref/mkt/plan-marketing-capacity`." license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Say what an agent would need to hold the work ## What it does Says what an abstract agent would have to be given before it could hold a piece of work: the grants it needs, the standards it works to, and what it has to put to a person. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Check What an Abstract Agent Would Need** - `ref/mkt/plan-marketing-capacity`, activity 8 - [Plan Marketing Capacity](../../../../processes/marketing/plan-marketing-capacity.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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: set-the-date-and-the-order-of-a-changeover description: Sets the day a change goes public and the order of everything that has to happen before it. Use it when running `ref/mkt/brand-refresh`. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Set the date and the order of a changeover ## What it does Sets the day a change goes public and the order of everything that has to happen before it. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Set the Switch Date and the Order** - `ref/mkt/brand-refresh`, activity 10 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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: settle-what-goes-outside description: Weighs building the work inside against hiring it outside, settles what stays in the department and what an outside party does, and writes down the work handed over with its deliverables and dates. Use it when running `ref/mkt/engage-marketing-agency`. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Settle what goes outside ## What it does Weighs building the work inside against hiring it outside, settles what stays in the department and what an outside party does, and writes down the work handed over with its deliverables and dates. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Choose the Route** - `ref/mkt/engage-marketing-agency`, activity 2 - [Engage Marketing Agency](../../../../processes/marketing/engage-marketing-agency.md) - **Decide What Is Handed Over** - `ref/mkt/engage-marketing-agency`, activity 3 - [Engage Marketing Agency](../../../../processes/marketing/engage-marketing-agency.md) - **Write the Scope** - `ref/mkt/engage-marketing-agency`, activity 4 - [Engage Marketing Agency](../../../../processes/marketing/engage-marketing-agency.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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: take-in-and-screen-the-requests description: Logs every request in one common form, merges the ones that repeat each other, and sends back the ones that cannot be judged as they stand. Use it when running `ref/mkt/prioritize-initiatives`. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Take in and screen the requests ## What it does Logs every request in one common form, merges the ones that repeat each other, and sends back the ones that cannot be judged as they stand. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Screen the Requests** - `ref/mkt/prioritize-initiatives`, activity 3 - [Prioritize Marketing Initiatives](../../../../processes/marketing/prioritize-initiatives.md) - **Take in the Requests** - `ref/mkt/prioritize-initiatives`, activity 2 - [Prioritize Marketing Initiatives](../../../../processes/marketing/prioritize-initiatives.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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-out-the-demand-and-the-shortfall description: Breaks the planned work into the processes that will run, how often each one runs and which agents it needs, then sets that demand against what the department can carry and says where it falls short. Use it when running `ref/mkt/plan-marketing-capacity`. license: CC-BY-4.0 metadata: agent: capacity-manager agent-version: "1" --- # Work out the demand and the shortfall ## What it does Breaks the planned work into the processes that will run, how often each one runs and which agents it needs, then sets that demand against what the department can carry and says where it falls short. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Break the Work into Activities** - `ref/mkt/plan-marketing-capacity`, activity 3 - [Plan Marketing Capacity](../../../../processes/marketing/plan-marketing-capacity.md) - **Find the Shortfall** - `ref/mkt/plan-marketing-capacity`, activity 6 - [Plan Marketing Capacity](../../../../processes/marketing/plan-marketing-capacity.md) ## What to record It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book. 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": {
"book-of-work": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/book-of-work"
},
"process-bindings": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/process-bindings"
},
"agent-roster": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/agent-roster"
},
"run-records": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/run-records"
},
"plans-and-commitments-for-the-period": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/plans-and-commitments-for-the-period"
},
"notification-channel": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/notification-channel"
}
}
}
The hostnames here are a placeholder for your own. Whichever product holds each of these systems, the agent you build is yours and nobody else has to be involved in running it.
12 processes, 38 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.
Check What the Department Can Carry · Set the Switch Date and the Order
Account for the Book of Work · Hand the Decisions On
Check What Each Option Would Take
Take in the Gap · Choose the Route · Decide What Is Handed Over · Write the Scope
Take in the Planning Trigger · Break the Work into Activities · Measure What the Department Got Through · Size the Effort Each Run Takes · Find the Shortfall · Sort the Activities by Who Can Hold Them · Check What an Abstract Agent Would Need · Match the Work to Holders · Name the Gaps that Remain · Record What Was Learned
Open the Round · Take in the Requests · Screen the Requests · Read What Is Already Committed · Work out What Is Free · Choose What Gets Committed · Resource the Commitments · Record the Declines · Tell the Requesters · Record What the Round Rests On
Put Numbers on the Proposed Changes
Brief the Selection · Size What the Tool Has to Carry · Hand It to the Owner
Cost Each Cut
Name the Effect on Both Quotas
Load the Carve into the Systems
Read Who Is in Role · Test Against Capacity
What it writes down
It leaves the book of work at a version for each period, with every request carrying the date it arrived and its current state, and every committed run carrying the agents it needs and the dates it holds. Every commitment it makes is recorded with the date it was made and what it displaced, and every commitment that changes is recorded the same way. It records what each activity actually took against the run it came from, so the department's estimates come from its own history. The room left in the period is restated whenever a commitment lands or moves. A request the department could not take is recorded with the reason and the date, and it stays in the book.
What it will not do
Does not decide what the department does. It says what the department can carry and what a new commitment would displace, and the decision-coordinator agent runs the decision that named people make. Does not rank one initiative above another on its merits. It supplies what each candidate would take and what room is left, and the people who decide do the ranking. Does not run any of the work in the book. The campaign-manager agent answers for a campaign, the content-manager agent for one published piece, and the launch-coordinator agent for a launch, and this agent records the agents those runs need and the time they take. Does not hold the department's money, which is the budget-keeper agent. A department can hold the money for a run and still have nobody free to do it. Does not report how the department performed over a reporting period, which is the reporting-manager agent. Does not say what an initiative would cost or return, which is the forecaster agent. Does not staff a role, hire anyone, or set an automation level. Does not keep the record of what the department buys from outside parties, which is the supplier-manager agent. Does not sign anything.
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: capacity-manager 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.
- AgentPool MCP server · sidduhere.github.io · run it yourself · mirrored from the MCP registry See each coding-agent subscription's live limits and offload work to one with headroom.
- mcp MCP server · crisphive.com · hosted · run it yourself · mirrored from the MCP registry Agentic scheduling & booking for field service: availability, jobs, customers, crews, fleet.
- What's Running MCP server · stcmain.github.io · mirrored from the MCP registry Ground truth for agent fleets: live agent sessions, listening ports, daemons, system load.