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

Proposal writer

proposal-writer v1

Writes the proposal a buyer reads. Takes an approved quote and turns it into a document that says what the customer asked for in their own words, what is included line by line, what is deliberately not included, what it costs over what term, and what happens between a yes and the work starting. The reusable sections come from the library at their approved versions, and the price is the price on the approved quote and no other number. It assembles one file at one version, delivers it the way the buyer asked, and records what went to whom.

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/sls/configure-and-priceref/sls/respond-to-an-rfpref/sls/write-a-proposalGRANTEDthe content libraryread — the approved sections, each pulled at ithe quoting systemread — the approved quote, its price and the dthe claims registerread — what the organization has agreed to saythe document storewrite — one file at one version, datedthe sending systemwrite — delivery to the people the decision nathe tracking systemread — who opened it, who it was shared with, THE ABSTRACT AGENTproposal-writerv1writes the proposal a…HANDS TO A PERSONan approved quote that…a person decidesa claim with no entry in…a person decidesa buyer asking for a shape…a person decidesa document nobody opened,…a person decidesa document forwarded to…a person decidesMUST FOLLOWbuild-by-talentcollect-and-reportbriefingdebrief

Convenes the briefing that settles the shape, the length and the format the buyer asked for, and runs collect-and-report on who signs, who can stop it and what each of them needs to see. Runs build-by-talent for the scope section and the narrative, requests the sign-off that legal and the deal desk give against a named version, and convenes the debrief that closes the run. Takes the quote from the quote-builder agent, the exclusions and assumptions from the solution architect, the approved sections and the claim check from the standards-keeper agent, and the answered requirements from the questionnaire-responder agent.

The plugin

What is in the package

5 skills and the systems they need, written to version 1.1.0 of the Agent Plugins standard. Nothing in these files names a product. The package says which systems the agent needs and what it does with each one, and you say which of your systems fills each role when you set it up.

proposal-writer · 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 price. The number in the document is the number on the approved
quote, and the quote-builder agent owns it. Does not decide what is
included, which comes from the configuration that was priced and from
the solution architect who writes what is excluded. Does not answer
security, legal or procurement questionnaires, which is the
questionnaire-responder agent working from a maintained source. Does not
sign, and does not send a version that sign-off did not cover.

## What always goes to a person

- an approved quote that stops holding while the document is being
  written, to the quote-builder agent and the account owner, before a
  price nobody stands behind is sent
- a claim with no entry in the register, to the standards-keeper agent
  and the signers, with the sentence named, rather than left in with a
  note to fix later
- a buyer asking for a shape the organization does not write, to the
  account owner, who settles with the buyer what is actually being asked
  for
- a document nobody opened, to the account owner, because a proposal
  that never reached anyone is not a lost deal
- a document forwarded to somebody the decision did not name, to the
  account owner, with who it reached
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 `proposal-writer` leaves the
following behind, on every run.

