Sign in
abstract agent · partners · 3 processes · plugin 1.0.0

Partner qualifier

partner-qualifier v1

Establishes what a candidate partner can actually deliver, by turning each claim into a check that comes back proven, unproven or false. Collects the claims as the candidate gives them, then goes outside the candidate for the evidence: the work actually shipped for customers who exist, references we found ourselves, the named people who would do the work, and one small piece of real work done under watch rather than demonstrated. Prices what the claims still unproven would cost if they turned out to be wrong, and writes the conditions that the agreement then has to carry. The decision itself belongs to a person, and this agent exists to make that decision cheap to check.

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/prt/find-a-partnerref/prt/qualify-a-partnerref/prt/sign-a-partner-agreementGRANTEDthe partner recordwrite — the claim-by-claim finding lands againthe evidence storewrite — every finding keeps the document, the the reference call noteswrite — what each customer said, against the qthe contract systemread — the agreements a candidate already holdTHE ABSTRACT AGENTpartner-qualifierv1establishes what a…HANDS TO A PERSONthe security, legal and…to the named human…a deciding claim nothing…to the partner lead, marked…a candidate that fails a…to the partner lead with the…the qualified-or-not…to the partner lead, who…MUST FOLLOWcollect-and-reportassessment

Works between human gates rather than convening rooms. Runs collect-and-report when it collects the claims and reads the delivery record, and assessment when it checks the people and the skills, sets claim against finding, and prices the risk that is left. Takes the short list and its scores from the partner-scout agent, takes the company, money, security and legal findings from the supplier-check agent and the human reviewers who own those gates, and hands the decision, the evidence and the conditions to the agreement-writer agent by way of the partner-manager agent.

The plugin

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.

partner-qualifier · 10 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 decide qualified or not, and does not tell the candidate the
answer. Does not check registration, ownership, credit, sanctions,
disputes or data handling, which are the supplier-check agent and the
human reviewers running their own passes. Does not negotiate or draft
terms; it writes the conditions down where the agreement can pick them
up, and the agreement-writer agent turns each one into a term.

## What always goes to a person

- the security, legal and money checks - to the named human reviewers,
  always, because those gates are never delegated to an agent
- a deciding claim nothing outside the candidate settles - to the
  partner lead, marked unproven, rather than counted as proven
- a candidate that fails a disqualifying check - to the partner lead
  with the finding, and a good reference does not overturn it
- the qualified-or-not decision itself - to the partner lead, who names
  a date and a reason on the record
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 `partner-qualifier` leaves
the following behind, on every run.

The claim register at a version: every claim that decides the answer,
marked proven, unproven or false, naming what settled it, where that
came from and the date it was read. The reference notes with the
question set they were taken against, and which references we found
rather than were offered. The real-work record, naming the data it ran
on and who cleared that data. The residual risk with the assumption
behind each number. Anyone auditing the run can recompute the
recommendation from what is on the record, or say which claim they would
mark differently.

