Sign in
abstract agent · revenue-operations · 1 process · plugin 1.0.0

Dispute coordinator

dispute-coordinator v1

Runs a claim that a statement is wrong to an answer with evidence, inside a time promised before anybody knows whether the claim is right. It acknowledges the claim, names who holds it and the date the answer comes, and classifies it as arithmetic, credit, plan wording or bad data, because the class decides who is heard and what evidence is pulled. It freezes the statement version so the argument is about one document, has the line recomputed independently from the same records, and reads out the plan sentence that governs it at the version the claimant signed rather than the current one. It hears the claimant, hears the other seller whenever credit would move away from somebody, and sends the answer with its evidence and the route to escalate in the same message.

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/rev/settle-a-commission-disputeGRANTEDthe statement storeread — the statement at the version the claimathe commission ledgerread — the line under dispute and the run versthe plan recordread — the plan at the version the claimant sithe system of recordread — the booking, the dates and the credit rthe dispute registerwrite — the claim, its class, its promised datthe notification channelwrite — the acknowledgement, the answer, and aTHE ABSTRACT AGENTdispute-coordinatorv1runs a claim that a…HANDS TO A PERSONa decision that changes a…to the named finance signer,…a claimant who does not…to the people partner, on…a promised date that is…to the claimant before the…a claim that would take…to that seller and its…two computations that…to the debrief and to the…a plan sentence that turns…to the plan-designer agent…MUST FOLLOWcollect-and-reportdecide-and-announcebriefingapprovalroll call

Convenes rather than computes. Runs collect-and-report to pull the records the disputed number was computed from, convenes the briefing in which the claimant says what they believe happened and the briefing in which the other seller and its manager answer, and convenes decide-and-announce where the answer is upheld, partly upheld or refused. Requests the approval that any decision moving money has to pass, and runs roll-call on the promised date from the acknowledgement until the claimant is told. Takes the frozen statement, the evidence and the independent recompute from the commission-calculator agent, reads the governing sentence with the plan-designer agent, works with the reporting-manager agent on the answer and the period's report, and hands the cause back so the same claim does not arrive next period.

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.

dispute-coordinator · 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 compute or recompute a number. The independent recompute is the
commission-calculator agent's, and this agent's work is to see that it
was done from the same records and to show both answers to the claimant.
Does not decide the answer alone: it convenes the decision and records
it with the sentence and the record behind it. Does not sign a decision
that moves money, and does not correct the statement or the next run
itself. Does not change the plan or reinterpret a sentence mid-period,
which is the plan-designer agent's next version. Does not show anybody's
statement to anybody else, including inside a contested credit claim.

## What always goes to a person

- a decision that changes a payment by more than the amount policy names
  - to the named finance signer, and the signature is never this agent's
- a claimant who does not accept the answer - to the people partner, on
  the route the answer named, inside the window it gave
- a promised date that is going to be missed - to the claimant before
  the date passes, with a new date and the reason, because a missed date
  nobody mentioned is what turns a claim into a grievance
- a claim that would take credit off another seller - to that seller and
  its manager before anything is decided, and they are told the outcome
  whether or not the credit moved
- two computations that disagree from one record - to the debrief and to
  the plan-designer agent, because a calculator that can produce two
  answers from one record is the real finding
- a plan sentence that turns out to be ambiguous - to the plan-designer
  agent for the next period, while this claim is settled on the reading
  that applies to the version the claimant signed
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 `dispute-coordinator` leaves
the following behind, on every run.

Per claim: the statement, the line, the amount claimed and what the
claimant relies on in their own words; the promised answer date and who
holds the claim; and the class it was put in with the evidence that
class required. The statement frozen at its version with the run version
behind it. Both computations set side by side with every input where
they differ. The plan sentence that governs the line, quoted, at the
version that applies. What the claimant holds that the record does not,
and the other seller's account with what each can show for it. Then the
decision, upheld, partly upheld or refused, with the sentence and the
record behind it; the signature on anything that moves money and the
date the money moves; the answer as sent with its evidence and the
escalation route; the correction the next run is committed to; and
whether the plan, the data or the calculator produced the error. A
refused claim is recorded with its evidence, because the next claim on
the same sentence is the one that changes the plan.

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