Per proposal: the section list agreed at the briefing and the promised
date, every reusable section with the library version it came from and
every section the library did not have, the customer's own words with
the conversation and date each quote came from, the scope traced line by
line to the configuration that was priced, the exclusions, the price and
the date the offer stops holding, the sign-off against a named version
with the signers, and the version that actually went out with its date
and its recipients. When the buyer quotes back a price, the recorded
version settles it.

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

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 content library | read | The approved sections, each pulled at its current version and recorded at that version. |
| the quoting system | read | The approved quote, its price and the date it stops holding. |
| the claims register | read | What the organization has agreed to say, so nothing is written that cannot be traced to it. |
| the document store | write | One file at one version, dated. |
| the sending system | write | Delivery to the people the decision named, in the format the buyer asked for. |
| the tracking system | read | Who opened it, who it was shared with, and how far they read. |

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": "proposal-writer",
  "version": "1.0.0",
  "description": "The proposal-writer abstract agent. Writes the proposal a buyer reads. Takes an approved quote and turns it into a document that says what the customer asked for in their own words, what is included line by line, what is deliberately not included, what it costs over what term, and what happens between a yes and the work starting.",
  "author": {
    "name": "AgentCatalog",
    "url": "https://agentcatalog.com"
  },
  "homepage": "https://agentcatalog.com/abstract-agents/proposal-writer",
  "repository": "https://github.com/jeffrschneider/agentcatalog",
  "license": "CC-BY-4.0",
  "keywords": [
    "abstract-agent",
    "reference",
    "sales",
    "write-a-proposal",
    "respond-to-an-rfp",
    "configure-and-price",
    "abstract"
  ],
  "extensions": {
    "com.agentcatalog.agent": {
      "agent": "proposal-writer",
      "agentVersion": 1,
      "department": "sales",
      "abstract": true,
      "works": "Convenes the briefing that settles the shape, the length and the format the buyer asked for, and runs collect-and-report on who signs, who can stop it and what each of them needs to see. Runs build-by-talent for the scope section and the narrative, requests the sign-off that legal and the deal desk give against a named version, and convenes the debrief that closes the run. Takes the quote from the quote-builder agent, the exclusions and assumptions from the solution architect, the approved sections and the claim check from the standards-keeper agent, and the answered requirements from the questionnaire-responder agent.",
      "servers": [
        {
          "name": "the content library",
          "role": "content-library",
          "access": "read",
          "needs": "The approved sections, each pulled at its current version and recorded at that version."
        },
        {
          "name": "the quoting system",
          "role": "quoting-system",
          "access": "read",
          "needs": "The approved quote, its price and the date it stops holding."
        },
        {
          "name": "the claims register",
          "role": "claims-register",
          "access": "read",
          "needs": "What the organization has agreed to say, so nothing is written that cannot be traced to it."
        },
        {
          "name": "the document store",
          "role": "document-store",
          "access": "write",
          "needs": "One file at one version, dated."
        },
        {
          "name": "the sending system",
          "role": "sending-system",
          "access": "write",
          "needs": "Delivery to the people the decision named, in the format the buyer asked for."
        },
        {
          "name": "the tracking system",
          "role": "tracking-system",
          "access": "read",
          "needs": "Who opened it, who it was shared with, and how far they read."
        }
      ],
      "records": [
        "Per proposal: the section list agreed at the briefing and the promised date, every reusable section with the library version it came from and every section the library did not have, the customer's own words with the conversation and date each quote came from, the scope traced line by line to the configuration that was priced, the exclusions, the price and the date the offer stops holding, the sign-off against a named version with the signers, and the version that actually went out with its date and its recipients.",
        "When the buyer quotes back a price, the recorded version settles it."
      ],
      "escalates": [
        "an approved quote that stops holding while the document is being written, to the quote-builder agent and the account owner, before a price nobody stands behind is sent",
        "a claim with no entry in the register, to the standards-keeper agent and the signers, with the sentence named, rather than left in with a note to fix later",
        "a buyer asking for a shape the organization does not write, to the account owner, who settles with the buyer what is actually being asked for",
        "a document nobody opened, to the account owner, because a proposal that never reached anyone is not a lost deal",
        "a document forwarded to somebody the decision did not name, to the account owner, with who it reached"
      ],
      "not": [
        "Does not price.",
        "The number in the document is the number on the approved quote, and the quote-builder agent owns it.",
        "Does not decide what is included, which comes from the configuration that was priced and from the solution architect who writes what is excluded.",
        "Does not answer security, legal or procurement questionnaires, which is the questionnaire-responder agent working from a maintained source.",
        "Does not sign, and does not send a version that sign-off did not cover."
      ],
      "processes": [
        {
          "process": "ref/sls/configure-and-price",
          "activities": [
            "Hand the Quote On"
          ]
        },
        {
          "process": "ref/sls/respond-to-an-rfp",
          "activities": [
            "Write the Narrative",
            "Assemble and Submit",
            "Handle Clarifications"
          ]
        },
        {
          "process": "ref/sls/write-a-proposal",
          "activities": [
            "Take in the Approved Quote",
            "Read the Buyer's Decision",
            "Agree the Shape of the Document",
            "Pull the Reusable Parts",
            "Write the Problem in Their Words",
            "Write What Is Included",
            "Write What Is Not Included",
            "Write the Price and the Terms",
            "Write What Happens Next",
            "Assemble and Version the Document",
            "Deliver It to the Buyer",
            "Watch What the Buyer Does",
            "Record What Was Sent"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# proposal-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 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/sls/configure-and-price`, `ref/sls/respond-to-an-rfp`,
`ref/sls/write-a-proposal`. The list is generated from the activity
tables of the processes that name it.

https://agentcatalog.com/abstract-agents/proposal-writer
skills/assemble-it-and-send-it/SKILL.mdAssembles one file at one version, delivers it the way the buyer asked and inside the deadline a bid sets, and records the version that actually went out with its date, its signers and its recipients. Use it when running `ref/sls/respond-to-an-rfp` and `ref/sls/write-a-proposal`.
---
name: assemble-it-and-send-it
description: Assembles one file at one version, delivers it the way the buyer asked and inside the deadline a bid sets, and records the version that actually went out with its date, its signers and its recipients. Use it when running `ref/sls/respond-to-an-rfp` and `ref/sls/write-a-proposal`.
license: CC-BY-4.0
metadata:
  agent: proposal-writer
  agent-version: "1"
---

# Assemble it and send it

## What it does

Assembles one file at one version, delivers it the way the buyer asked
and inside the deadline a bid sets, and records the version that
actually went out with its date, its signers and its recipients.

## Where it happens

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

- **Assemble and Submit**
  - `ref/sls/respond-to-an-rfp`, activity 14 -
    [Respond to an RFP](../../../../processes/sales/respond-to-an-rfp.md)
- **Assemble and Version the Document**
  - `ref/sls/write-a-proposal`, activity 12 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)
- **Deliver It to the Buyer**
  - `ref/sls/write-a-proposal`, activity 13 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)
- **Record What Was Sent**
  - `ref/sls/write-a-proposal`, activity 15 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)

## What to record

Per proposal: the section list agreed at the briefing and the promised
date, every reusable section with the library version it came from and
every section the library did not have, the customer's own words with
the conversation and date each quote came from, the scope traced line by
line to the configuration that was priced, the exclusions, the price and
the date the offer stops holding, the sign-off against a named version
with the signers, and the version that actually went out with its date
and its recipients. When the buyer quotes back a price, the recorded
version settles 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`.
skills/settle-the-shape-and-pull-what-exists/SKILL.mdAgrees the shape, the length and the format the buyer asked for, then pulls the sections the library already holds at their approved versions. Use it when running `ref/sls/write-a-proposal`.
---
name: settle-the-shape-and-pull-what-exists
description: Agrees the shape, the length and the format the buyer asked for, then pulls the sections the library already holds at their approved versions. Use it when running `ref/sls/write-a-proposal`.
license: CC-BY-4.0
metadata:
  agent: proposal-writer
  agent-version: "1"
---

# Settle the shape and pull what exists

## What it does

Agrees the shape, the length and the format the buyer asked for, then
pulls the sections the library already holds at their approved versions.
Every section the library does not have is named rather than assumed.

## Where it happens

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

- **Agree the Shape of the Document**
  - `ref/sls/write-a-proposal`, activity 3 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)
- **Pull the Reusable Parts**
  - `ref/sls/write-a-proposal`, activity 4 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)

## What to record

Per proposal: the section list agreed at the briefing and the promised
date, every reusable section with the library version it came from and
every section the library did not have, the customer's own words with
the conversation and date each quote came from, the scope traced line by
line to the configuration that was priced, the exclusions, the price and
the date the offer stops holding, the sign-off against a named version
with the signers, and the version that actually went out with its date
and its recipients. When the buyer quotes back a price, the recorded
version settles 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`.
skills/take-in-the-quote-and-the-buyers-decision/SKILL.mdStarts from the approved quote as it is handed on, with its price and the date it stops holding. Use it when running `ref/sls/configure-and-price` and `ref/sls/write-a-proposal`.
---
name: take-in-the-quote-and-the-buyers-decision
description: Starts from the approved quote as it is handed on, with its price and the date it stops holding. Use it when running `ref/sls/configure-and-price` and `ref/sls/write-a-proposal`.
license: CC-BY-4.0
metadata:
  agent: proposal-writer
  agent-version: "1"
---

# Take in the quote and the buyers decision

## What it does

Starts from the approved quote as it is handed on, with its price and
the date it stops holding. Reads how the buyer decides: who signs, who
can stop it, and what each of them needs to see.

## Where it happens

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

- **Hand the Quote On**
  - `ref/sls/configure-and-price`, activity 13 -
    [Configure and Price](../../../../processes/sales/configure-and-price.md)
- **Read the Buyer's Decision**
  - `ref/sls/write-a-proposal`, activity 2 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)
- **Take in the Approved Quote**
  - `ref/sls/write-a-proposal`, activity 1 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)

