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

Buy check

buy-check v1

Scores a paid buy against the plan it was placed against and the rules it was bought under, once before the buy is switched on and again after it has delivered. The first pass reads the campaign as it is configured: the audience it targets, the dates and the weight on its plan line, the money on it, the placements it may appear on, and the creative loaded against it. The second pass reads what actually ran and sets it beside what was ordered. Every failure it reports cites the plan line or the rule behind it, so the person reading the report can tell a real problem from somebody's preference.

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/account-based-playref/mkt/display-retargetingref/mkt/reallocate-media-spendGRANTEDthe media planread — at the version the buy was placed againthe rules the buy was placed underread — at their versionsad platformsread — the campaign as configured and what it the placement and delivery recordread — where the ads appeared and how oftenthe exclusion lists in forceread — at their versionsthe asset storereadthe review recordwrite — the verdicts land where the signers anTHE ABSTRACT AGENTbuy-checkv1scores a paid buy…HANDS TO A PERSONevery failure, with the…a person decidesa request to switch on a…a person decidesa buy it cannot match to…a person decidesan ad that appeared…a person decidestwo rules that contradict…a person decidesa delivery record the…a person decidesMUST FOLLOWapprovalassessmentdebriefroll call

The examiner in an assessment: the plan version and the rules are named before scoring starts, every item gets a verdict, and every verdict cites the plan line or the rule it was scored against. Its report is what the approval before switch-on reads. Answers the roll-call before a launch with whether the buy may go live and what is still failing. The media-buyer agent fixes what this agent finds, and this agent scores the fix. The same assessment runs again once the buy has delivered, and that report goes into the debrief that closes it.

The plugin

What is in the package

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

buy-check · 17 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

This agent is not a signer. It produces the score and named people sign.
Does not buy media, change targeting or bids, move budget, or pause a
campaign, which is the media-buyer agent. Does not build the plan it
scores against or move money between its lines, which is the
media-planner agent. Does not check the invoice against what ran, which
is the spend-reconciler agent going line by line through the bill. This
agent says whether the buy matched the plan, and that agent says whether
the charge matched the buy. Does not score the creative against the
brand guidelines or the claims register, which is the brand-check agent,
and does not score it against the disclosure rules in force in a market,
which is the disclosure-check agent. Does not check that a conversion
fires, which is the conversion-tracker agent. Does not say what the buy
returned, which is the analytics agent. Does not decide that a failure
is small enough to run with.

## What always goes to a person

- every failure, with the plan line or the rule attached. This agent
  never waives its own findings.
- a request to switch on a buy with a known failure. A person decides
  that, and the decision is recorded with the failure attached.
- a buy it cannot match to any line in the plan
- an ad that appeared somewhere an exclusion list forbids, on the day it
  is found rather than in the delivery report
- two rules that contradict each other on the same buy
- a delivery record the platform will not give it while the money is
  still being spent
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 `buy-check` leaves the
following behind, on every run.

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