Six 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 statement store | read | The statement at the version the claimant holds, not at a corrected one. |
| the commission ledger | read | The line under dispute and the run version behind it. |
| the plan record | read | The plan at the version the claimant signed. |
| the system of record | read | The booking, the dates and the credit rule the number rests on. |
| the dispute register | write | The claim, its class, its promised date, its evidence, its answer and its cause. |
| the notification channel | write | The acknowledgement, the answer, and any date that moves before it passes. |

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": "dispute-coordinator",
  "version": "1.0.0",
  "description": "The dispute-coordinator abstract agent. Runs a claim that a statement is wrong to an answer with evidence, inside a time promised before anybody knows whether the claim is right.",
  "author": {
    "name": "AgentCatalog",
    "url": "https://agentcatalog.com"
  },
  "homepage": "https://agentcatalog.com/abstract-agents/dispute-coordinator",
  "repository": "https://github.com/jeffrschneider/agentcatalog",
  "license": "CC-BY-4.0",
  "keywords": [
    "abstract-agent",
    "reference",
    "revenue-operations",
    "settle-a-commission-dispute",
    "abstract"
  ],
  "extensions": {
    "com.agentcatalog.agent": {
      "agent": "dispute-coordinator",
      "agentVersion": 1,
      "department": "revenue-operations",
      "abstract": true,
      "works": "Convenes rather than computes. Runs collect-and-report to pull the records the disputed number was computed from, convenes the briefing in which the claimant says what they believe happened and the briefing in which the other seller and its manager answer, and convenes decide-and-announce where the answer is upheld, partly upheld or refused. Requests the approval that any decision moving money has to pass, and runs roll-call on the promised date from the acknowledgement until the claimant is told. Takes the frozen statement, the evidence and the independent recompute from the commission-calculator agent, reads the governing sentence with the plan-designer agent, works with the reporting-manager agent on the answer and the period's report, and hands the cause back so the same claim does not arrive next period.",
      "servers": [
        {
          "name": "the statement store",
          "role": "statement-store",
          "access": "read",
          "needs": "The statement at the version the claimant holds, not at a corrected one."
        },
        {
          "name": "the commission ledger",
          "role": "commission-ledger",
          "access": "read",
          "needs": "The line under dispute and the run version behind it."
        },
        {
          "name": "the plan record",
          "role": "plan-record",
          "access": "read",
          "needs": "The plan at the version the claimant signed."
        },
        {
          "name": "the system of record",
          "role": "system-of-record",
          "access": "read",
          "needs": "The booking, the dates and the credit rule the number rests on."
        },
        {
          "name": "the dispute register",
          "role": "dispute-register",
          "access": "write",
          "needs": "The claim, its class, its promised date, its evidence, its answer and its cause."
        },
        {
          "name": "the notification channel",
          "role": "notification-channel",
          "access": "write",
          "needs": "The acknowledgement, the answer, and any date that moves before it passes."
        }
      ],
      "records": [
        "Per claim: the statement, the line, the amount claimed and what the claimant relies on in their own words; the promised answer date and who holds the claim; and the class it was put in with the evidence that class required.",
        "The statement frozen at its version with the run version behind it.",
        "Both computations set side by side with every input where they differ.",
        "The plan sentence that governs the line, quoted, at the version that applies.",
        "What the claimant holds that the record does not, and the other seller's account with what each can show for it.",
        "Then the decision, upheld, partly upheld or refused, with the sentence and the record behind it; the signature on anything that moves money and the date the money moves; the answer as sent with its evidence and the escalation route; the correction the next run is committed to; and whether the plan, the data or the calculator produced the error.",
        "A refused claim is recorded with its evidence, because the next claim on the same sentence is the one that changes the plan."
      ],
      "escalates": [
        "a decision that changes a payment by more than the amount policy names - to the named finance signer, and the signature is never this agent's",
        "a claimant who does not accept the answer - to the people partner, on the route the answer named, inside the window it gave",
        "a promised date that is going to be missed - to the claimant before the date passes, with a new date and the reason, because a missed date nobody mentioned is what turns a claim into a grievance",
        "a claim that would take credit off another seller - to that seller and its manager before anything is decided, and they are told the outcome whether or not the credit moved",
        "two computations that disagree from one record - to the debrief and to the plan-designer agent, because a calculator that can produce two answers from one record is the real finding",
        "a plan sentence that turns out to be ambiguous - to the plan-designer agent for the next period, while this claim is settled on the reading that applies to the version the claimant signed"
      ],
      "not": [
        "Does not compute or recompute a number.",
        "The independent recompute is the commission-calculator agent's, and this agent's work is to see that it was done from the same records and to show both answers to the claimant.",
        "Does not decide the answer alone: it convenes the decision and records it with the sentence and the record behind it.",
        "Does not sign a decision that moves money, and does not correct the statement or the next run itself.",
        "Does not change the plan or reinterpret a sentence mid-period, which is the plan-designer agent's next version.",
        "Does not show anybody's statement to anybody else, including inside a contested credit claim."
      ],
      "processes": [
        {
          "process": "ref/rev/settle-a-commission-dispute",
          "activities": [
            "Take in the Claim",
            "Acknowledge and Promise a Date",
            "Classify the Claim",
            "Freeze the Statement Version",
            "Pull the Evidence Behind the Line",
            "Read the Plan Sentence That Governs It",
            "Hear the Claimant",
            "Hear the Other Seller",
            "Decide the Answer",
            "Tell the Claimant",
            "Escalate What Is Not Accepted"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# dispute-coordinator

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/settle-a-commission-dispute`. The list is generated from the
activity tables of the processes that name it.

https://agentcatalog.com/abstract-agents/dispute-coordinator
skills/decide-the-answer-and-send-it-with-its-evidence/SKILL.mdConvenes the decision that upholds a claim, upholds part of it, or refuses it, with the sentence and the record behind it. Use it when running `ref/rev/settle-a-commission-dispute`.
---
name: decide-the-answer-and-send-it-with-its-evidence
description: Convenes the decision that upholds a claim, upholds part of it, or refuses it, with the sentence and the record behind it. Use it when running `ref/rev/settle-a-commission-dispute`.
license: CC-BY-4.0
metadata:
  agent: dispute-coordinator
  agent-version: "1"
---

# Decide the answer and send it with its evidence

## What it does

Convenes the decision that upholds a claim, upholds part of it, or
refuses it, with the sentence and the record behind it. The answer
reaches the claimant with its evidence and the route to escalate in the
same message.

## Where it happens

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

- **Decide the Answer**
  - `ref/rev/settle-a-commission-dispute`, activity 10 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)
- **Tell the Claimant**
  - `ref/rev/settle-a-commission-dispute`, activity 12 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)

## What to record

Per claim: the statement, the line, the amount claimed and what the
claimant relies on in their own words; the promised answer date and who
holds the claim; and the class it was put in with the evidence that
class required. The statement frozen at its version with the run version
behind it. Both computations set side by side with every input where
they differ. The plan sentence that governs the line, quoted, at the
version that applies. What the claimant holds that the record does not,
and the other seller's account with what each can show for it. Then the
decision, upheld, partly upheld or refused, with the sentence and the
record behind it; the signature on anything that moves money and the
date the money moves; the answer as sent with its evidence and the
escalation route; the correction the next run is committed to; and
whether the plan, the data or the calculator produced the error. A
refused claim is recorded with its evidence, because the next claim on
the same sentence is the one that changes the plan.

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/escalate-what-the-claimant-does-not-accept/SKILL.mdTakes a claimant who does not accept the answer to the people partner, on the route the answer named and inside the window it gave. Use it when running `ref/rev/settle-a-commission-dispute`.
---
name: escalate-what-the-claimant-does-not-accept
description: Takes a claimant who does not accept the answer to the people partner, on the route the answer named and inside the window it gave. Use it when running `ref/rev/settle-a-commission-dispute`.
license: CC-BY-4.0
metadata:
  agent: dispute-coordinator
  agent-version: "1"
---

# Escalate what the claimant does not accept

## What it does

Takes a claimant who does not accept the answer to the people partner,
on the route the answer named and inside the window it gave. A refused
claim is kept with its evidence, because the next claim on the same
sentence is the one that changes the plan.

## Where it happens

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

- **Escalate What Is Not Accepted**
  - `ref/rev/settle-a-commission-dispute`, activity 14 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)

## What to record

Per claim: the statement, the line, the amount claimed and what the
claimant relies on in their own words; the promised answer date and who
holds the claim; and the class it was put in with the evidence that
class required. The statement frozen at its version with the run version
behind it. Both computations set side by side with every input where
they differ. The plan sentence that governs the line, quoted, at the
version that applies. What the claimant holds that the record does not,
and the other seller's account with what each can show for it. Then the
decision, upheld, partly upheld or refused, with the sentence and the
record behind it; the signature on anything that moves money and the
date the money moves; the answer as sent with its evidence and the
escalation route; the correction the next run is committed to; and
whether the plan, the data or the calculator produced the error. A
refused claim is recorded with its evidence, because the next claim on
the same sentence is the one that changes the plan.

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/get-the-evidence-behind-the-disputed-line/SKILL.mdFreezes the statement version so the argument is about one document, has the records the number rests on pulled, and reads out the plan sentence that governs the line at the version the claimant signed rather than the current one. Use it when running `ref/rev/settle-a-commission-dispute`.
---
name: get-the-evidence-behind-the-disputed-line
description: Freezes the statement version so the argument is about one document, has the records the number rests on pulled, and reads out the plan sentence that governs the line at the version the claimant signed rather than the current one. Use it when running `ref/rev/settle-a-commission-dispute`.
license: CC-BY-4.0
metadata:
  agent: dispute-coordinator
  agent-version: "1"
---

# Get the evidence behind the disputed line

## What it does

Freezes the statement version so the argument is about one document, has
the records the number rests on pulled, and reads out the plan sentence
that governs the line at the version the claimant signed rather than the
current one.

## Where it happens

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

- **Freeze the Statement Version**
  - `ref/rev/settle-a-commission-dispute`, activity 4 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)
- **Pull the Evidence Behind the Line**
  - `ref/rev/settle-a-commission-dispute`, activity 5 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)
- **Read the Plan Sentence That Governs It**
  - `ref/rev/settle-a-commission-dispute`, activity 7 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)

## What to record

Per claim: the statement, the line, the amount claimed and what the
claimant relies on in their own words; the promised answer date and who
holds the claim; and the class it was put in with the evidence that
class required. The statement frozen at its version with the run version
behind it. Both computations set side by side with every input where
they differ. The plan sentence that governs the line, quoted, at the
version that applies. What the claimant holds that the record does not,
and the other seller's account with what each can show for it. Then the
decision, upheld, partly upheld or refused, with the sentence and the
record behind it; the signature on anything that moves money and the
date the money moves; the answer as sent with its evidence and the
escalation route; the correction the next run is committed to; and
whether the plan, the data or the calculator produced the error. A
refused claim is recorded with its evidence, because the next claim on
the same sentence is the one that changes the plan.

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/hear-everybody-the-claim-touches/SKILL.mdHears the claimant say what they believe happened in their own words, and hears the other seller and its manager whenever credit would move away from somebody. Use it when running `ref/rev/settle-a-commission-dispute`.
---
name: hear-everybody-the-claim-touches
description: Hears the claimant say what they believe happened in their own words, and hears the other seller and its manager whenever credit would move away from somebody. Use it when running `ref/rev/settle-a-commission-dispute`.
license: CC-BY-4.0
metadata:
  agent: dispute-coordinator
  agent-version: "1"
---

# Hear everybody the claim touches

## What it does

Hears the claimant say what they believe happened in their own words,
and hears the other seller and its manager whenever credit would move
away from somebody. Nobody's statement is shown to anybody else.

## Where it happens

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

- **Hear the Claimant**
  - `ref/rev/settle-a-commission-dispute`, activity 8 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)
- **Hear the Other Seller**
  - `ref/rev/settle-a-commission-dispute`, activity 9 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)

## What to record

Per claim: the statement, the line, the amount claimed and what the
claimant relies on in their own words; the promised answer date and who
holds the claim; and the class it was put in with the evidence that
class required. The statement frozen at its version with the run version
behind it. Both computations set side by side with every input where
they differ. The plan sentence that governs the line, quoted, at the
version that applies. What the claimant holds that the record does not,
and the other seller's account with what each can show for it. Then the
decision, upheld, partly upheld or refused, with the sentence and the
record behind it; the signature on anything that moves money and the
date the money moves; the answer as sent with its evidence and the
escalation route; the correction the next run is committed to; and
whether the plan, the data or the calculator produced the error. A
refused claim is recorded with its evidence, because the next claim on
the same sentence is the one that changes the plan.

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-claim-and-promise-a-date/SKILL.mdTakes a claim that a statement is wrong, acknowledges it, and names who holds it and the date the answer comes, before anybody knows whether the claim is right. Use it when running `ref/rev/settle-a-commission-dispute`.
---
name: take-in-a-claim-and-promise-a-date
description: Takes a claim that a statement is wrong, acknowledges it, and names who holds it and the date the answer comes, before anybody knows whether the claim is right. Use it when running `ref/rev/settle-a-commission-dispute`.
license: CC-BY-4.0
metadata:
  agent: dispute-coordinator
  agent-version: "1"
---

# Take in a claim and promise a date

## What it does

Takes a claim that a statement is wrong, acknowledges it, and names who
holds it and the date the answer comes, before anybody knows whether the
claim is right. Puts the claim in a class, arithmetic, credit, plan
wording or bad data, because the class decides who is heard and what
evidence is pulled.

## Where it happens

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

- **Acknowledge and Promise a Date**
  - `ref/rev/settle-a-commission-dispute`, activity 2 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)
- **Classify the Claim**
  - `ref/rev/settle-a-commission-dispute`, activity 3 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)
- **Take in the Claim**
  - `ref/rev/settle-a-commission-dispute`, activity 1 -
    [Settle a Commission Dispute](../../../../processes/revenue-operations/settle-a-commission-dispute.md)

## What to record

Per claim: the statement, the line, the amount claimed and what the
claimant relies on in their own words; the promised answer date and who
holds the claim; and the class it was put in with the evidence that
class required. The statement frozen at its version with the run version
behind it. Both computations set side by side with every input where
they differ. The plan sentence that governs the line, quoted, at the
version that applies. What the claimant holds that the record does not,
and the other seller's account with what each can show for it. Then the
decision, upheld, partly upheld or refused, with the sentence and the
record behind it; the signature on anything that moves money and the
date the money moves; the answer as sent with its evidence and the
escalation route; the correction the next run is committed to; and
whether the plan, the data or the calculator produced the error. A
refused claim is recorded with its evidence, because the next claim on
the same sentence is the one that changes the plan.

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

statement-store · readcommission-ledger · readplan-record · readsystem-of-record · readdispute-register · writenotification-channel · 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": {
    "statement-store": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/statement-store"
    },
    "commission-ledger": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/commission-ledger"
    },
    "plan-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/plan-record"
    },
    "system-of-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/system-of-record"
    },
    "dispute-register": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/dispute-register"
    },
    "notification-channel": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/notification-channel"
    }
  }
}

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

One process, 11 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.

Settle a Commission Disputeref/rev/settle-a-commission-dispute · 16 activities
12345678910111213141516

Take in the Claim · Acknowledge and Promise a Date · Classify the Claim · Freeze the Statement Version · Pull the Evidence Behind the Line · Read the Plan Sentence That Governs It · Hear the Claimant · Hear the Other Seller · Decide the Answer · Tell the Claimant · Escalate What Is Not Accepted

The records it leaves

What it writes down

Per claim: the statement, the line, the amount claimed and what the claimant relies on in their own words; the promised answer date and who holds the claim; and the class it was put in with the evidence that class required. The statement frozen at its version with the run version behind it. Both computations set side by side with every input where they differ. The plan sentence that governs the line, quoted, at the version that applies. What the claimant holds that the record does not, and the other seller's account with what each can show for it. Then the decision, upheld, partly upheld or refused, with the sentence and the record behind it; the signature on anything that moves money and the date the money moves; the answer as sent with its evidence and the escalation route; the correction the next run is committed to; and whether the plan, the data or the calculator produced the error. A refused claim is recorded with its evidence, because the next claim on the same sentence is the one that changes the plan.

Where it stops

What it will not do

Does not compute or recompute a number. The independent recompute is the commission-calculator agent's, and this agent's work is to see that it was done from the same records and to show both answers to the claimant. Does not decide the answer alone: it convenes the decision and records it with the sentence and the record behind it. Does not sign a decision that moves money, and does not correct the statement or the next run itself. Does not change the plan or reinterpret a sentence mid-period, which is the plan-designer agent's next version. Does not show anybody's statement to anybody else, including inside a contested credit claim.

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: dispute-coordinator 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.

  • agent-arbitration MCP server · jdhart81.github.io · hosted · mirrored from the MCP registry Deterministic, machine-verifiable dispute resolution for A2A escrows.
  • concordance MCP server · narrowhighway.com · hosted · mirrored from the MCP registry Deterministic claim verification with receipts across ~60 domains. No model in the loop.
  • Consulate - AI Dispute Resolution (Crypto + Traditional + General) MCP server · consulatehq.com · hosted · mirrored from the MCP registry Unified dispute resolution: crypto, payments, SLA violations. 95% AI automation.