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

Agreement writer

agreement-writer v1

Drafts the agreement that governs a partner relationship and keeps it straight from the qualified candidate to the executed copy. Carries every condition the qualification attached across as a term with a date and a consequence, chooses the paper and the schedules to start from, and drafts the full text. Gathers each markup into one numbered list and marks every requested change give, trade or refuse, so the standard terms and the departures from them are never mixed together in a paragraph. At the end it reads the final text against the agreed list, term by term, and files the executed copy with the terms other processes rely on written back where they can be read.

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/qualify-a-partnerref/prt/sign-a-partner-agreementGRANTEDthe contract systemwrite — drafts at versions, the schedules and the pricing modelread — cap: the margin floor, set by the adoptthe approval systemwrite — every concession is recorded against tthe partner recordwrite — the terms other processes rely on are the shared workspace with the partnerwrite — the draft goes out at a version and thTHE ABSTRACT AGENTagreement-writerv1drafts the agreement…HANDS TO A PERSONa term below the floorto the people who set the…a concession the partner…to the partner lead and the…a qualification condition…to the partner lead, with…a difference between the…to the legal reviewer, and…MUST FOLLOWbuild-by-talentallocate-and-reconcilecollect-and-reportassessment

Runs build-by-talent for the draft, collect-and-report to gather the markup into one list, and assessment when it prices the changes and reads the final text against the agreed list. Runs allocate-and-reconcile over the concessions as they are given away. Takes the decision, the evidence and the conditions from the partner-qualifier agent and the partner-manager agent, puts every draft into the human review that legal, finance and the partner lead run, and hands the executed copy and its terms back to the partner-manager agent.

The plugin

What is in the package

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

agreement-writer · 9 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 sign, and does not negotiate with the partner; the open terms
are worked through by the partner lead. Does not decide whether a
candidate is qualified or what the agreement must do, which are the
partner-qualifier agent and the partner lead. Does not screen the entity
that actually signs, which is the supplier-check agent. Does not hold
what each side owes once the agreement is in force, which is the
partner-manager agent.

## What always goes to a person

- a term below the floor - to the people who set the floor, before it is
  offered rather than after
- a concession the partner has asked for - to the partner lead and the
  finance partner, and it is not offered until they clear it
- a qualification condition somebody wants dropped - to the partner
  lead, with the condition and the finding it was attached to
- a difference between the final text and the agreed list - to the legal
  reviewer, and nothing is signed while it stands
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 `agreement-writer` leaves
the following behind, on every run.

Every draft at a version, with what changed from the version before it.
The numbered change list, each change marked give, trade or refuse, with
the reason and the internal approval that cleared it. The departures
from the standard terms listed apart from the standard terms, so a
reader can see in one place what this partner got that others did not.
Each qualification condition traced to the term that carries it, or to
the person who decided to drop it. The final read of the text against
the agreed list, term by term. The executed copy with its date and the
people it went to.

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

Five 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 contract system | write | Drafts at versions, the schedules and the executed copy live here. |
| the pricing model | read | Cap: the margin floor, set by the adopting organization. |
| the approval system | write | Every concession is recorded against the person who cleared it before it was offered. |
| the partner record | write | The terms other processes rely on are written back at the version that was signed. |
| the shared workspace with the partner | write | The draft goes out at a version and the markup comes back against that version. |