An agent that leaves less than this does not implement `buy-check`,
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 media plan | read | At the version the buy was placed against. |
| the rules the buy was placed under | read | At their versions. |
| ad platforms | read | The campaign as configured and what it delivered. |
| the placement and delivery record | read | Where the ads appeared and how often. |
| the exclusion lists in force | read | At their versions. |
| the asset store | read |  |
| the review record | write | The verdicts land where the signers and the buying agent read them. |

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": "buy-check",
  "version": "1.0.0",
  "description": "The buy-check abstract agent. Scores a paid buy against the plan it was placed against and the rules it was bought under, once before the buy is switched on and again after it has delivered.",
  "author": {
    "name": "AgentCatalog",
    "url": "https://agentcatalog.com"
  },
  "homepage": "https://agentcatalog.com/abstract-agents/buy-check",
  "repository": "https://github.com/jeffrschneider/agentcatalog",
  "license": "CC-BY-4.0",
  "keywords": [
    "abstract-agent",
    "reference",
    "marketing",
    "verify-ad-placement",
    "test-ad-creative",
    "display-retargeting",
    "abstract"
  ],
  "extensions": {
    "com.agentcatalog.agent": {
      "agent": "buy-check",
      "agentVersion": 1,
      "department": "marketing",
      "abstract": true,
      "works": "The examiner in an assessment: the plan version and the rules are named before scoring starts, every item gets a verdict, and every verdict cites the plan line or the rule it was scored against. Its report is what the approval before switch-on reads. Answers the roll-call before a launch with whether the buy may go live and what is still failing. The media-buyer agent fixes what this agent finds, and this agent scores the fix. The same assessment runs again once the buy has delivered, and that report goes into the debrief that closes it.",
      "servers": [
        {
          "name": "the media plan",
          "role": "media-plan",
          "access": "read",
          "needs": "At the version the buy was placed against."
        },
        {
          "name": "the rules the buy was placed under",
          "role": "rules-the-buy-was-placed-under",
          "access": "read",
          "needs": "At their versions."
        },
        {
          "name": "ad platforms",
          "role": "ad-platforms",
          "access": "read",
          "needs": "The campaign as configured and what it delivered."
        },
        {
          "name": "the placement and delivery record",
          "role": "placement-and-delivery-record",
          "access": "read",
          "needs": "Where the ads appeared and how often."
        },
        {
          "name": "the exclusion lists in force",
          "role": "exclusion-lists-in-force",
          "access": "read",
          "needs": "At their versions."
        },
        {
          "name": "the asset store",
          "role": "asset-store",
          "access": "read"
        },
        {
          "name": "the review record",
          "role": "review-record",
          "access": "write",
          "needs": "The verdicts land where the signers and the buying agent read them."
        }
      ],
      "records": [
        "A verdict per item, each citing the plan line or the rule, its version, and the campaign configuration it was read against.",
        "A pre-launch score and a post-delivery score, each dated and each naming what it read.",
        "Anything it could not test is recorded as untested rather than left out.",
        "A rescore after a fix names what changed and what it ran again.",
        "Where what ran differs from what was ordered, the difference is recorded against the plan line it belongs to, with the figures on both sides."
      ],
      "escalates": [
        "every failure, with the plan line or the rule attached. This agent never waives its own findings.",
        "a request to switch on a buy with a known failure. A person decides that, and the decision is recorded with the failure attached.",
        "a buy it cannot match to any line in the plan",
        "an ad that appeared somewhere an exclusion list forbids, on the day it is found rather than in the delivery report",
        "two rules that contradict each other on the same buy",
        "a delivery record the platform will not give it while the money is still being spent"
      ],
      "not": [
        "This agent is not a signer.",
        "It produces the score and named people sign.",
        "Does not buy media, change targeting or bids, move budget, or pause a campaign, which is the media-buyer agent.",
        "Does not build the plan it scores against or move money between its lines, which is the media-planner agent.",
        "Does not check the invoice against what ran, which is the spend-reconciler agent going line by line through the bill.",
        "This agent says whether the buy matched the plan, and that agent says whether the charge matched the buy.",
        "Does not score the creative against the brand guidelines or the claims register, which is the brand-check agent, and does not score it against the disclosure rules in force in a market, which is the disclosure-check agent.",
        "Does not check that a conversion fires, which is the conversion-tracker agent.",
        "Does not say what the buy returned, which is the analytics agent.",
        "Does not decide that a failure is small enough to run with."
      ],
      "processes": [
        {
          "process": "ref/mkt/account-based-play",
          "activities": [
            "Check the Buy Before It Runs"
          ]
        },
        {
          "process": "ref/mkt/display-retargeting",
          "activities": [
            "Check the Buy Before Switch-On",
            "Check the Caps Are Holding"
          ]
        },
        {
          "process": "ref/mkt/reallocate-media-spend",
          "activities": [
            "Check the Move against the Rules",
            "Check the Change Took"
          ]
        },
        {
          "process": "ref/mkt/test-ad-creative",
          "activities": [
            "Check the Variant Set",
            "Check the Test Before Switch-On",
            "Watch Delivery"
          ]
        },
        {
          "process": "ref/mkt/traffic-ad-creative",
          "activities": [
            "Check the Buy Before Switch-On",
            "Check the Live Ads"
          ]
        },
        {
          "process": "ref/mkt/verify-ad-placement",
          "activities": [
            "Take in the Concern",
            "Set What the Audit Covers",
            "Confirm the Rules in Force",
            "Pull the Delivery Quality Figures",
            "Score Every Placement",
            "Look at the Flagged Placements",
            "Size What It Cost",
            "Decide What Happens to Each",
            "Confirm the Exclusions Hold",
            "Report the Audit",
            "Record What Was Learned"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# buy-check

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 twelve 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/account-based-play`, `ref/mkt/display-retargeting`,
`ref/mkt/reallocate-media-spend`, `ref/mkt/test-ad-creative`,
`ref/mkt/traffic-ad-creative`, `ref/mkt/verify-ad-placement`. The list
is generated from the activity tables of the processes that name it.

https://agentcatalog.com/abstract-agents/buy-check
skills/audit-learnings/SKILL.mdFiles what the audit turned up for the next one, such as which channels and which sellers are worth checking first. Use it when running `ref/mkt/verify-ad-placement`.
---
name: audit-learnings
description: Files what the audit turned up for the next one, such as which channels and which sellers are worth checking first. Use it when running `ref/mkt/verify-ad-placement`.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Audit learnings

## What it does

Files what the audit turned up for the next one, such as which channels
and which sellers are worth checking first.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Record What Was Learned**
  - `ref/mkt/verify-ad-placement`, activity 15 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/audit-report/SKILL.mdReports what ran where, what failed against which rule, and what the failures cost. Use it when running `ref/mkt/verify-ad-placement`.
---
name: audit-report
description: Reports what ran where, what failed against which rule, and what the failures cost. Use it when running `ref/mkt/verify-ad-placement`.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Audit report

## What it does

Reports what ran where, what failed against which rule, and what the
failures cost.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Report the Audit**
  - `ref/mkt/verify-ad-placement`, activity 14 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/audit-scope/SKILL.md"Sets up an audit before any placement is scored: what was seen and what raised it, which accounts, campaigns, channels and dates are being looked at, and the placement rules at the version that applies. Use it when running `ref/mkt/verify-ad-placement`."
---
name: audit-scope
description: "Sets up an audit before any placement is scored: what was seen and what raised it, which accounts, campaigns, channels and dates are being looked at, and the placement rules at the version that applies. Use it when running `ref/mkt/verify-ad-placement`."
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Audit scope

## What it does

Sets up an audit before any placement is scored: what was seen and what
raised it, which accounts, campaigns, channels and dates are being
looked at, and the placement rules at the version that applies.

## Where it happens

The agent does this in three activities across one reference process.
Each one names the activity as that process words it.

- **Confirm the Rules in Force**
  - `ref/mkt/verify-ad-placement`, activity 3 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)
- **Set What the Audit Covers**
  - `ref/mkt/verify-ad-placement`, activity 2 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)
- **Take in the Concern**
  - `ref/mkt/verify-ad-placement`, activity 1 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/change-readback/SKILL.mdReads the live configuration back after an instruction was given and confirms that what is set now is what was decided, including a later reading that shows the ads have actually gone from the places they were excluded from. Use it when running `ref/mkt/reallocate-media-spend` and `ref/mkt/verify-ad-placement`.
---
name: change-readback
description: Reads the live configuration back after an instruction was given and confirms that what is set now is what was decided, including a later reading that shows the ads have actually gone from the places they were excluded from. Use it when running `ref/mkt/reallocate-media-spend` and `ref/mkt/verify-ad-placement`.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Change readback

## What it does

Reads the live configuration back after an instruction was given and
confirms that what is set now is what was decided, including a later
reading that shows the ads have actually gone from the places they were
excluded from.

## Where it happens

The agent does this in two activities across two reference processes.
Each one names the activity as that process words it.

- **Check the Change Took**
  - `ref/mkt/reallocate-media-spend`, activity 12 -
    [Reallocate Media Spend](../../../../processes/marketing/reallocate-media-spend.md)
- **Confirm the Exclusions Hold**
  - `ref/mkt/verify-ad-placement`, activity 11 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/delivery-monitoring/SKILL.mdReads what has been delivered so far against the settings the buy was switched on with, such as how often one person has been shown an ad against the cap that was set, and whether the split still holds and every variant is still running. Use it when running `ref/mkt/display-retargeting` and `ref/mkt/test-ad-creative`.
---
name: delivery-monitoring
description: Reads what has been delivered so far against the settings the buy was switched on with, such as how often one person has been shown an ad against the cap that was set, and whether the split still holds and every variant is still running. Use it when running `ref/mkt/display-retargeting` and `ref/mkt/test-ad-creative`.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Delivery monitoring

## What it does

Reads what has been delivered so far against the settings the buy was
switched on with, such as how often one person has been shown an ad
against the cap that was set, and whether the split still holds and
every variant is still running.

## Where it happens

The agent does this in two activities across two reference processes.
Each one names the activity as that process words it.

- **Check the Caps Are Holding**
  - `ref/mkt/display-retargeting`, activity 14 -
    [Run Display Retargeting Campaign](../../../../processes/marketing/display-retargeting.md)
- **Watch Delivery**
  - `ref/mkt/test-ad-creative`, activity 14 -
    [Test Ad Creative](../../../../processes/marketing/test-ad-creative.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/failure-costing/SKILL.mdPuts a number on what the failing placements consumed, in impressions and in money, so the cost of the problem can be weighed and claimed back. Use it when running `ref/mkt/verify-ad-placement`.
---
name: failure-costing
description: Puts a number on what the failing placements consumed, in impressions and in money, so the cost of the problem can be weighed and claimed back. Use it when running `ref/mkt/verify-ad-placement`.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Failure costing

## What it does

Puts a number on what the failing placements consumed, in impressions
and in money, so the cost of the problem can be weighed and claimed
back.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Size What It Cost**
  - `ref/mkt/verify-ad-placement`, activity 8 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/live-ad-check/SKILL.mdConfirms that what is serving works for the person who sees it, which means the ads render as they should and a click reaches the page it was meant to reach. Use it when running `ref/mkt/traffic-ad-creative`.
---
name: live-ad-check
description: Confirms that what is serving works for the person who sees it, which means the ads render as they should and a click reaches the page it was meant to reach. Use it when running `ref/mkt/traffic-ad-creative`.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Live ad check

## What it does

Confirms that what is serving works for the person who sees it, which
means the ads render as they should and a click reaches the page it was
meant to reach.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Check the Live Ads**
  - `ref/mkt/traffic-ad-creative`, activity 16 -
    [Traffic Ad Creative](../../../../processes/marketing/traffic-ad-creative.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/placement-disposition/SKILL.mdDecides what happens to each placement that failed, which is to exclude it, contest it, or accept it, and records the reason for the choice. Use it when running `ref/mkt/verify-ad-placement`.
---
name: placement-disposition
description: Decides what happens to each placement that failed, which is to exclude it, contest it, or accept it, and records the reason for the choice. Use it when running `ref/mkt/verify-ad-placement`.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Placement disposition

## What it does

Decides what happens to each placement that failed, which is to exclude
it, contest it, or accept it, and records the reason for the choice.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Decide What Happens to Each**
  - `ref/mkt/verify-ad-placement`, activity 9 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/placement-evidence/SKILL.mdGathers what an audit is judged on, which means the delivery quality figures for the period and, for a placement somebody has flagged, the advertisement captured on the page as it actually appeared. Use it when running `ref/mkt/verify-ad-placement`.
---
name: placement-evidence
description: Gathers what an audit is judged on, which means the delivery quality figures for the period and, for a placement somebody has flagged, the advertisement captured on the page as it actually appeared. Use it when running `ref/mkt/verify-ad-placement`.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Placement evidence

## What it does

Gathers what an audit is judged on, which means the delivery quality
figures for the period and, for a placement somebody has flagged, the
advertisement captured on the page as it actually appeared.

## Where it happens

The agent does this in two activities across one reference process. Each
one names the activity as that process words it.

- **Look at the Flagged Placements**
  - `ref/mkt/verify-ad-placement`, activity 7 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)
- **Pull the Delivery Quality Figures**
  - `ref/mkt/verify-ad-placement`, activity 5 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/placement-scoring/SKILL.mdGives every placement in scope a verdict against the rules that were named, and cites the rule behind each failure so a reader can tell a real problem from somebody's preference. Use it when running `ref/mkt/verify-ad-placement`.
---
name: placement-scoring
description: Gives every placement in scope a verdict against the rules that were named, and cites the rule behind each failure so a reader can tell a real problem from somebody's preference. Use it when running `ref/mkt/verify-ad-placement`.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Placement scoring

## What it does

Gives every placement in scope a verdict against the rules that were
named, and cites the rule behind each failure so a reader can tell a
real problem from somebody's preference.

## Where it happens

The agent does this in one activity across one reference process. Each
one names the activity as that process words it.

- **Score Every Placement**
  - `ref/mkt/verify-ad-placement`, activity 6 -
    [Verify Ad Placement Quality](../../../../processes/marketing/verify-ad-placement.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/pre-launch-buy-check/SKILL.mdReads a buy or a change to a buy as it is configured, before any money is spent, and scores it against the plan line it was placed on and the terms it was bought under. Use it when running `ref/mkt/account-based-play` and 3 other reference processes.
---
name: pre-launch-buy-check
description: Reads a buy or a change to a buy as it is configured, before any money is spent, and scores it against the plan line it was placed on and the terms it was bought under. Use it when running `ref/mkt/account-based-play` and 3 other reference processes.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Pre launch buy check

## What it does

Reads a buy or a change to a buy as it is configured, before any money
is spent, and scores it against the plan line it was placed on and the
terms it was bought under. Every failure it reports names the plan line
or the rule behind it.

## Where it happens

The agent does this in three activities across four reference processes.
Each one names the activity as that process words it.

- **Check the Buy Before It Runs**
  - `ref/mkt/account-based-play`, activity 12 -
    [Run Account-Based Play](../../../../processes/marketing/account-based-play.md)
- **Check the Buy Before Switch-On**
  - `ref/mkt/display-retargeting`, activity 12 -
    [Run Display Retargeting Campaign](../../../../processes/marketing/display-retargeting.md)
  - `ref/mkt/traffic-ad-creative`, activity 14 -
    [Traffic Ad Creative](../../../../processes/marketing/traffic-ad-creative.md)
- **Check the Move against the Rules**
  - `ref/mkt/reallocate-media-spend`, activity 7 -
    [Reallocate Media Spend](../../../../processes/marketing/reallocate-media-spend.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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/test-design-check/SKILL.mdReads an advertising test before it starts and confirms it will produce a readable answer, which means the split, the tags and the variants match the design and each variant changes only the element under test. Use it when running `ref/mkt/test-ad-creative`.
---
name: test-design-check
description: Reads an advertising test before it starts and confirms it will produce a readable answer, which means the split, the tags and the variants match the design and each variant changes only the element under test. Use it when running `ref/mkt/test-ad-creative`.
license: CC-BY-4.0
metadata:
  agent: buy-check
  agent-version: "1"
---

# Test design check

## What it does

Reads an advertising test before it starts and confirms it will produce
a readable answer, which means the split, the tags and the variants
match the design and each variant changes only the element under test.

## Where it happens

The agent does this in two activities across one reference process. Each
one names the activity as that process words it.

- **Check the Test Before Switch-On**
  - `ref/mkt/test-ad-creative`, activity 12 -
    [Test Ad Creative](../../../../processes/marketing/test-ad-creative.md)
- **Check the Variant Set**
  - `ref/mkt/test-ad-creative`, activity 9 -
    [Test Ad Creative](../../../../processes/marketing/test-ad-creative.md)

## What to record

A verdict per item, each citing the plan line or the rule, its version,
and the campaign configuration it was read against. A pre-launch score
and a post-delivery score, each dated and each naming what it read.
Anything it could not test is recorded as untested rather than left out.
A rescore after a fix names what changed and what it ran again. Where
what ran differs from what was ordered, the difference is recorded
against the plan line it belongs to, with the figures on both sides.

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.

media-plan · readrules-the-buy-was-placed-under · readad-platforms · readplacement-and-delivery-record · readexclusion-lists-in-force · readasset-store · readreview-record · write
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": {
    "media-plan": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/media-plan"
    },
    "rules-the-buy-was-placed-under": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/rules-the-buy-was-placed-under"
    },
    "ad-platforms": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/ad-platforms"
    },
    "placement-and-delivery-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/placement-and-delivery-record"
    },
    "exclusion-lists-in-force": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/exclusion-lists-in-force"
    },
    "asset-store": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/asset-store"
    },
    "review-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/review-record"
    }
  }
}

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

6 processes, 21 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.

Run Account-Based Playref/mkt/account-based-play · 19 activities
12345678910111213141516171819

Check the Buy Before It Runs

Run Display Retargeting Campaignref/mkt/display-retargeting · 16 activities
12345678910111213141516

Check the Buy Before Switch-On · Check the Caps Are Holding

Reallocate Media Spendref/mkt/reallocate-media-spend · 14 activities
1234567891011121314

Check the Move against the Rules · Check the Change Took

Test Ad Creativeref/mkt/test-ad-creative · 18 activities
123456789101112131415161718

Check the Variant Set · Check the Test Before Switch-On · Watch Delivery

Traffic Ad Creativeref/mkt/traffic-ad-creative · 17 activities
1234567891011121314151617

Check the Buy Before Switch-On · Check the Live Ads

Verify Ad Placement Qualityref/mkt/verify-ad-placement · 15 activities
123456789101112131415

Take in the Concern · Set What the Audit Covers · Confirm the Rules in Force · Pull the Delivery Quality Figures · Score Every Placement · Look at the Flagged Placements · Size What It Cost · Decide What Happens to Each · Confirm the Exclusions Hold · Report the Audit · Record What Was Learned

The records it leaves

What it writes down

A verdict per item, each citing the plan line or the rule, its version, and the campaign configuration it was read against. A pre-launch score and a post-delivery score, each dated and each naming what it read. Anything it could not test is recorded as untested rather than left out. A rescore after a fix names what changed and what it ran again. Where what ran differs from what was ordered, the difference is recorded against the plan line it belongs to, with the figures on both sides.

Where it stops

What it will not do

This agent is not a signer. It produces the score and named people sign. Does not buy media, change targeting or bids, move budget, or pause a campaign, which is the media-buyer agent. Does not build the plan it scores against or move money between its lines, which is the media-planner agent. Does not check the invoice against what ran, which is the spend-reconciler agent going line by line through the bill. This agent says whether the buy matched the plan, and that agent says whether the charge matched the buy. Does not score the creative against the brand guidelines or the claims register, which is the brand-check agent, and does not score it against the disclosure rules in force in a market, which is the disclosure-check agent. Does not check that a conversion fires, which is the conversion-tracker agent. Does not say what the buy returned, which is the analytics agent. Does not decide that a failure is small enough to run with.

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: buy-check 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 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.

  • AdSpend Auditor MCP server · evozim.github.io · hosted · mirrored from the MCP registry PPC advertisement budget auditor grading ad group metrics.
  • ShipCheck MCP server · wtaylorwilson.github.io · hosted · mirrored from the MCP registry Independent preview-URL QA for coding agents. Playwright heuristics, pass/fail pack.
  • Before Users Do MCP server · bhuman-ai.github.io · hosted · mirrored from the MCP registry Browser-backed QA with evidence and fix-ready reports for coding agents.