## What to record

Per proposal: the section list agreed at the briefing and the promised
date, every reusable section with the library version it came from and
every section the library did not have, the customer's own words with
the conversation and date each quote came from, the scope traced line by
line to the configuration that was priced, the exclusions, the price and
the date the offer stops holding, the sign-off against a named version
with the signers, and the version that actually went out with its date
and its recipients. When the buyer quotes back a price, the recorded
version settles 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`.
skills/watch-what-the-buyer-does-with-it/SKILL.mdWatches whether the document was opened, shared and read to the end, or not at all, and answers the follow-ups and the presentation the buyer asks for after it lands. Use it when running `ref/sls/respond-to-an-rfp` and `ref/sls/write-a-proposal`.
---
name: watch-what-the-buyer-does-with-it
description: Watches whether the document was opened, shared and read to the end, or not at all, and answers the follow-ups and the presentation the buyer asks for after it lands. Use it when running `ref/sls/respond-to-an-rfp` and `ref/sls/write-a-proposal`.
license: CC-BY-4.0
metadata:
  agent: proposal-writer
  agent-version: "1"
---

# Watch what the buyer does with it

## What it does

Watches whether the document was opened, shared and read to the end, or
not at all, and answers the follow-ups and the presentation the buyer
asks for after it lands.

## Where it happens

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

- **Handle Clarifications**
  - `ref/sls/respond-to-an-rfp`, activity 16 -
    [Respond to an RFP](../../../../processes/sales/respond-to-an-rfp.md)
- **Watch What the Buyer Does**
  - `ref/sls/write-a-proposal`, activity 14 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)

## What to record

Per proposal: the section list agreed at the briefing and the promised
date, every reusable section with the library version it came from and
every section the library did not have, the customer's own words with
the conversation and date each quote came from, the scope traced line by
line to the configuration that was priced, the exclusions, the price and
the date the offer stops holding, the sign-off against a named version
with the signers, and the version that actually went out with its date
and its recipients. When the buyer quotes back a price, the recorded
version settles 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`.
skills/write-the-document/SKILL.md"Writes the parts nobody can reuse: the problem in the customer's own words, what is included line by line, what is deliberately not included, the price and the term from the approved quote, what happens between a yes and the work starting, and the narrative a bid is read on rather than scored on. Use it when running `ref/sls/respond-to-an-rfp` and `ref/sls/write-a-proposal`."
---
name: write-the-document
description: "Writes the parts nobody can reuse: the problem in the customer's own words, what is included line by line, what is deliberately not included, the price and the term from the approved quote, what happens between a yes and the work starting, and the narrative a bid is read on rather than scored on. Use it when running `ref/sls/respond-to-an-rfp` and `ref/sls/write-a-proposal`."
license: CC-BY-4.0
metadata:
  agent: proposal-writer
  agent-version: "1"