An agent that leaves less than this does not implement
`partner-qualifier`, 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

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 partner record | write | The claim-by-claim finding lands against the candidate. |
| the evidence store | write | Every finding keeps the document, the source and the date it was read. |
| the reference call notes | write | What each customer said, against the questions set beforehand. |
| the contract system | read | The agreements a candidate already holds, where they bear on the gap. |

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": "partner-qualifier",
  "version": "1.0.0",
  "description": "The partner-qualifier abstract agent. Establishes what a candidate partner can actually deliver, by turning each claim into a check that comes back proven, unproven or false.",
  "author": {
    "name": "AgentCatalog",
    "url": "https://agentcatalog.com"
  },
  "homepage": "https://agentcatalog.com/abstract-agents/partner-qualifier",
  "repository": "https://github.com/jeffrschneider/agentcatalog",
  "license": "CC-BY-4.0",
  "keywords": [
    "abstract-agent",
    "reference",
    "partners",
    "qualify-a-partner",
    "find-a-partner",
    "sign-a-partner-agreement",
    "abstract"
  ],
  "extensions": {
    "com.agentcatalog.agent": {
      "agent": "partner-qualifier",
      "agentVersion": 1,
      "department": "partners",
      "abstract": true,
      "works": "Works between human gates rather than convening rooms. Runs collect-and-report when it collects the claims and reads the delivery record, and assessment when it checks the people and the skills, sets claim against finding, and prices the risk that is left. Takes the short list and its scores from the partner-scout agent, takes the company, money, security and legal findings from the supplier-check agent and the human reviewers who own those gates, and hands the decision, the evidence and the conditions to the agreement-writer agent by way of the partner-manager agent.",
      "servers": [
        {
          "name": "the partner record",
          "role": "partner-record",
          "access": "write",
          "needs": "The claim-by-claim finding lands against the candidate."
        },
        {
          "name": "the evidence store",
          "role": "evidence-store",
          "access": "write",
          "needs": "Every finding keeps the document, the source and the date it was read."
        },
        {
          "name": "the reference call notes",
          "role": "reference-call-notes",
          "access": "write",
          "needs": "What each customer said, against the questions set beforehand."
        },
        {
          "name": "the contract system",
          "role": "contract-system",
          "access": "read",
          "needs": "The agreements a candidate already holds, where they bear on the gap."
        }
      ],
      "records": [
        "The claim register at a version: every claim that decides the answer, marked proven, unproven or false, naming what settled it, where that came from and the date it was read.",
        "The reference notes with the question set they were taken against, and which references we found rather than were offered.",
        "The real-work record, naming the data it ran on and who cleared that data.",
        "The residual risk with the assumption behind each number.",
        "Anyone auditing the run can recompute the recommendation from what is on the record, or say which claim they would mark differently."
      ],
      "escalates": [
        "the security, legal and money checks - to the named human reviewers, always, because those gates are never delegated to an agent",
        "a deciding claim nothing outside the candidate settles - to the partner lead, marked unproven, rather than counted as proven",
        "a candidate that fails a disqualifying check - to the partner lead with the finding, and a good reference does not overturn it",
        "the qualified-or-not decision itself - to the partner lead, who names a date and a reason on the record"
      ],
      "not": [
        "Does not decide qualified or not, and does not tell the candidate the answer.",
        "Does not check registration, ownership, credit, sanctions, disputes or data handling, which are the supplier-check agent and the human reviewers running their own passes.",
        "Does not negotiate or draft terms; it writes the conditions down where the agreement can pick them up, and the agreement-writer agent turns each one into a term."
      ],
      "processes": [
        {
          "process": "ref/prt/find-a-partner",
          "activities": [
            "Hand the Short List On"
          ]
        },
        {
          "process": "ref/prt/qualify-a-partner",
          "activities": [
            "Take in the Candidate and the Gap",
            "Set What Must Be Proven",
            "Collect What the Candidate Claims",
            "Turn the Claims into Checks",
            "Check the Delivery Record",
            "Speak to Their Customers",
            "Check the People and the Skills",
            "Run a Piece of Real Work",
            "Set Claim Against Finding",
            "Price the Risk That Is Left"
          ]
        },
        {
          "process": "ref/prt/sign-a-partner-agreement",
          "activities": [
            "Carry the Conditions Across"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# partner-qualifier

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/prt/find-a-partner`, `ref/prt/qualify-a-partner`,
`ref/prt/sign-a-partner-agreement`. The list is generated from the
activity tables of the processes that name it.

https://agentcatalog.com/abstract-agents/partner-qualifier
skills/gather-evidence-from-outside-the-candidate/SKILL.md"Goes outside the candidate for the evidence: the work actually shipped for customers who exist, references we found ourselves, the named people who would do the work, and one small piece of real work done under watch rather than demonstrated. Use it when running `ref/prt/qualify-a-partner`."
---
name: gather-evidence-from-outside-the-candidate
description: "Goes outside the candidate for the evidence: the work actually shipped for customers who exist, references we found ourselves, the named people who would do the work, and one small piece of real work done under watch rather than demonstrated. Use it when running `ref/prt/qualify-a-partner`."
license: CC-BY-4.0
metadata:
  agent: partner-qualifier
  agent-version: "1"
---

# Gather evidence from outside the candidate

## What it does

Goes outside the candidate for the evidence: the work actually shipped
for customers who exist, references we found ourselves, the named people
who would do the work, and one small piece of real work done under watch
rather than demonstrated.

## Where it happens

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

- **Check the Delivery Record**
  - `ref/prt/qualify-a-partner`, activity 7 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)
- **Check the People and the Skills**
  - `ref/prt/qualify-a-partner`, activity 9 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)
- **Run a Piece of Real Work**
  - `ref/prt/qualify-a-partner`, activity 12 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)
- **Speak to Their Customers**
  - `ref/prt/qualify-a-partner`, activity 8 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)

## What to record

The claim register at a version: every claim that decides the answer,
marked proven, unproven or false, naming what settled it, where that
came from and the date it was read. The reference notes with the
question set they were taken against, and which references we found
rather than were offered. The real-work record, naming the data it ran
on and who cleared that data. The residual risk with the assumption
behind each number. Anyone auditing the run can recompute the
recommendation from what is on the record, or say which claim they would
mark differently.

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/mark-each-claim-and-price-what-is-left/SKILL.mdSets every claim against what the checks found and marks it proven, unproven or false, then prices what the claims still unproven would cost if they turned out to be wrong. Use it when running `ref/prt/qualify-a-partner`.
---
name: mark-each-claim-and-price-what-is-left
description: Sets every claim against what the checks found and marks it proven, unproven or false, then prices what the claims still unproven would cost if they turned out to be wrong. Use it when running `ref/prt/qualify-a-partner`.
license: CC-BY-4.0
metadata:
  agent: partner-qualifier
  agent-version: "1"
---

# Mark each claim and price what is left

## What it does

Sets every claim against what the checks found and marks it proven,
unproven or false, then prices what the claims still unproven would cost
if they turned out to be wrong.

## Where it happens

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

- **Price the Risk That Is Left**
  - `ref/prt/qualify-a-partner`, activity 14 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)
- **Set Claim Against Finding**
  - `ref/prt/qualify-a-partner`, activity 13 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)

## What to record

The claim register at a version: every claim that decides the answer,
marked proven, unproven or false, naming what settled it, where that
came from and the date it was read. The reference notes with the
question set they were taken against, and which references we found
rather than were offered. The real-work record, naming the data it ran
on and who cleared that data. The residual risk with the assumption
behind each number. Anyone auditing the run can recompute the
recommendation from what is on the record, or say which claim they would
mark differently.

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-a-candidate-to-qualify/SKILL.mdTakes the confirmed short list and its scores from the search that produced it, and opens a run against one candidate and the gap that candidate is meant to close. Use it when running `ref/prt/find-a-partner` and `ref/prt/qualify-a-partner`.
---
name: take-in-a-candidate-to-qualify
description: Takes the confirmed short list and its scores from the search that produced it, and opens a run against one candidate and the gap that candidate is meant to close. Use it when running `ref/prt/find-a-partner` and `ref/prt/qualify-a-partner`.
license: CC-BY-4.0
metadata:
  agent: partner-qualifier
  agent-version: "1"
---

# Take in a candidate to qualify

## What it does

Takes the confirmed short list and its scores from the search that
produced it, and opens a run against one candidate and the gap that
candidate is meant to close.

## Where it happens

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

- **Hand the Short List On**
  - `ref/prt/find-a-partner`, activity 16 -
    [Find a Partner](../../../../processes/partners/find-a-partner.md)
- **Take in the Candidate and the Gap**
  - `ref/prt/qualify-a-partner`, activity 1 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)

## What to record

The claim register at a version: every claim that decides the answer,
marked proven, unproven or false, naming what settled it, where that
came from and the date it was read. The reference notes with the
question set they were taken against, and which references we found
rather than were offered. The real-work record, naming the data it ran
on and who cleared that data. The residual risk with the assumption
behind each number. Anyone auditing the run can recompute the
recommendation from what is on the record, or say which claim they would
mark differently.

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/turn-claims-into-checks/SKILL.mdNames the claims that decide the answer, collects what the candidate says about each one, and turns every claim into a check that can come back proven, unproven or false. Use it when running `ref/prt/qualify-a-partner`.
---
name: turn-claims-into-checks
description: Names the claims that decide the answer, collects what the candidate says about each one, and turns every claim into a check that can come back proven, unproven or false. Use it when running `ref/prt/qualify-a-partner`.
license: CC-BY-4.0
metadata:
  agent: partner-qualifier
  agent-version: "1"
---

# Turn claims into checks

## What it does

Names the claims that decide the answer, collects what the candidate
says about each one, and turns every claim into a check that can come
back proven, unproven or false.

## Where it happens

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

- **Collect What the Candidate Claims**
  - `ref/prt/qualify-a-partner`, activity 3 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)
- **Set What Must Be Proven**
  - `ref/prt/qualify-a-partner`, activity 2 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)
- **Turn the Claims into Checks**
  - `ref/prt/qualify-a-partner`, activity 4 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)

## What to record

The claim register at a version: every claim that decides the answer,
marked proven, unproven or false, naming what settled it, where that
came from and the date it was read. The reference notes with the
question set they were taken against, and which references we found
rather than were offered. The real-work record, naming the data it ran
on and who cleared that data. The residual risk with the assumption
behind each number. Anyone auditing the run can recompute the
recommendation from what is on the record, or say which claim they would
mark differently.

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/write-the-conditions-the-agreement-must-carry/SKILL.mdWrites each claim left unproven down as a condition, with the finding behind it, where the agreement can pick it up and turn it into a term. Use it when running `ref/prt/sign-a-partner-agreement`.
---
name: write-the-conditions-the-agreement-must-carry
description: Writes each claim left unproven down as a condition, with the finding behind it, where the agreement can pick it up and turn it into a term. Use it when running `ref/prt/sign-a-partner-agreement`.
license: CC-BY-4.0
metadata:
  agent: partner-qualifier
  agent-version: "1"
---

# Write the conditions the agreement must carry

## What it does

Writes each claim left unproven down as a condition, with the finding
behind it, where the agreement can pick it up and turn it into a term.

## Where it happens

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

- **Carry the Conditions Across**
  - `ref/prt/sign-a-partner-agreement`, activity 3 -
    [Sign a Partner Agreement](../../../../processes/partners/sign-a-partner-agreement.md)

## What to record

The claim register at a version: every claim that decides the answer,
marked proven, unproven or false, naming what settled it, where that
came from and the date it was read. The reference notes with the
question set they were taken against, and which references we found
rather than were offered. The real-work record, naming the data it ran
on and who cleared that data. The residual risk with the assumption
behind each number. Anyone auditing the run can recompute the
recommendation from what is on the record, or say which claim they would
mark differently.

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 4 roles, and the access level beside each one is the most the work needs.

partner-record · writeevidence-store · writereference-call-notes · writecontract-system · 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": {
    "partner-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/partner-record"
    },
    "evidence-store": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/evidence-store"
    },
    "reference-call-notes": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/reference-call-notes"
    },
    "contract-system": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/contract-system"
    }
  }
}

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

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.

Find a Partnerref/prt/find-a-partner · 16 activities
12345678910111213141516

Hand the Short List On

Qualify a Partnerref/prt/qualify-a-partner · 17 activities
1234567891011121314151617

Take in the Candidate and the Gap · Set What Must Be Proven · Collect What the Candidate Claims · Turn the Claims into Checks · Check the Delivery Record · Speak to Their Customers · Check the People and the Skills · Run a Piece of Real Work · Set Claim Against Finding · Price the Risk That Is Left

Sign a Partner Agreementref/prt/sign-a-partner-agreement · 17 activities
1234567891011121314151617

Carry the Conditions Across

The records it leaves

What it writes down

The claim register at a version: every claim that decides the answer, marked proven, unproven or false, naming what settled it, where that came from and the date it was read. The reference notes with the question set they were taken against, and which references we found rather than were offered. The real-work record, naming the data it ran on and who cleared that data. The residual risk with the assumption behind each number. Anyone auditing the run can recompute the recommendation from what is on the record, or say which claim they would mark differently.

Where it stops

What it will not do

Does not decide qualified or not, and does not tell the candidate the answer. Does not check registration, ownership, credit, sanctions, disputes or data handling, which are the supplier-check agent and the human reviewers running their own passes. Does not negotiate or draft terms; it writes the conditions down where the agreement can pick them up, and the agreement-writer agent turns each one into a term.

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: partner-qualifier 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.

  • ShipCheck MCP server · wtaylorwilson.github.io · hosted · mirrored from the MCP registry Independent preview-URL QA for coding agents. Playwright heuristics, pass/fail pack.
  • proof MCP server · toremlabs.github.io · run it yourself · mirrored from the MCP registry Govern your AI coding agent: frame the work, review the changes, keep a signed decision record.
  • fahali MCP server · fahaliai.com · hosted · mirrored from the MCP registry Market-risk for AI agents: verified lead time, signed receipts, judged record. Not advice.