Negotiation coordinator
negotiation-coordinator v1Keeps the negotiation straight. Gathers every ask the buyer has made into one numbered list in the buyer's own words, prices each one, and holds the record of which were given, which were traded and which were refused. Every closed ask carries its answer, the reason behind it, the date, and the name of the person on each side who agreed to it. Concessions are cleared inside before they are offered, and a refusal goes back in writing rather than only in a call. What leaves the run is one written position both sides hold, which the redline review and the close plan then work from instead of from anybody's memory.
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 collect-and-report to build the list of asks and to confirm who signs on each side and who they need first. Runs assessment to price each ask and to rebuild the offer from what was actually agreed. Convenes decide-and-announce to sort the asks into give, trade and refuse, requests the approval that must pass before a concession is offered, and convenes the approval in which both sides confirm one list of agreed terms. Runs allocate-and-reconcile over the concession record for the life of the run. Takes the contract reconciliation from the redline-reviewer agent and hands the agreed position to the close-plan-keeper agent.
What is in the package
6 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 approve a concession or set the floor. It prices the ask, records the answer and names the approver, and named people sign. Does not review the contract clause by clause, which is the redline-reviewer agent, and a change that moves price, term or scope is settled here rather than inside a markup. Does not run the close plan, which is the close-plan-keeper agent. Does not sign, and does not treat an ask as closed because a call went well. ## What always goes to a person - an ask below the walk-away floor, to the sales leader who set the floor, because only that person may move it and moving it is recorded as a decision - a concession found offered with no approval behind it, to the approvers, and the buyer is told the term is not confirmed - an ask neither side will move on, to the sales leader and the matching person on the buyer's side, with both positions and what each side says it cannot do - a decider who was never in the room, to the deal owner, and the asks are checked again against what the new person wants - a deadlock that runs out its clock, to whoever decides between refusing on our terms and closing the deal as lost
# The records this abstract agent must leave
This is the contract. An agent implementing `negotiation-coordinator`
leaves the following behind, on every run.
The numbered list of asks in the buyer's own wording, each with the
person who raised it. The floor on price, term, liability and payment,
and who set it. What each ask costs, which budget carries it, and the
margin after it. Each ask marked give, trade or refuse, with what was
asked for in return on every trade. Every approval with its approver and
its date, given before the concession was offered. Every closed ask with
the answer, the reason, the date and the person on each side who agreed.
Every refusal as it went to the buyer. The rebuilt offer with each
changed line traced to an ask, and the dated position both sides
confirmed, with the open items nobody closed listed beside it.
An agent that leaves less than this does not implement
`negotiation-coordinator`, whatever else it does well.
# 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 CRM | write | The offer as sent, the buyer's reply, and the notes from the calls since. |
| the quoting system | write | The offer rebuilt from what was agreed, with every changed line traced to the ask that changed it. |
| the contract system | read | The paper the agreed terms are read against. |
| the approval system | read | Which concession is signed, by whom, and on what date. |
| the pricing model | read | What each ask costs and what it does to margin, within a discount cap the adopting process sets. |
| the shared workspace with the buyer | write | The list both sides confirm, and the refusals in writing. |
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": "negotiation-coordinator",
"version": "1.0.0",
"description": "The negotiation-coordinator abstract agent. Keeps the negotiation straight. Gathers every ask the buyer has made into one numbered list in the buyer's own words, prices each one, and holds the record of which were given, which were traded and which were refused.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/negotiation-coordinator",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"sales",
"negotiate-the-agreement",
"record-a-lost-deal",
"review-the-redlines",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "negotiation-coordinator",
"agentVersion": 1,
"department": "sales",
"abstract": true,
"works": "Runs collect-and-report to build the list of asks and to confirm who signs on each side and who they need first. Runs assessment to price each ask and to rebuild the offer from what was actually agreed. Convenes decide-and-announce to sort the asks into give, trade and refuse, requests the approval that must pass before a concession is offered, and convenes the approval in which both sides confirm one list of agreed terms. Runs allocate-and-reconcile over the concession record for the life of the run. Takes the contract reconciliation from the redline-reviewer agent and hands the agreed position to the close-plan-keeper agent.",
"servers": [
{
"name": "the CRM",
"role": "crm",
"access": "write",
"needs": "The offer as sent, the buyer's reply, and the notes from the calls since."
},
{
"name": "the quoting system",
"role": "quoting-system",
"access": "write",
"needs": "The offer rebuilt from what was agreed, with every changed line traced to the ask that changed it."
},
{
"name": "the contract system",
"role": "contract-system",
"access": "read",
"needs": "The paper the agreed terms are read against."
},
{
"name": "the approval system",
"role": "approval-system",
"access": "read",
"needs": "Which concession is signed, by whom, and on what date."
},
{
"name": "the pricing model",
"role": "pricing-model",
"access": "read",
"needs": "What each ask costs and what it does to margin, within a discount cap the adopting process sets."
},
{
"name": "the shared workspace with the buyer",
"role": "shared-workspace-with-the-buyer",
"access": "write",
"needs": "The list both sides confirm, and the refusals in writing."
}
],
"records": [
"The numbered list of asks in the buyer's own wording, each with the person who raised it.",
"The floor on price, term, liability and payment, and who set it.",
"What each ask costs, which budget carries it, and the margin after it.",
"Each ask marked give, trade or refuse, with what was asked for in return on every trade.",
"Every approval with its approver and its date, given before the concession was offered.",
"Every closed ask with the answer, the reason, the date and the person on each side who agreed.",
"Every refusal as it went to the buyer.",
"The rebuilt offer with each changed line traced to an ask, and the dated position both sides confirmed, with the open items nobody closed listed beside it."
],
"escalates": [
"an ask below the walk-away floor, to the sales leader who set the floor, because only that person may move it and moving it is recorded as a decision",
"a concession found offered with no approval behind it, to the approvers, and the buyer is told the term is not confirmed",
"an ask neither side will move on, to the sales leader and the matching person on the buyer's side, with both positions and what each side says it cannot do",
"a decider who was never in the room, to the deal owner, and the asks are checked again against what the new person wants",
"a deadlock that runs out its clock, to whoever decides between refusing on our terms and closing the deal as lost"
],
"not": [
"Does not approve a concession or set the floor.",
"It prices the ask, records the answer and names the approver, and named people sign.",
"Does not review the contract clause by clause, which is the redline-reviewer agent, and a change that moves price, term or scope is settled here rather than inside a markup.",
"Does not run the close plan, which is the close-plan-keeper agent.",
"Does not sign, and does not treat an ask as closed because a call went well."
],
"processes": [
{
"process": "ref/sls/negotiate-the-agreement",
"activities": [
"Take in the Offer and the Reply",
"List What Is Asked For",
"Confirm Who Decides",
"Set the Walk-Away Terms",
"Price the Asks",
"Sort the Asks",
"Hold the Negotiation Session",
"Record What Was Agreed",
"Refuse in Writing",
"Re-Price the Deal",
"Confirm the Agreed Position",
"Hand On the Agreed Position"
]
},
{
"process": "ref/sls/record-a-lost-deal",
"activities": [
"Make One Recovery Attempt"
]
},
{
"process": "ref/sls/review-the-redlines",
"activities": [
"Review the Business Terms"
]
},
{
"process": "ref/sls/run-the-close-plan",
"activities": [
"Escalate a Stalled Step"
]
}
]
}
}
}
# negotiation-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 six 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/sls/negotiate-the-agreement`, `ref/sls/record-a-lost-deal`, `ref/sls/review-the-redlines`, `ref/sls/run-the-close-plan`. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/negotiation-coordinator
--- name: answer-the-commercial-terms-in-a-markup description: Reads the price, term and scope changes inside a buyer's markup, because a commercial ask dressed as a legal change is settled here rather than inside the contract text. Use it when running `ref/sls/review-the-redlines`. license: CC-BY-4.0 metadata: agent: negotiation-coordinator agent-version: "1" --- # Answer the commercial terms in a markup ## What it does Reads the price, term and scope changes inside a buyer's markup, because a commercial ask dressed as a legal change is settled here rather than inside the contract text. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Review the Business Terms** - `ref/sls/review-the-redlines`, activity 6 - [Review the Redlines](../../../../processes/sales/review-the-redlines.md) ## What to record The numbered list of asks in the buyer's own wording, each with the person who raised it. The floor on price, term, liability and payment, and who set it. What each ask costs, which budget carries it, and the margin after it. Each ask marked give, trade or refuse, with what was asked for in return on every trade. Every approval with its approver and its date, given before the concession was offered. Every closed ask with the answer, the reason, the date and the person on each side who agreed. Every refusal as it went to the buyer. The rebuilt offer with each changed line traced to an ask, and the dated position both sides confirmed, with the open items nobody closed listed beside it. 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: hold-the-session-and-record-the-answers description: Runs the session against the sorted list, and closes each ask with its answer, its reason, its date and the name of the person on each side who agreed to it. Use it when running `ref/sls/negotiate-the-agreement`. license: CC-BY-4.0 metadata: agent: negotiation-coordinator agent-version: "1" --- # Hold the session and record the answers ## What it does Runs the session against the sorted list, and closes each ask with its answer, its reason, its date and the name of the person on each side who agreed to it. A refusal goes back to the buyer in writing rather than only in a call. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Hold the Negotiation Session** - `ref/sls/negotiate-the-agreement`, activity 8 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) - **Record What Was Agreed** - `ref/sls/negotiate-the-agreement`, activity 9 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) - **Refuse in Writing** - `ref/sls/negotiate-the-agreement`, activity 10 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) ## What to record The numbered list of asks in the buyer's own wording, each with the person who raised it. The floor on price, term, liability and payment, and who set it. What each ask costs, which budget carries it, and the margin after it. Each ask marked give, trade or refuse, with what was asked for in return on every trade. Every approval with its approver and its date, given before the concession was offered. Every closed ask with the answer, the reason, the date and the person on each side who agreed. Every refusal as it went to the buyer. The rebuilt offer with each changed line traced to an ask, and the dated position both sides confirmed, with the open items nobody closed listed beside it. 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: price-the-asks-and-set-the-floor description: Sets the floor on price, term, liability and payment, and names who set it. Use it when running `ref/sls/negotiate-the-agreement`. license: CC-BY-4.0 metadata: agent: negotiation-coordinator agent-version: "1" --- # Price the asks and set the floor ## What it does Sets the floor on price, term, liability and payment, and names who set it. Prices each ask against what it costs and what it does to margin, then sorts the list into give, trade and refuse, with what is asked for in return on every trade. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Price the Asks** - `ref/sls/negotiate-the-agreement`, activity 5 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) - **Set the Walk-Away Terms** - `ref/sls/negotiate-the-agreement`, activity 4 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) - **Sort the Asks** - `ref/sls/negotiate-the-agreement`, activity 6 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) ## What to record The numbered list of asks in the buyer's own wording, each with the person who raised it. The floor on price, term, liability and payment, and who set it. What each ask costs, which budget carries it, and the margin after it. Each ask marked give, trade or refuse, with what was asked for in return on every trade. Every approval with its approver and its date, given before the concession was offered. Every closed ask with the answer, the reason, the date and the person on each side who agreed. Every refusal as it went to the buyer. The rebuilt offer with each changed line traced to an ask, and the dated position both sides confirmed, with the open items nobody closed listed beside it. 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: push-a-deal-that-has-stopped-moving description: Takes a step nobody will move up on both sides, and makes one named attempt to reopen a deal that was called lost, with the answer recorded either way. Use it when running `ref/sls/record-a-lost-deal` and `ref/sls/run-the-close-plan`. license: CC-BY-4.0 metadata: agent: negotiation-coordinator agent-version: "1" --- # Push a deal that has stopped moving ## What it does Takes a step nobody will move up on both sides, and makes one named attempt to reopen a deal that was called lost, with the answer recorded either way. ## Where it happens The agent does this in two activities across two reference processes. Each one names the activity as that process words it. - **Escalate a Stalled Step** - `ref/sls/run-the-close-plan`, activity 13 - [Run the Close Plan](../../../../processes/sales/run-the-close-plan.md) - **Make One Recovery Attempt** - `ref/sls/record-a-lost-deal`, activity 3 - [Record a Lost Deal](../../../../processes/sales/record-a-lost-deal.md) ## What to record The numbered list of asks in the buyer's own wording, each with the person who raised it. The floor on price, term, liability and payment, and who set it. What each ask costs, which budget carries it, and the margin after it. Each ask marked give, trade or refuse, with what was asked for in return on every trade. Every approval with its approver and its date, given before the concession was offered. Every closed ask with the answer, the reason, the date and the person on each side who agreed. Every refusal as it went to the buyer. The rebuilt offer with each changed line traced to an ask, and the dated position both sides confirmed, with the open items nobody closed listed beside it. 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: rebuild-the-offer-and-confirm-the-position description: Rebuilds the offer from what was actually agreed, with every changed line traced to the ask that changed it, gets both sides to confirm one dated list of agreed terms, and hands that position on to the redline review and the close plan. Use it when running `ref/sls/negotiate-the-agreement`. license: CC-BY-4.0 metadata: agent: negotiation-coordinator agent-version: "1" --- # Rebuild the offer and confirm the position ## What it does Rebuilds the offer from what was actually agreed, with every changed line traced to the ask that changed it, gets both sides to confirm one dated list of agreed terms, and hands that position on to the redline review and the close plan. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Confirm the Agreed Position** - `ref/sls/negotiate-the-agreement`, activity 14 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) - **Hand On the Agreed Position** - `ref/sls/negotiate-the-agreement`, activity 15 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) - **Re-Price the Deal** - `ref/sls/negotiate-the-agreement`, activity 12 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) ## What to record The numbered list of asks in the buyer's own wording, each with the person who raised it. The floor on price, term, liability and payment, and who set it. What each ask costs, which budget carries it, and the margin after it. Each ask marked give, trade or refuse, with what was asked for in return on every trade. Every approval with its approver and its date, given before the concession was offered. Every closed ask with the answer, the reason, the date and the person on each side who agreed. Every refusal as it went to the buyer. The rebuilt offer with each changed line traced to an ask, and the dated position both sides confirmed, with the open items nobody closed listed beside it. 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-the-offer-and-list-what-is-asked-for description: Reads the offer as it was sent and the reply that came back, and gathers every ask into one numbered list in the buyer's own words with the person who raised each one. Use it when running `ref/sls/negotiate-the-agreement`. license: CC-BY-4.0 metadata: agent: negotiation-coordinator agent-version: "1" --- # Take in the offer and list what is asked for ## What it does Reads the offer as it was sent and the reply that came back, and gathers every ask into one numbered list in the buyer's own words with the person who raised each one. Confirms who actually signs on each side and who they need first. ## Where it happens The agent does this in three activities across one reference process. Each one names the activity as that process words it. - **Confirm Who Decides** - `ref/sls/negotiate-the-agreement`, activity 3 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) - **List What Is Asked For** - `ref/sls/negotiate-the-agreement`, activity 2 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) - **Take in the Offer and the Reply** - `ref/sls/negotiate-the-agreement`, activity 1 - [Negotiate the Agreement](../../../../processes/sales/negotiate-the-agreement.md) ## What to record The numbered list of asks in the buyer's own wording, each with the person who raised it. The floor on price, term, liability and payment, and who set it. What each ask costs, which budget carries it, and the margin after it. Each ask marked give, trade or refuse, with what was asked for in return on every trade. Every approval with its approver and its date, given before the concession was offered. Every closed ask with the answer, the reason, the date and the person on each side who agreed. Every refusal as it went to the buyer. The rebuilt offer with each changed line traced to an ask, and the dated position both sides confirmed, with the open items nobody closed listed beside it. 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 6 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": {
"crm": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/crm"
},
"quoting-system": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/quoting-system"
},
"contract-system": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/contract-system"
},
"approval-system": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/approval-system"
},
"pricing-model": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/pricing-model"
},
"shared-workspace-with-the-buyer": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/shared-workspace-with-the-buyer"
}
}
}
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.
4 processes, 15 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.
Take in the Offer and the Reply · List What Is Asked For · Confirm Who Decides · Set the Walk-Away Terms · Price the Asks · Sort the Asks · Hold the Negotiation Session · Record What Was Agreed · Refuse in Writing · Re-Price the Deal · Confirm the Agreed Position · Hand On the Agreed Position
Make One Recovery Attempt
Review the Business Terms
Escalate a Stalled Step
What it writes down
The numbered list of asks in the buyer's own wording, each with the person who raised it. The floor on price, term, liability and payment, and who set it. What each ask costs, which budget carries it, and the margin after it. Each ask marked give, trade or refuse, with what was asked for in return on every trade. Every approval with its approver and its date, given before the concession was offered. Every closed ask with the answer, the reason, the date and the person on each side who agreed. Every refusal as it went to the buyer. The rebuilt offer with each changed line traced to an ask, and the dated position both sides confirmed, with the open items nobody closed listed beside it.
What it will not do
Does not approve a concession or set the floor. It prices the ask, records the answer and names the approver, and named people sign. Does not review the contract clause by clause, which is the redline-reviewer agent, and a change that moves price, term or scope is settled here rather than inside a markup. Does not run the close plan, which is the close-plan-keeper agent. Does not sign, and does not treat an ask as closed because a call went well.
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: negotiation-coordinator 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.
- SNHP — free negotiation math + agent memory MCP server · ryuxik.github.io · hosted · mirrored from the MCP registry Free game-theory negotiation advisor for agents, plus paid receipted sessions and agent memory.
- CHAP Coordinator MCP server · brightbeamai.github.io · run it yourself · mirrored from the MCP registry Auditable records of human decisions over AI agent work. Approvals, edits, overrides, escalations.
- transaction-coordinator MCP server · gordonhal.github.io · hosted · mirrored from the MCP registry AI transaction coordinator + legal-matters platform for real estate and law firms.