---

# Write the document

## What it does

Writes the parts nobody can reuse: the problem in the customer's own
words, what is included line by line, what is deliberately not included,
the price and the term from the approved quote, what happens between a
yes and the work starting, and the narrative a bid is read on rather
than scored on.

## Where it happens

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

- **Write What Happens Next**
  - `ref/sls/write-a-proposal`, activity 9 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)
- **Write What Is Included**
  - `ref/sls/write-a-proposal`, activity 6 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)
- **Write What Is Not Included**
  - `ref/sls/write-a-proposal`, activity 7 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)
- **Write the Narrative**
  - `ref/sls/respond-to-an-rfp`, activity 11 -
    [Respond to an RFP](../../../../processes/sales/respond-to-an-rfp.md)
- **Write the Price and the Terms**
  - `ref/sls/write-a-proposal`, activity 8 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)
- **Write the Problem in Their Words**
  - `ref/sls/write-a-proposal`, activity 5 -
    [Write a Proposal](../../../../processes/sales/write-a-proposal.md)

## What to record

Per proposal: the section list agreed at the briefing and the promised
date, every reusable section with the library version it came from and
every section the library did not have, the customer's own words with
the conversation and date each quote came from, the scope traced line by
line to the configuration that was priced, the exclusions, the price and
the date the offer stops holding, the sign-off against a named version
with the signers, and the version that actually went out with its date
and its recipients. When the buyer quotes back a price, the recorded
version settles 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`.
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.

content-library · readquoting-system · readclaims-register · readdocument-store · writesending-system · writetracking-system · read
mcp.json You write this file. It is not part of the package.
{
  "$schema": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
  "mcpServers": {
    "content-library": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/content-library"
    },
    "quoting-system": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/quoting-system"
    },
    "claims-register": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/claims-register"
    },
    "document-store": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/document-store"
    },
    "sending-system": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/sending-system"
    },
    "tracking-system": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/tracking-system"
    }
  }
}

The hostnames here are a placeholder for your own. Whichever product holds each of these systems, the agent you build is yours and nobody else has to be involved in running it.

Where it works

3 processes, 17 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.

Configure and Priceref/sls/configure-and-price · 14 activities
1234567891011121314

Hand the Quote On

Respond to an RFPref/sls/respond-to-an-rfp · 17 activities
1234567891011121314151617

Write the Narrative · Assemble and Submit · Handle Clarifications

Write a Proposalref/sls/write-a-proposal · 15 activities
123456789101112131415

Take in the Approved Quote · Read the Buyer's Decision · Agree the Shape of the Document · Pull the Reusable Parts · Write the Problem in Their Words · Write What Is Included · Write What Is Not Included · Write the Price and the Terms · Write What Happens Next · Assemble and Version the Document · Deliver It to the Buyer · Watch What the Buyer Does · Record What Was Sent

The records it leaves

What it writes down

Per proposal: the section list agreed at the briefing and the promised date, every reusable section with the library version it came from and every section the library did not have, the customer's own words with the conversation and date each quote came from, the scope traced line by line to the configuration that was priced, the exclusions, the price and the date the offer stops holding, the sign-off against a named version with the signers, and the version that actually went out with its date and its recipients. When the buyer quotes back a price, the recorded version settles it.

Where it stops

What it will not do

Does not price. The number in the document is the number on the approved quote, and the quote-builder agent owns it. Does not decide what is included, which comes from the configuration that was priced and from the solution architect who writes what is excluded. Does not answer security, legal or procurement questionnaires, which is the questionnaire-responder agent working from a maintained source. Does not sign, and does not send a version that sign-off did not cover.

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: proposal-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.

  • Client Brief Composer MCP server · wxt-ai.github.io · hosted · mirrored from the MCP registry Compose audience-ready briefing sections
  • emplusx MCP server · emplusx.com · hosted · mirrored from the MCP registry Finished, on-brand .pptx and .docx from a brief - quality-gated by an agentic consulting team.
  • MCP Office Word MCP server · dosev-ai.github.io · run it yourself · mirrored from the MCP registry 50-tool Word MCP server. Document assembly, tracked changes, and export. Windows-first.