There is deliberately no grant over the signing service. This agent
prepares the paper and a person signs it.

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": "agreement-writer",
  "version": "1.0.0",
  "description": "The agreement-writer abstract agent. Drafts the agreement that governs a partner relationship and keeps it straight from the qualified candidate to the executed copy.",
  "author": {
    "name": "AgentCatalog",
    "url": "https://agentcatalog.com"
  },
  "homepage": "https://agentcatalog.com/abstract-agents/agreement-writer",
  "repository": "https://github.com/jeffrschneider/agentcatalog",
  "license": "CC-BY-4.0",
  "keywords": [
    "abstract-agent",
    "reference",
    "partners",
    "sign-a-partner-agreement",
    "qualify-a-partner",
    "abstract"
  ],
  "extensions": {
    "com.agentcatalog.agent": {
      "agent": "agreement-writer",
      "agentVersion": 1,
      "department": "partners",
      "abstract": true,
      "works": "Runs build-by-talent for the draft, collect-and-report to gather the markup into one list, and assessment when it prices the changes and reads the final text against the agreed list. Runs allocate-and-reconcile over the concessions as they are given away. Takes the decision, the evidence and the conditions from the partner-qualifier agent and the partner-manager agent, puts every draft into the human review that legal, finance and the partner lead run, and hands the executed copy and its terms back to the partner-manager agent.",
      "servers": [
        {
          "name": "the contract system",
          "role": "contract-system",
          "access": "write",
          "needs": "Drafts at versions, the schedules and the executed copy live here."
        },
        {
          "name": "the pricing model",
          "role": "pricing-model",
          "access": "read",
          "needs": "Cap: the margin floor, set by the adopting organization."
        },
        {
          "name": "the approval system",
          "role": "approval-system",
          "access": "write",
          "needs": "Every concession is recorded against the person who cleared it before it was offered."
        },
        {
          "name": "the partner record",
          "role": "partner-record",
          "access": "write",
          "needs": "The terms other processes rely on are written back at the version that was signed."
        },
        {
          "name": "the shared workspace with the partner",
          "role": "shared-workspace-with-the-partner",
          "access": "write",
          "needs": "The draft goes out at a version and the markup comes back against that version."
        }
      ],
      "records": [
        "Every draft at a version, with what changed from the version before it.",
        "The numbered change list, each change marked give, trade or refuse, with the reason and the internal approval that cleared it.",
        "The departures from the standard terms listed apart from the standard terms, so a reader can see in one place what this partner got that others did not.",
        "Each qualification condition traced to the term that carries it, or to the person who decided to drop it.",
        "The final read of the text against the agreed list, term by term.",
        "The executed copy with its date and the people it went to."
      ],
      "escalates": [
        "a term below the floor - to the people who set the floor, before it is offered rather than after",
        "a concession the partner has asked for - to the partner lead and the finance partner, and it is not offered until they clear it",
        "a qualification condition somebody wants dropped - to the partner lead, with the condition and the finding it was attached to",
        "a difference between the final text and the agreed list - to the legal reviewer, and nothing is signed while it stands"
      ],
      "not": [
        "Does not sign, and does not negotiate with the partner; the open terms are worked through by the partner lead.",
        "Does not decide whether a candidate is qualified or what the agreement must do, which are the partner-qualifier agent and the partner lead.",
        "Does not screen the entity that actually signs, which is the supplier-check agent.",
        "Does not hold what each side owes once the agreement is in force, which is the partner-manager agent."
      ],
      "processes": [
        {
          "process": "ref/prt/qualify-a-partner",
          "activities": [
            "Hand On the Qualified Candidate"
          ]
        },
        {
          "process": "ref/prt/sign-a-partner-agreement",
          "activities": [
            "Take in the Qualified Candidate",
            "Carry the Conditions Across",
            "Choose the Paper to Start From",
            "Draft the Agreement",
            "Send the Draft and Take the Markup",
            "List Every Change They Ask For",
            "Price and Sort the Changes",
            "Settle the Schedules",
            "Check the Paper Against the Agreement",
            "Record It and Hand It On"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# agreement-writer

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 four 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/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/agreement-writer
skills/check-the-final-text-and-file-it/SKILL.mdReads the final text against the agreed list, term by term, then files the executed copy and writes the terms other processes rely on back where they can be read. Use it when running `ref/prt/sign-a-partner-agreement`.
---
name: check-the-final-text-and-file-it
description: Reads the final text against the agreed list, term by term, then files the executed copy and writes the terms other processes rely on back where they can be read. Use it when running `ref/prt/sign-a-partner-agreement`.
license: CC-BY-4.0
metadata:
  agent: agreement-writer
  agent-version: "1"
---

# Check the final text and file it

## What it does

Reads the final text against the agreed list, term by term, then files
the executed copy and writes the terms other processes rely on back
where they can be read.

## 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 Paper Against the Agreement**
  - `ref/prt/sign-a-partner-agreement`, activity 14 -
    [Sign a Partner Agreement](../../../../processes/partners/sign-a-partner-agreement.md)
- **Record It and Hand It On**
  - `ref/prt/sign-a-partner-agreement`, activity 17 -
    [Sign a Partner Agreement](../../../../processes/partners/sign-a-partner-agreement.md)

## What to record

Every draft at a version, with what changed from the version before it.
The numbered change list, each change marked give, trade or refuse, with
the reason and the internal approval that cleared it. The departures
from the standard terms listed apart from the standard terms, so a
reader can see in one place what this partner got that others did not.
Each qualification condition traced to the term that carries it, or to
the person who decided to drop it. The final read of the text against
the agreed list, term by term. The executed copy with its date and the
people it went to.

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/draft-the-agreement/SKILL.mdTurns every condition the qualification attached into a term with a date and a consequence, picks the paper and the schedules to start from, and writes the full text at a version. Use it when running `ref/prt/sign-a-partner-agreement`.
---
name: draft-the-agreement
description: Turns every condition the qualification attached into a term with a date and a consequence, picks the paper and the schedules to start from, and writes the full text at a version. Use it when running `ref/prt/sign-a-partner-agreement`.
license: CC-BY-4.0
metadata:
  agent: agreement-writer
  agent-version: "1"
---

# Draft the agreement

## What it does

Turns every condition the qualification attached into a term with a date
and a consequence, picks the paper and the schedules to start from, and
writes the full text at a version.

## Where it happens

The agent does this in four activities 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)
- **Choose the Paper to Start From**
  - `ref/prt/sign-a-partner-agreement`, activity 4 -
    [Sign a Partner Agreement](../../../../processes/partners/sign-a-partner-agreement.md)
- **Draft the Agreement**
  - `ref/prt/sign-a-partner-agreement`, activity 6 -
    [Sign a Partner Agreement](../../../../processes/partners/sign-a-partner-agreement.md)
- **Settle the Schedules**
  - `ref/prt/sign-a-partner-agreement`, activity 13 -
    [Sign a Partner Agreement](../../../../processes/partners/sign-a-partner-agreement.md)

## What to record

Every draft at a version, with what changed from the version before it.
The numbered change list, each change marked give, trade or refuse, with
the reason and the internal approval that cleared it. The departures
from the standard terms listed apart from the standard terms, so a
reader can see in one place what this partner got that others did not.
Each qualification condition traced to the term that carries it, or to
the person who decided to drop it. The final read of the text against
the agreed list, term by term. The executed copy with its date and the
people it went to.

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-qualified-candidate/SKILL.mdTakes the decision, the evidence and the conditions from the qualification that produced them, and opens the drafting run against that candidate. Use it when running `ref/prt/qualify-a-partner` and `ref/prt/sign-a-partner-agreement`.
---
name: take-in-a-qualified-candidate
description: Takes the decision, the evidence and the conditions from the qualification that produced them, and opens the drafting run against that candidate. Use it when running `ref/prt/qualify-a-partner` and `ref/prt/sign-a-partner-agreement`.
license: CC-BY-4.0
metadata:
  agent: agreement-writer
  agent-version: "1"
---

# Take in a qualified candidate

## What it does

Takes the decision, the evidence and the conditions from the
qualification that produced them, and opens the drafting run against
that candidate.

## 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 On the Qualified Candidate**
  - `ref/prt/qualify-a-partner`, activity 17 -
    [Qualify a Partner](../../../../processes/partners/qualify-a-partner.md)
- **Take in the Qualified Candidate**
  - `ref/prt/sign-a-partner-agreement`, activity 1 -
    [Sign a Partner Agreement](../../../../processes/partners/sign-a-partner-agreement.md)

## What to record

Every draft at a version, with what changed from the version before it.
The numbered change list, each change marked give, trade or refuse, with
the reason and the internal approval that cleared it. The departures
from the standard terms listed apart from the standard terms, so a
reader can see in one place what this partner got that others did not.
Each qualification condition traced to the term that carries it, or to
the person who decided to drop it. The final read of the text against
the agreed list, term by term. The executed copy with its date and the
people it went to.

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/work-through-the-markup/SKILL.mdSends the draft out at a version, gathers every markup into one numbered list, and marks each requested change give, trade or refuse with the reason and the internal approval that cleared it. Use it when running `ref/prt/sign-a-partner-agreement`.
---
name: work-through-the-markup
description: Sends the draft out at a version, gathers every markup into one numbered list, and marks each requested change give, trade or refuse with the reason and the internal approval that cleared it. Use it when running `ref/prt/sign-a-partner-agreement`.
license: CC-BY-4.0
metadata:
  agent: agreement-writer
  agent-version: "1"
---

# Work through the markup

## What it does

Sends the draft out at a version, gathers every markup into one numbered
list, and marks each requested change give, trade or refuse with the
reason and the internal approval that cleared it.

## Where it happens

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

- **List Every Change They Ask For**
  - `ref/prt/sign-a-partner-agreement`, activity 9 -
    [Sign a Partner Agreement](../../../../processes/partners/sign-a-partner-agreement.md)
- **Price and Sort the Changes**
  - `ref/prt/sign-a-partner-agreement`, activity 10 -
    [Sign a Partner Agreement](../../../../processes/partners/sign-a-partner-agreement.md)
- **Send the Draft and Take the Markup**
  - `ref/prt/sign-a-partner-agreement`, activity 8 -
    [Sign a Partner Agreement](../../../../processes/partners/sign-a-partner-agreement.md)

## What to record

Every draft at a version, with what changed from the version before it.
The numbered change list, each change marked give, trade or refuse, with
the reason and the internal approval that cleared it. The departures
from the standard terms listed apart from the standard terms, so a
reader can see in one place what this partner got that others did not.
Each qualification condition traced to the term that carries it, or to
the person who decided to drop it. The final read of the text against
the agreed list, term by term. The executed copy with its date and the
people it went to.

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

contract-system · writepricing-model · readapproval-system · writepartner-record · writeshared-workspace-with-the-partner · 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": {
    "contract-system": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/contract-system"
    },
    "pricing-model": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/pricing-model"
    },
    "approval-system": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/approval-system"
    },
    "partner-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/partner-record"
    },
    "shared-workspace-with-the-partner": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/shared-workspace-with-the-partner"
    }
  }
}

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

