Sign in
abstract agent · marketing · 14 processes · plugin 1.0.0

Content librarian

content-librarian v1

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

The abstract agent

What it is granted, and what it hands to a person

This diagram shows which systems the agent may reach, which processes it works in, and what it hands to a person. Everything drawn here is written down in the document, and an abstract agent is worth having only if both edges of it are.

WORKS INref/mkt/annual-marketing-planref/mkt/brand-auditref/mkt/brand-guidelinesGRANTEDthe CMSread — everything that is live, with the date analytics platformsreadthe site's search performance datareadthe content inventorywrite — the list is rebuilt at a version everythe content plan and its schedulewrite — a refresh cycle's pages and their datethe asset storereadthe claims registerread — at its version, so the agent can find lTHE ABSTRACT AGENTcontent-librarianv1answers for everything…HANDS TO A PERSONtaking a page down, every…a person decidesa live page resting on a…a person decidesa merge that would change…a person decidesa legal question or a…a person decidesa page that keeps earning…a person decidesMUST FOLLOWcollect-and-reportbriefingapprovaldebriefroll call

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.

The plugin

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.

content-librarian · 19 files · 1.0.0
com.agentcatalog.agent/NOT.mdWhat the agent does not do, and when it asks a person.
# Where this abstract agent stops

Does not 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
com.agentcatalog.agent/RECORDS.mdThe records the agent must leave behind.
# The records this abstract agent must leave

This is the contract. An agent implementing `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.
com.agentcatalog.agent/SERVERS.mdThe systems the agent needs, by role rather than by product.
# The systems this abstract agent needs

Seven systems, named by role rather than by product. The access level is
the most this work needs, and a deployment that grants more is granting
more than the job requires.

| Role | Access | What the access is for |
|---|---|---|
| the 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.
plugin.jsonThe manifest. It lists the skills and the systems the agent needs.
{
  "$schema": "https://agent-plugins.org/schemas/1.1.0/plugin.schema.json",
  "name": "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"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# 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
skills/brief-the-agents-that-do-the-work/SKILL.mdThe 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`.
---
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`.
skills/build-the-schedule/SKILL.mdThe 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`.
---
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`.
skills/close-out-and-record-what-was-learned/SKILL.mdThe 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`.
---
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`.
skills/decide-what-happens-to-each-page/SKILL.mdThe 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`.
---
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`.
skills/find-everything-that-says-a-thing/SKILL.mdThe 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.
---
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`.
skills/match-published-work-to-the-questions-it-answers/SKILL.mdThe 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`.
---
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`.
skills/place-a-piece-in-the-library/SKILL.mdThe 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`.
---
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`.
skills/pull-a-sample-of-live-material/SKILL.mdThe 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`.
---
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`.
skills/rebuild-the-inventory/SKILL.mdThe 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.
---
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`.
skills/report-what-the-cycle-changed/SKILL.mdThe 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`.
---
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`.
skills/route-a-change-to-the-right-sign-off/SKILL.mdThe 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`.
---
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`.
skills/run-the-cutover/SKILL.mdThe agent runs the changeover to the new material. Use it when running `ref/mkt/brand-refresh`.
---
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`.
skills/say-what-else-is-due-on-the-same-audience/SKILL.mdThe 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`.
---
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`.
skills/take-in-requests-and-score-them/SKILL.mdThe 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`.
---
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`.
mcp.jsonNot in the package.

Every server entry in an mcp.json needs either a command to run or a url to connect to, and the package cannot know either of those until somebody points it at their own systems. So the file is left out, the systems the agent needs are named by role in plugin.json, and you write the mcp.json when you set it up.

Setting it up

Point it at your systems

To run an agent built from this package, write an mcp.json that says which of your systems fills each role. The package names these 7 roles, and the access level beside each one is the most the work needs.

cms · readanalytics-platforms · readsites-search-performance-data · readcontent-inventory · writecontent-plan-and-its-schedule · writeasset-store · readclaims-register · read
mcp.json You write this file. It is not part of the package.
{
  "$schema": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
  "mcpServers": {
    "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.

Where it works

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.

Build Annual Marketing Planref/mkt/annual-marketing-plan · 16 activities
12345678910111213141516

Take Stock of What the Department Holds

Conduct Brand Auditref/mkt/brand-audit · 17 activities
1234567891011121314151617

List Where the Brand Appears · Draw the Sample · Hand the Gaps to the Owners

Publish Brand Guidelinesref/mkt/brand-guidelines · 16 activities
12345678910111213141516

List What the New Version Fails

Develop Brand Identityref/mkt/brand-identity · 16 activities
12345678910111213141516

Take Stock of the Marks in Use

Roll Out Brand Refreshref/mkt/brand-refresh · 26 activities
1234567891011121314151617181920212223242526

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

Define Brand Voice and Messagingref/mkt/brand-voice · 19 activities
12345678910111213141516171819

Read How the Company Sounds Now

Develop Buyer Personaref/mkt/buyer-persona · 20 activities
1234567891011121314151617181920

Gather What Is Already Known

Plan Content Calendarref/mkt/content-calendar · 15 activities
123456789101112131415

Collect the Topic Candidates · Check the Library for Overlap · Score the Candidates · Draft the Calendar · Publish the Calendar

Run Conversion Experimentref/mkt/conversion-experiment · 16 activities
12345678910111213141516

Clear the Traffic

Map Buyer Journeyref/mkt/map-buyer-journey · 19 activities
12345678910111213141516171819

Map the Touchpoints · Inventory the Content against the Map · Find the Gaps

Launch Pricing Changeref/mkt/pricing-change · 16 activities
12345678910111213141516

Restate the Price Everywhere It Is Published

Refresh Published Contentref/mkt/refresh-content · 22 activities
12345678910111213141516171819202122

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

Produce Webinarref/mkt/webinar · 18 activities
123456789101112131415161718

Prepare the Recording for Reuse

Update Website Contentref/mkt/website-content-update · 12 activities
123456789101112

Find Every Page It Touches · Route the Change · Close out the Change

The records it leaves

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.

Where it stops

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.

Agents built from this plugin

Who has built one, and how far each one got

Nobody has built one yet. The catalog says so rather than leaving the section off, because an empty list is a fact about the document.

declare it implements: content-librarian v1 One line in your agent's manifest. The catalog checks it against the records your runs actually leave.
A guess, not a claim

The closest things in the catalog, by description

Nobody above has claimed any of these. This is the nearest match by wording between the job written above and what publishers wrote about their own listings, closest first, and wording is not evidence: some of these will be wrong, and a job with nothing suitable still gets whatever was nearest. The publishers have never heard of this abstract agent and have promised nothing about it. What a claim looks like is in the table above, and it is signed.

Might do the job

Things that could be the worker: an agent, a packaged product, a plugin.

  • The Website Specification — A2A agent Agent · specification.website Read-only A2A agent that answers natural-language questions about The Website Specification and returns matching topics with status, canonical URL,…
Might be reached for

Not workers. These are capability that whatever does the job would use, which is a different relationship and kept in its own column for that reason.

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