Agreement writer
agreement-writer v1Drafts 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.
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.
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.
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.
# 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
# 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.
# 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.
{
"$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"
]
}
]
}
}
}
# 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
--- 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`.
--- 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`.
--- 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`.
--- 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`.
Every server entry in an mcp.json needs either a command to run or a url to connect to, and the package cannot know either of those until somebody points it at their own systems. So the file is left out, the systems the agent needs are named by role in plugin.json, and you write the mcp.json when you set it up.
Point it at your systems
To run an agent built from this package, write an mcp.json that says which of your systems fills each role. The package names these 5 roles, and the access level beside each one is the most the work needs.
{
"$schema": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
"mcpServers": {
"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.
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.
Hand On the Qualified Candidate
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
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.
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.
Who has built one, and how far each one got
Nobody has built one yet. The catalog says so rather than leaving the section off, because an empty list is a fact about the document.
implements: agreement-writer v1
One line in your agent's manifest. The catalog checks it against the records your runs actually leave.
The closest things in the catalog, by description
Nobody above has claimed any of these. This is the nearest match by wording between the job written above and what publishers wrote about their own listings, closest first, and wording is not evidence: some of these will be wrong, and a job with nothing suitable still gets whatever was nearest. The publishers have never heard of this abstract agent and have promised nothing about it. What a claim looks like is in the table above, and it is signed.
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.