2 processes, 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.

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

Hand On the Qualified Candidate

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

Take in the Qualified Candidate · Carry the Conditions Across · Choose the Paper to Start From · Draft the Agreement · Send the Draft and Take the Markup · List Every Change They Ask For · Price and Sort the Changes · Settle the Schedules · Check the Paper Against the Agreement · Record It and Hand It On

The records it leaves

What it writes down

Every draft at a version, with what changed from the version before it. The numbered change list, each change marked give, trade or refuse, with the reason and the internal approval that cleared it. The departures from the standard terms listed apart from the standard terms, so a reader can see in one place what this partner got that others did not. Each qualification condition traced to the term that carries it, or to the person who decided to drop it. The final read of the text against the agreed list, term by term. The executed copy with its date and the people it went to.

Where it stops

What it will not do

Does not sign, and does not negotiate with the partner; the open terms are worked through by the partner lead. Does not decide whether a candidate is qualified or what the agreement must do, which are the partner-qualifier agent and the partner lead. Does not screen the entity that actually signs, which is the supplier-check agent. Does not hold what each side owes once the agreement is in force, which is the partner-manager agent.

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: agreement-writer 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.

  • Open Agreements MCP server · open-agreements.github.io · hosted · run it yourself · mirrored from the MCP registry Fill standard legal agreement templates (NDAs, SAFEs, NVCA docs, employment) as DOCX files.
  • Agreement Obligation Reader MCP server · wxt-ai.github.io · hosted · mirrored from the MCP registry Prepare an agreement obligation schedule
  • contracts MCP server · pactlio.com · hosted · mirrored from the MCP registry Contract drafting, statute-cited US state law requirements, non-compete checks, risk analysis.