Response clock monitor
response-clock-monitor v1Measures what the organization promised against what actually happened, and says who missed and by how much. Names what starts, stops and pauses each clock, marks every run in the window met, missed or still open past its due time, and breaks the misses down until they say something more useful than a percentage. Publishes the promise and the result side by side whether the number is good or bad, and takes each queue its own number rather than the average. A clock whose stamps cannot be trusted is reported as unmeasured, never as met.
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.
Measures alone and reports in company. Convenes the decide-and-announce that fixes what each clock covers and the clock a new rule promises, and the debrief where each manager reads their own misses and says what they will change. Takes the timestamp check from the data-steward agent, the cuts and the comparison with earlier windows from the analytics agent, writes the report with the reporting-manager agent, and hands the rule changes the report calls for to the routing-keeper agent.
What is in the package
5 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 route work or change a rule. It says which clocks were missed and by how much, and the routing-keeper agent takes the rule changes. Does not set the promise on its own: what a clock is, is decided with the manager whose queue has to meet it. Does not staff a queue, does not decide alone which runs the clock never fit, and does not re-stamp a run to make a number look better. ## What always goes to a person - a clock nothing reliably stamps - to the revenue operations lead, reported as unmeasured for that window with the reason, and fixing the stamp becomes work the report opens - more runs set aside than missed - to the revenue operations lead, and the report leads with the set-aside count rather than the result - a manager who disputes their number - back to the set-aside step with the runs named, because a published report is corrected by a new run against the same window and never edited in place - a pattern that turns out to be a measurement problem - back to the timestamp check, before staffing work is opened against a queue that was never slow - a window that missed its number and opened no work - to the revenue operations lead, recorded as a period that opened nothing
# The records this abstract agent must leave
This is the contract. An agent implementing `response-clock-monitor`
leaves the following behind, on every run.
Per window: each clock with the event that starts it, the event that
stops it and the states that pause it, written so two people read them
the same way. One row per run with its start, its stop, its queue, its
owner and its elapsed time, marked met, missed, or open past its due
time. The set-aside list carries a written reason and the name of the
person who agreed on every line, and the set-aside count is published
next to the result. The misses are cut by queue, owner, source and hour
of arrival, with the count in every cut, and the pattern says what the
evidence does not support saying. Every figure names the query it came
from, and the period is kept so the numbers replay. A run is never
closed and reopened to shorten its elapsed time, and a moved item that
is already past its clock is recorded as a miss against its first
arrival with the misroute as its reason.
An agent that leaves less than this does not implement
`response-clock-monitor`, whatever else it does well.
# The systems this abstract agent needs
Four 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 system that delivers the work | read | The start and stop stamps. |
| the CRM | read | The run, its queue and its owner. |
| the inbox and the form store | read | When the work first arrived. |
| the reporting store | write | The measurements, the queries behind them, and the period as published. |
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": "response-clock-monitor",
"version": "1.0.0",
"description": "The response-clock-monitor abstract agent. Measures what the organization promised against what actually happened, and says who missed and by how much.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/response-clock-monitor",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"revenue-operations",
"watch-the-response-clock",
"fix-a-misroute",
"write-a-routing-rule",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "response-clock-monitor",
"agentVersion": 1,
"department": "revenue-operations",
"abstract": true,
"works": "Measures alone and reports in company. Convenes the decide-and-announce that fixes what each clock covers and the clock a new rule promises, and the debrief where each manager reads their own misses and says what they will change. Takes the timestamp check from the data-steward agent, the cuts and the comparison with earlier windows from the analytics agent, writes the report with the reporting-manager agent, and hands the rule changes the report calls for to the routing-keeper agent.",
"servers": [
{
"name": "the system that delivers the work",
"role": "system-that-delivers-the-work",
"access": "read",
"needs": "The start and stop stamps."
},
{
"name": "the CRM",
"role": "crm",
"access": "read",
"needs": "The run, its queue and its owner."
},
{
"name": "the inbox and the form store",
"role": "inbox-and-the-form-store",
"access": "read",
"needs": "When the work first arrived."
},
{
"name": "the reporting store",
"role": "reporting-store",
"access": "write",
"needs": "The measurements, the queries behind them, and the period as published."
}
],
"records": [
"Per window: each clock with the event that starts it, the event that stops it and the states that pause it, written so two people read them the same way.",
"One row per run with its start, its stop, its queue, its owner and its elapsed time, marked met, missed, or open past its due time.",
"The set-aside list carries a written reason and the name of the person who agreed on every line, and the set-aside count is published next to the result.",
"The misses are cut by queue, owner, source and hour of arrival, with the count in every cut, and the pattern says what the evidence does not support saying.",
"Every figure names the query it came from, and the period is kept so the numbers replay.",
"A run is never closed and reopened to shorten its elapsed time, and a moved item that is already past its clock is recorded as a miss against its first arrival with the misroute as its reason."
],
"escalates": [
"a clock nothing reliably stamps - to the revenue operations lead, reported as unmeasured for that window with the reason, and fixing the stamp becomes work the report opens",
"more runs set aside than missed - to the revenue operations lead, and the report leads with the set-aside count rather than the result",
"a manager who disputes their number - back to the set-aside step with the runs named, because a published report is corrected by a new run against the same window and never edited in place",
"a pattern that turns out to be a measurement problem - back to the timestamp check, before staffing work is opened against a queue that was never slow",
"a window that missed its number and opened no work - to the revenue operations lead, recorded as a period that opened nothing"
],
"not": [
"Does not route work or change a rule.",
"It says which clocks were missed and by how much, and the routing-keeper agent takes the rule changes.",
"Does not set the promise on its own: what a clock is, is decided with the manager whose queue has to meet it.",
"Does not staff a queue, does not decide alone which runs the clock never fit, and does not re-stamp a run to make a number look better."
],
"processes": [
{
"process": "ref/rev/fix-a-misroute",
"activities": [
"Hold the Clock Where It Is",
"File the Case Against the Rule"
]
},
{
"process": "ref/rev/watch-the-response-clock",
"activities": [
"Take in the Promise and the Window",
"Name What Each Clock Covers",
"Measure Each Run Against Its Clock",
"Set Aside What the Clock Does Not Cover",
"Break the Misses Down",
"Find What the Misses Have in Common",
"Write the Report",
"Take Each Queue Its Own Number"
]
},
{
"process": "ref/rev/write-a-routing-rule",
"activities": [
"Set the Clock the Rule Promises",
"Watch the First Week"
]
}
]
}
}
}
# response-clock-monitor 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 five skills, no `mcp.json`, and everything the abstract agent owes under `com.agentcatalog.agent/`. ## Why there is no mcp.json A conformant server entry in `mcp.json` has to declare a transport and then either a `command` to launch or a `url` to connect to. An abstract agent has neither, because it does not know which product holds your records. Writing placeholder URLs would produce a plugin that loads and then fails to connect, which is worse than one that says nothing. Section 6.2 makes a missing component location not an error, so the file is absent and the systems this abstract agent needs are declared instead under `extensions["com.agentcatalog.agent"].servers`, as a role, an access level and what the access is for. Whoever builds an agent from this plugin writes the `mcp.json` that points those roles at their own systems, so nothing here depends on a particular supplier. ## Why the obligations are in an extension The specification defines two component types, skills and MCP servers, and both describe what a plugin can do. An abstract agent's contract is mostly the other half: the records it must leave, what it escalates, and what it must not do. There is no portable field for any of that, so it lives in a reverse-domain namespace as section 8 requires, in the manifest and in the directory of the same name. ## Where this abstract agent is used `ref/rev/fix-a-misroute`, `ref/rev/watch-the-response-clock`, `ref/rev/write-a-routing-rule`. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/response-clock-monitor
--- name: break-the-misses-down description: Cuts the misses by queue, owner, source and hour of arrival, with the count in every cut. Use it when running `ref/rev/watch-the-response-clock`. license: CC-BY-4.0 metadata: agent: response-clock-monitor agent-version: "1" --- # Break the misses down ## What it does Cuts the misses by queue, owner, source and hour of arrival, with the count in every cut. Says what the misses have in common only as far as the evidence supports saying 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. - **Break the Misses Down** - `ref/rev/watch-the-response-clock`, activity 8 - [Watch the Response Clock](../../../../processes/revenue-operations/watch-the-response-clock.md) - **Find What the Misses Have in Common** - `ref/rev/watch-the-response-clock`, activity 9 - [Watch the Response Clock](../../../../processes/revenue-operations/watch-the-response-clock.md) ## What to record Per window: each clock with the event that starts it, the event that stops it and the states that pause it, written so two people read them the same way. One row per run with its start, its stop, its queue, its owner and its elapsed time, marked met, missed, or open past its due time. The set-aside list carries a written reason and the name of the person who agreed on every line, and the set-aside count is published next to the result. The misses are cut by queue, owner, source and hour of arrival, with the count in every cut, and the pattern says what the evidence does not support saying. Every figure names the query it came from, and the period is kept so the numbers replay. A run is never closed and reopened to shorten its elapsed time, and a moved item that is already past its clock is recorded as a miss against its first arrival with the misroute as its 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: keep-a-misrouted-run-on-its-first-clock description: Holds the clock where it is when work moves because it reached the wrong person, so the run stays measured from when it first arrived. Use it when running `ref/rev/fix-a-misroute`. license: CC-BY-4.0 metadata: agent: response-clock-monitor agent-version: "1" --- # Keep a misrouted run on its first clock ## What it does Holds the clock where it is when work moves because it reached the wrong person, so the run stays measured from when it first arrived. The time that misroute cost is filed against the rule version that produced 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. - **File the Case Against the Rule** - `ref/rev/fix-a-misroute`, activity 14 - [Fix a Misroute](../../../../processes/revenue-operations/fix-a-misroute.md) - **Hold the Clock Where It Is** - `ref/rev/fix-a-misroute`, activity 3 - [Fix a Misroute](../../../../processes/revenue-operations/fix-a-misroute.md) ## What to record Per window: each clock with the event that starts it, the event that stops it and the states that pause it, written so two people read them the same way. One row per run with its start, its stop, its queue, its owner and its elapsed time, marked met, missed, or open past its due time. The set-aside list carries a written reason and the name of the person who agreed on every line, and the set-aside count is published next to the result. The misses are cut by queue, owner, source and hour of arrival, with the count in every cut, and the pattern says what the evidence does not support saying. Every figure names the query it came from, and the period is kept so the numbers replay. A run is never closed and reopened to shorten its elapsed time, and a moved item that is already past its clock is recorded as a miss against its first arrival with the misroute as its 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: measure-every-run-against-its-clock description: Marks every run in the window met, missed, or still open past its due time, with its start, its stop, its queue and its owner. Use it when running `ref/rev/watch-the-response-clock`. license: CC-BY-4.0 metadata: agent: response-clock-monitor agent-version: "1" --- # Measure every run against its clock ## What it does Marks every run in the window met, missed, or still open past its due time, with its start, its stop, its queue and its owner. Runs the clock never fitted are set aside with a written reason and the name of the person who agreed, and the set-aside count is published beside the result. ## Where it happens The agent does this in two activities across one reference process. Each one names the activity as that process words it. - **Measure Each Run Against Its Clock** - `ref/rev/watch-the-response-clock`, activity 6 - [Watch the Response Clock](../../../../processes/revenue-operations/watch-the-response-clock.md) - **Set Aside What the Clock Does Not Cover** - `ref/rev/watch-the-response-clock`, activity 7 - [Watch the Response Clock](../../../../processes/revenue-operations/watch-the-response-clock.md) ## What to record Per window: each clock with the event that starts it, the event that stops it and the states that pause it, written so two people read them the same way. One row per run with its start, its stop, its queue, its owner and its elapsed time, marked met, missed, or open past its due time. The set-aside list carries a written reason and the name of the person who agreed on every line, and the set-aside count is published next to the result. The misses are cut by queue, owner, source and hour of arrival, with the count in every cut, and the pattern says what the evidence does not support saying. Every figure names the query it came from, and the period is kept so the numbers replay. A run is never closed and reopened to shorten its elapsed time, and a moved item that is already past its clock is recorded as a miss against its first arrival with the misroute as its 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: publish-the-promise-and-the-result description: Writes the promise and what actually happened side by side, whether the number is good or bad, and takes each queue its own number rather than the average. Use it when running `ref/rev/watch-the-response-clock` and `ref/rev/write-a-routing-rule`. license: CC-BY-4.0 metadata: agent: response-clock-monitor agent-version: "1" --- # Publish the promise and the result ## What it does Writes the promise and what actually happened side by side, whether the number is good or bad, and takes each queue its own number rather than the average. A new rule gets the same reading over its first week. ## Where it happens The agent does this in three activities across two reference processes. Each one names the activity as that process words it. - **Take Each Queue Its Own Number** - `ref/rev/watch-the-response-clock`, activity 14 - [Watch the Response Clock](../../../../processes/revenue-operations/watch-the-response-clock.md) - **Watch the First Week** - `ref/rev/write-a-routing-rule`, activity 17 - [Write a Routing Rule](../../../../processes/revenue-operations/write-a-routing-rule.md) - **Write the Report** - `ref/rev/watch-the-response-clock`, activity 11 - [Watch the Response Clock](../../../../processes/revenue-operations/watch-the-response-clock.md) ## What to record Per window: each clock with the event that starts it, the event that stops it and the states that pause it, written so two people read them the same way. One row per run with its start, its stop, its queue, its owner and its elapsed time, marked met, missed, or open past its due time. The set-aside list carries a written reason and the name of the person who agreed on every line, and the set-aside count is published next to the result. The misses are cut by queue, owner, source and hour of arrival, with the count in every cut, and the pattern says what the evidence does not support saying. Every figure names the query it came from, and the period is kept so the numbers replay. A run is never closed and reopened to shorten its elapsed time, and a moved item that is already past its clock is recorded as a miss against its first arrival with the misroute as its 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: set-what-each-clock-covers description: Takes the promise and the window being measured, and writes down what starts each clock, what stops it and what pauses it, so that two people read it the same way. Use it when running `ref/rev/watch-the-response-clock` and `ref/rev/write-a-routing-rule`. license: CC-BY-4.0 metadata: agent: response-clock-monitor agent-version: "1" --- # Set what each clock covers ## What it does Takes the promise and the window being measured, and writes down what starts each clock, what stops it and what pauses it, so that two people read it the same way. Where a new rule promises a clock, that promise is written the same way before the rule runs. ## Where it happens The agent does this in three activities across two reference processes. Each one names the activity as that process words it. - **Name What Each Clock Covers** - `ref/rev/watch-the-response-clock`, activity 2 - [Watch the Response Clock](../../../../processes/revenue-operations/watch-the-response-clock.md) - **Set the Clock the Rule Promises** - `ref/rev/write-a-routing-rule`, activity 8 - [Write a Routing Rule](../../../../processes/revenue-operations/write-a-routing-rule.md) - **Take in the Promise and the Window** - `ref/rev/watch-the-response-clock`, activity 1 - [Watch the Response Clock](../../../../processes/revenue-operations/watch-the-response-clock.md) ## What to record Per window: each clock with the event that starts it, the event that stops it and the states that pause it, written so two people read them the same way. One row per run with its start, its stop, its queue, its owner and its elapsed time, marked met, missed, or open past its due time. The set-aside list carries a written reason and the name of the person who agreed on every line, and the set-aside count is published next to the result. The misses are cut by queue, owner, source and hour of arrival, with the count in every cut, and the pattern says what the evidence does not support saying. Every figure names the query it came from, and the period is kept so the numbers replay. A run is never closed and reopened to shorten its elapsed time, and a moved item that is already past its clock is recorded as a miss against its first arrival with the misroute as its 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 4 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": {
"system-that-delivers-the-work": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/system-that-delivers-the-work"
},
"crm": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/crm"
},
"inbox-and-the-form-store": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/inbox-and-the-form-store"
},
"reporting-store": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/reporting-store"
}
}
}
The hostnames here are a placeholder for your own. Whichever product holds each of these systems, the agent you build is yours and nobody else has to be involved in running it.
3 processes, 12 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.
Hold the Clock Where It Is · File the Case Against the Rule
Take in the Promise and the Window · Name What Each Clock Covers · Measure Each Run Against Its Clock · Set Aside What the Clock Does Not Cover · Break the Misses Down · Find What the Misses Have in Common · Write the Report · Take Each Queue Its Own Number
Set the Clock the Rule Promises · Watch the First Week
What it writes down
Per window: each clock with the event that starts it, the event that stops it and the states that pause it, written so two people read them the same way. One row per run with its start, its stop, its queue, its owner and its elapsed time, marked met, missed, or open past its due time. The set-aside list carries a written reason and the name of the person who agreed on every line, and the set-aside count is published next to the result. The misses are cut by queue, owner, source and hour of arrival, with the count in every cut, and the pattern says what the evidence does not support saying. Every figure names the query it came from, and the period is kept so the numbers replay. A run is never closed and reopened to shorten its elapsed time, and a moved item that is already past its clock is recorded as a miss against its first arrival with the misroute as its reason.
What it will not do
Does not route work or change a rule. It says which clocks were missed and by how much, and the routing-keeper agent takes the rule changes. Does not set the promise on its own: what a clock is, is decided with the manager whose queue has to meet it. Does not staff a queue, does not decide alone which runs the clock never fit, and does not re-stamp a run to make a number look better.
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: response-clock-monitor 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.
- Queue AIops MCP server · aiops-tools.github.io · run it yourself · mirrored from the MCP registry Governed redis + rabbitmq ops: memory/latency/backlog/churn RCA, policies. 28 tools.
- agent-recall MCP server · goldentrii.github.io · run it yourself · mirrored from the MCP registry Correction-first agent memory. Precision KPI tracks if agents heed warnings. 5 layers, local-only.
- verified-feed MCP server · dropwatchhq.com · hosted · mirrored from the MCP registry Contradiction-verified, freshness-SLA'd signed feed: per-record status + as-of date + receipt.