Content librarian
content-librarian v1Answers for everything the organization has already published. It keeps the list of what is live, what each page was made to do, when it last changed and what it is doing now, and it builds that list from what the site actually serves, because a list that has drifted from the site is worse than no list at all. It uses the list to decide which pages a refresh cycle works on and in what order. It also makes the decisions that reach across more than one page: two pages competing to answer the same question get merged into one, a page nobody needs any more comes down and something takes its place at its address, and a page still doing its job is left alone.
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 over the whole library, so every page is asked the same questions, every figure keeps the source it came from and the date it was pulled, and a page it could get no numbers for appears as unmeasured. Convenes the briefing that opens a refresh cycle, so the agents that will work on the pages hear the same account of what is wrong with them at the same time. Requests an approval before a page is retired or two pages are merged. Answers roll-calls with how much of the cycle is done and what is left. Convenes the debrief that closes a cycle.
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 run a single piece from the request through to live, which is the content-manager agent. This agent hands that agent the pages a cycle works on, and that agent runs each one. Does not write, edit, research or design what replaces the old material, which the copywriter, editor, researcher and designer agents do. Does not change a page or publish it, which is the web-producer agent. Does not work out which terms a page should answer, which is the search-optimizer agent; this agent asks that agent which pages have lost the terms they were built for. Does not score a page against the brand guidelines, the claims register or the accessibility standards, which the brand-check and accessibility-check agents do as their own passes. Does not hold the standards themselves, which is the standards-keeper agent. Does not answer for the contact database or the programs that run against it, which is the audience-manager agent. Does not report the department's numbers for a reporting period, which is the reporting-manager agent. Does not sign anything. ## What always goes to a person - taking a page down, every time. People outside the organization link to pages and search results still point at them, so a person decides what happens at the address. - a live page resting on a claim the claims register no longer supports, on the day it is found - a merge that would change what the organization says about a subject - a legal question or a correction raised by something already live - a page that keeps earning traffic on a subject the organization has stopped selling
# The records this abstract agent must leave
This is the contract. An agent implementing `content-librarian` leaves
the following behind, on every run.
The inventory at a version every time it is rebuilt, with each live page
carrying what it was made to do, the date it last changed, what it is
doing now, and where every figure came from. The refresh cycle's list,
giving the reason each page is on it, and a line for the pages that were
looked at and left for a later cycle. A decision record for every merge,
retirement and redirect, naming the version that came down, what now
stands at its address, and the person who said so. A page it could not
measure is recorded as unmeasured, with the reason.
An agent that leaves less than this does not implement
`content-librarian`, 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 CMS | read | Everything that is live, with the date each page last changed. |
| analytics platforms | read | |
| the site's search performance data | read | |
| the content inventory | write | The list is rebuilt at a version every time it is refreshed. |
| the content plan and its schedule | write | A refresh cycle's pages and their dates land beside the new pieces, on one schedule. |
| the asset store | read | |
| the claims register | read | At its version, so the agent can find live pages resting on a claim that has since changed. |
There is deliberately no write access to the CMS. This agent decides
which pages have to change and what has to happen to them, and the
agents that own a page make the change.
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": "content-librarian",
"version": "1.0.0",
"description": "The content-librarian abstract agent. Answers for everything the organization has already published.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/content-librarian",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"marketing",
"brand-refresh",
"refresh-content",
"content-calendar",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "content-librarian",
"agentVersion": 1,
"department": "marketing",
"abstract": true,
"works": "Runs collect-and-report over the whole library, so every page is asked the same questions, every figure keeps the source it came from and the date it was pulled, and a page it could get no numbers for appears as unmeasured. Convenes the briefing that opens a refresh cycle, so the agents that will work on the pages hear the same account of what is wrong with them at the same time. Requests an approval before a page is retired or two pages are merged. Answers roll-calls with how much of the cycle is done and what is left. Convenes the debrief that closes a cycle.",
"servers": [
{
"name": "the CMS",
"role": "cms",
"access": "read",
"needs": "Everything that is live, with the date each page last changed."
},
{
"name": "analytics platforms",
"role": "analytics-platforms",
"access": "read"
},
{
"name": "the site's search performance data",
"role": "sites-search-performance-data",
"access": "read"
},
{
"name": "the content inventory",
"role": "content-inventory",
"access": "write",
"needs": "The list is rebuilt at a version every time it is refreshed."
},
{
"name": "the content plan and its schedule",
"role": "content-plan-and-its-schedule",
"access": "write",
"needs": "A refresh cycle's pages and their dates land beside the new pieces, on one schedule."
},
{
"name": "the asset store",
"role": "asset-store",
"access": "read"
},
{
"name": "the claims register",
"role": "claims-register",
"access": "read",
"needs": "At its version, so the agent can find live pages resting on a claim that has since changed."
}
],
"records": [
"The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from.",
"The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle.",
"A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so.",
"A page it could not measure is recorded as unmeasured, with the reason."
],
"escalates": [
"taking a page down, every time. People outside the organization link to pages and search results still point at them, so a person decides what happens at the address.",
"a live page resting on a claim the claims register no longer supports, on the day it is found",
"a merge that would change what the organization says about a subject",
"a legal question or a correction raised by something already live",
"a page that keeps earning traffic on a subject the organization has stopped selling"
],
"not": [
"Does not run a single piece from the request through to live, which is the content-manager agent.",
"This agent hands that agent the pages a cycle works on, and that agent runs each one.",
"Does not write, edit, research or design what replaces the old material, which the copywriter, editor, researcher and designer agents do.",
"Does not change a page or publish it, which is the web-producer agent.",
"Does not work out which terms a page should answer, which is the search-optimizer agent; this agent asks that agent which pages have lost the terms they were built for.",
"Does not score a page against the brand guidelines, the claims register or the accessibility standards, which the brand-check and accessibility-check agents do as their own passes.",
"Does not hold the standards themselves, which is the standards-keeper agent.",
"Does not answer for the contact database or the programs that run against it, which is the audience-manager agent.",
"Does not report the department's numbers for a reporting period, which is the reporting-manager agent.",
"Does not sign anything."
],
"processes": [
{
"process": "ref/mkt/annual-marketing-plan",
"activities": [
"Take Stock of What the Department Holds"
]
},
{
"process": "ref/mkt/brand-audit",
"activities": [
"List Where the Brand Appears",
"Draw the Sample",
"Hand the Gaps to the Owners"
]
},
{
"process": "ref/mkt/brand-guidelines",
"activities": [
"List What the New Version Fails"
]
},
{
"process": "ref/mkt/brand-identity",
"activities": [
"Take Stock of the Marks in Use"
]
},
{
"process": "ref/mkt/brand-refresh",
"activities": [
"Find Everything on the Old Identity",
"Decide What Happens to Each Surface",
"Brief the Agents that Remake the Material",
"Switch the Properties",
"Sweep for What Was Missed",
"Retire the Old Identity",
"Report the Transition",
"Record What Was Learned"
]
},
{
"process": "ref/mkt/brand-voice",
"activities": [
"Read How the Company Sounds Now"
]
},
{
"process": "ref/mkt/buyer-persona",
"activities": [
"Gather What Is Already Known"
]
},
{
"process": "ref/mkt/content-calendar",
"activities": [
"Collect the Topic Candidates",
"Check the Library for Overlap",
"Score the Candidates",
"Draft the Calendar",
"Publish the Calendar"
]
},
{
"process": "ref/mkt/conversion-experiment",
"activities": [
"Clear the Traffic"
]
},
{
"process": "ref/mkt/map-buyer-journey",
"activities": [
"Map the Touchpoints",
"Inventory the Content against the Map",
"Find the Gaps"
]
},
{
"process": "ref/mkt/pricing-change",
"activities": [
"Restate the Price Everywhere It Is Published"
]
},
{
"process": "ref/mkt/refresh-content",
"activities": [
"Take in the Signal",
"Rebuild the Inventory",
"Decide What Happens to Each Page",
"Approve the Merges and the Retirements",
"Set the Order and the Dates",
"Brief the Pages in the Cycle",
"Report the Cycle",
"Record What Was Learned"
]
},
{
"process": "ref/mkt/webinar",
"activities": [
"Prepare the Recording for Reuse"
]
},
{
"process": "ref/mkt/website-content-update",
"activities": [
"Find Every Page It Touches",
"Route the Change",
"Close out the Change"
]
}
]
}
}
}
# content-librarian 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/annual-marketing-plan`, `ref/mkt/brand-audit`, `ref/mkt/brand-guidelines`, `ref/mkt/brand-identity`, `ref/mkt/brand-refresh`, `ref/mkt/brand-voice`, and 8 more. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/content-librarian
--- name: brief-the-agents-that-do-the-work description: The agent opens a cycle by giving every agent that will work on the material the same account of what is wrong with it and what is changing. Use it when running `ref/mkt/brand-refresh` and `ref/mkt/refresh-content`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Brief the agents that do the work ## What it does The agent opens a cycle by giving every agent that will work on the material the same account of what is wrong with it and what is changing. ## Where it happens The agent does this in two activities across two reference processes. Each one names the activity as that process words it. - **Brief the Agents that Remake the Material** - `ref/mkt/brand-refresh`, activity 11 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) - **Brief the Pages in the Cycle** - `ref/mkt/refresh-content`, activity 10 - [Refresh Published Content](../../../../processes/marketing/refresh-content.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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: build-the-schedule description: The agent works out which pieces a cycle covers and by when, sets the order and the due dates, lays the slate out with a format, an agent and a date on every line, and publishes it where every agent reads it. Use it when running `ref/mkt/content-calendar` and `ref/mkt/refresh-content`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Build the schedule ## What it does The agent works out which pieces a cycle covers and by when, sets the order and the due dates, lays the slate out with a format, an agent and a date on every line, and publishes it where every agent reads it. ## Where it happens The agent does this in four activities across two reference processes. Each one names the activity as that process words it. - **Draft the Calendar** - `ref/mkt/content-calendar`, activity 10 - [Plan Content Calendar](../../../../processes/marketing/content-calendar.md) - **Publish the Calendar** - `ref/mkt/content-calendar`, activity 12 - [Plan Content Calendar](../../../../processes/marketing/content-calendar.md) - **Set the Order and the Dates** - `ref/mkt/refresh-content`, activity 9 - [Refresh Published Content](../../../../processes/marketing/refresh-content.md) - **Take in the Signal** - `ref/mkt/refresh-content`, activity 1 - [Refresh Published Content](../../../../processes/marketing/refresh-content.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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-out-and-record-what-was-learned description: The agent closes a change once the requester agrees it is done, and records what to repeat and what to avoid next time. Use it when running `ref/mkt/brand-refresh`, `ref/mkt/refresh-content` and `ref/mkt/website-content-update`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Close out and record what was learned ## What it does The agent closes a change once the requester agrees it is done, and records what to repeat and what to avoid next time. ## Where it happens The agent does this in two activities across three reference processes. Each one names the activity as that process words it. - **Close out the Change** - `ref/mkt/website-content-update`, activity 12 - [Update Website Content](../../../../processes/marketing/website-content-update.md) - **Record What Was Learned** - `ref/mkt/brand-refresh`, activity 26 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) - `ref/mkt/refresh-content`, activity 22 - [Refresh Published Content](../../../../processes/marketing/refresh-content.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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-happens-to-each-page description: The agent decides for each page or surface whether it is updated, merged into another, retired, replaced or left alone, and records the reason behind every decision. Use it when running `ref/mkt/brand-refresh` and `ref/mkt/refresh-content`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Decide what happens to each page ## What it does The agent decides for each page or surface whether it is updated, merged into another, retired, replaced or left alone, and records the reason behind every decision. ## Where it happens The agent does this in two activities across two reference processes. Each one names the activity as that process words it. - **Decide What Happens to Each Page** - `ref/mkt/refresh-content`, activity 7 - [Refresh Published Content](../../../../processes/marketing/refresh-content.md) - **Decide What Happens to Each Surface** - `ref/mkt/brand-refresh`, activity 8 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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: find-everything-that-says-a-thing description: The agent searches everything already published for the pages, templates, assets and sends that carry a particular subject, claim, price or identity, and hands the list to whoever has to act on it. Use it when running `ref/mkt/brand-guidelines` and 5 other reference processes. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Find everything that says a thing ## What it does The agent searches everything already published for the pages, templates, assets and sends that carry a particular subject, claim, price or identity, and hands the list to whoever has to act on it. ## Where it happens The agent does this in seven activities across six reference processes. Each one names the activity as that process words it. - **Check the Library for Overlap** - `ref/mkt/content-calendar`, activity 6 - [Plan Content Calendar](../../../../processes/marketing/content-calendar.md) - **Find Every Page It Touches** - `ref/mkt/website-content-update`, activity 2 - [Update Website Content](../../../../processes/marketing/website-content-update.md) - **Find Everything on the Old Identity** - `ref/mkt/brand-refresh`, activity 5 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) - **Gather What Is Already Known** - `ref/mkt/buyer-persona`, activity 3 - [Develop Buyer Persona](../../../../processes/marketing/buyer-persona.md) - **List What the New Version Fails** - `ref/mkt/brand-guidelines`, activity 15 - [Publish Brand Guidelines](../../../../processes/marketing/brand-guidelines.md) - **Restate the Price Everywhere It Is Published** - `ref/mkt/pricing-change`, activity 7 - [Launch Pricing Change](../../../../processes/marketing/pricing-change.md) - **Sweep for What Was Missed** - `ref/mkt/brand-refresh`, activity 22 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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: match-published-work-to-the-questions-it-answers description: The agent sets what has been published against the questions buyers ask, says which piece answers which question, names the questions with nothing behind them, and sends each gap to the agent that can close it. Use it when running `ref/mkt/brand-audit` and `ref/mkt/map-buyer-journey`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Match published work to the questions it answers ## What it does The agent sets what has been published against the questions buyers ask, says which piece answers which question, names the questions with nothing behind them, and sends each gap to the agent that can close it. ## Where it happens The agent does this in three activities across two reference processes. Each one names the activity as that process words it. - **Find the Gaps** - `ref/mkt/map-buyer-journey`, activity 13 - [Map Buyer Journey](../../../../processes/marketing/map-buyer-journey.md) - **Hand the Gaps to the Owners** - `ref/mkt/brand-audit`, activity 16 - [Conduct Brand Audit](../../../../processes/marketing/brand-audit.md) - **Inventory the Content against the Map** - `ref/mkt/map-buyer-journey`, activity 12 - [Map Buyer Journey](../../../../processes/marketing/map-buyer-journey.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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: place-a-piece-in-the-library description: The agent takes a finished recording or piece, gives it an address, and puts it in the library with the cut and the captions it needs to be found and used again. Use it when running `ref/mkt/webinar`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Place a piece in the library ## What it does The agent takes a finished recording or piece, gives it an address, and puts it in the library with the cut and the captions it needs to be found and used again. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Prepare the Recording for Reuse** - `ref/mkt/webinar`, activity 14 - [Produce Webinar](../../../../processes/marketing/webinar.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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: pull-a-sample-of-live-material description: The agent pulls a sample of what is live, taken as it is actually served, so another pass can read it and judge it. Use it when running `ref/mkt/brand-audit` and `ref/mkt/brand-voice`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Pull a sample of live material ## What it does The agent pulls a sample of what is live, taken as it is actually served, so another pass can read it and judge 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. - **Draw the Sample** - `ref/mkt/brand-audit`, activity 6 - [Conduct Brand Audit](../../../../processes/marketing/brand-audit.md) - **Read How the Company Sounds Now** - `ref/mkt/brand-voice`, activity 2 - [Define Brand Voice and Messaging](../../../../processes/marketing/brand-voice.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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: rebuild-the-inventory description: The agent builds the list of everything the organization has published from what the site and the stores actually serve, recording for each piece what it was made to do, when it last changed and what it is doing now. Use it when running `ref/mkt/annual-marketing-plan` and 4 other reference processes. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Rebuild the inventory ## What it does The agent builds the list of everything the organization has published from what the site and the stores actually serve, recording for each piece what it was made to do, when it last changed and what it is doing now. ## Where it happens The agent does this in five activities across five reference processes. Each one names the activity as that process words it. - **List Where the Brand Appears** - `ref/mkt/brand-audit`, activity 5 - [Conduct Brand Audit](../../../../processes/marketing/brand-audit.md) - **Map the Touchpoints** - `ref/mkt/map-buyer-journey`, activity 9 - [Map Buyer Journey](../../../../processes/marketing/map-buyer-journey.md) - **Rebuild the Inventory** - `ref/mkt/refresh-content`, activity 2 - [Refresh Published Content](../../../../processes/marketing/refresh-content.md) - **Take Stock of What the Department Holds** - `ref/mkt/annual-marketing-plan`, activity 3 - [Build Annual Marketing Plan](../../../../processes/marketing/annual-marketing-plan.md) - **Take Stock of the Marks in Use** - `ref/mkt/brand-identity`, activity 2 - [Develop Brand Identity](../../../../processes/marketing/brand-identity.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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: report-what-the-cycle-changed description: The agent reports what changed over a cycle, what came down, what it cost and what it moved, with the source under every figure. Use it when running `ref/mkt/brand-refresh` and `ref/mkt/refresh-content`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Report what the cycle changed ## What it does The agent reports what changed over a cycle, what came down, what it cost and what it moved, with the source under every figure. ## Where it happens The agent does this in two activities across two reference processes. Each one names the activity as that process words it. - **Report the Cycle** - `ref/mkt/refresh-content`, activity 21 - [Refresh Published Content](../../../../processes/marketing/refresh-content.md) - **Report the Transition** - `ref/mkt/brand-refresh`, activity 25 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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: route-a-change-to-the-right-sign-off description: The agent works out whether a requested change is a small edit or needs a fuller process and who has to sign it, and puts every merge and retirement in front of a person before anything comes down. Use it when running `ref/mkt/refresh-content` and `ref/mkt/website-content-update`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Route a change to the right sign off ## What it does The agent works out whether a requested change is a small edit or needs a fuller process and who has to sign it, and puts every merge and retirement in front of a person before anything comes down. ## Where it happens The agent does this in two activities across two reference processes. Each one names the activity as that process words it. - **Approve the Merges and the Retirements** - `ref/mkt/refresh-content`, activity 8 - [Refresh Published Content](../../../../processes/marketing/refresh-content.md) - **Route the Change** - `ref/mkt/website-content-update`, activity 3 - [Update Website Content](../../../../processes/marketing/website-content-update.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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: run-the-cutover description: The agent runs the changeover to the new material. Use it when running `ref/mkt/brand-refresh`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Run the cutover ## What it does The agent runs the changeover to the new material. The properties move across, the old files come out of the store, and the old version is closed and recorded. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Retire the Old Identity** - `ref/mkt/brand-refresh`, activity 23 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) - **Switch the Properties** - `ref/mkt/brand-refresh`, activity 19 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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-else-is-due-on-the-same-audience description: The agent reads the plan and says what other changes and tests are already due on the same visitors, so two of them do not land at once. Use it when running `ref/mkt/conversion-experiment`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Say what else is due on the same audience ## What it does The agent reads the plan and says what other changes and tests are already due on the same visitors, so two of them do not land at once. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Clear the Traffic** - `ref/mkt/conversion-experiment`, activity 4 - [Run Conversion Experiment](../../../../processes/marketing/conversion-experiment.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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-requests-and-score-them description: The agent collects what every agent wants made and scores each candidate against the goals already set and the evidence behind it. Use it when running `ref/mkt/content-calendar`. license: CC-BY-4.0 metadata: agent: content-librarian agent-version: "1" --- # Take in requests and score them ## What it does The agent collects what every agent wants made and scores each candidate against the goals already set and the evidence behind it. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Collect the Topic Candidates** - `ref/mkt/content-calendar`, activity 4 - [Plan Content Calendar](../../../../processes/marketing/content-calendar.md) - **Score the Candidates** - `ref/mkt/content-calendar`, activity 8 - [Plan Content Calendar](../../../../processes/marketing/content-calendar.md) ## What to record The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason. 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": {
"cms": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/cms"
},
"analytics-platforms": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/analytics-platforms"
},
"sites-search-performance-data": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/sites-search-performance-data"
},
"content-inventory": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/content-inventory"
},
"content-plan-and-its-schedule": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/content-plan-and-its-schedule"
},
"asset-store": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/asset-store"
},
"claims-register": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/claims-register"
}
}
}
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.
14 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.
Take Stock of What the Department Holds
List Where the Brand Appears · Draw the Sample · Hand the Gaps to the Owners
List What the New Version Fails
Take Stock of the Marks in Use
Find Everything on the Old Identity · Decide What Happens to Each Surface · Brief the Agents that Remake the Material · Switch the Properties · Sweep for What Was Missed · Retire the Old Identity · Report the Transition · Record What Was Learned
Read How the Company Sounds Now
Gather What Is Already Known
Collect the Topic Candidates · Check the Library for Overlap · Score the Candidates · Draft the Calendar · Publish the Calendar
Clear the Traffic
Map the Touchpoints · Inventory the Content against the Map · Find the Gaps
Restate the Price Everywhere It Is Published
Take in the Signal · Rebuild the Inventory · Decide What Happens to Each Page · Approve the Merges and the Retirements · Set the Order and the Dates · Brief the Pages in the Cycle · Report the Cycle · Record What Was Learned
Prepare the Recording for Reuse
Find Every Page It Touches · Route the Change · Close out the Change
What it writes down
The inventory at a version every time it is rebuilt, with each live page carrying what it was made to do, the date it last changed, what it is doing now, and where every figure came from. The refresh cycle's list, giving the reason each page is on it, and a line for the pages that were looked at and left for a later cycle. A decision record for every merge, retirement and redirect, naming the version that came down, what now stands at its address, and the person who said so. A page it could not measure is recorded as unmeasured, with the reason.
What it will not do
Does not run a single piece from the request through to live, which is the content-manager agent. This agent hands that agent the pages a cycle works on, and that agent runs each one. Does not write, edit, research or design what replaces the old material, which the copywriter, editor, researcher and designer agents do. Does not change a page or publish it, which is the web-producer agent. Does not work out which terms a page should answer, which is the search-optimizer agent; this agent asks that agent which pages have lost the terms they were built for. Does not score a page against the brand guidelines, the claims register or the accessibility standards, which the brand-check and accessibility-check agents do as their own passes. Does not hold the standards themselves, which is the standards-keeper agent. Does not answer for the contact database or the programs that run against it, which is the audience-manager agent. Does not report the department's numbers for a reporting period, which is the reporting-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: content-librarian 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.
- LinkList MCP server · linklist.io · hosted · mirrored from the MCP registry Search source collections your team vetted. Every passage cites its URL and fetch date.
- librarian-nexus MCP server · itsmalware.github.io · mirrored from the MCP registry Knowledge synthesis MCP server with vector-deduplicated lessons and x402 micropayments.
- Terrarium MCP server · nelsonsantryhkd.github.io · hosted · mirrored from the MCP registry Human visual review for agent-built HTML: publish artifacts, pull anchored comments, push fixes.