# Proposals

propose saves an idea or option that is not decided. drop_proposal sets one aside. report_decision decides one.

An agent calls `propose` when a person calls something an idea, an option or a proposal, or says to park it. It never calls `propose` for a choice the person just agreed to: that is [`report_decision`](https://zerowidth.ai/docs/mcp/report-decision).

A proposal is kept open until a person decides it or sets it aside. [Proposals](https://zerowidth.ai/docs/concepts/proposals)

## propose

The reply gives the proposal's id.

| Input | What to send |
|---|---|
| `summary` | What is put forward, in one plain sentence. Required. |
| `why` | The reason |
| `goal` | What should be different if the idea is done, in the person's words |
| `alternatives` | Up to 8 other options that were weighed |
| `decided_by` | Who should decide it, if someone in particular |
| `words` | The words it was put forward in |

## Deciding a proposal

When the person agrees to an open proposal, the agent calls `report_decision` with `proposal` set to its id. The summary, why and goal may then be left out: the proposal's own are used. Left out entirely, a proposal with nearly the same words is found and decided.

A decision reported with no proposal named still finds an open proposal with nearly the same words, and closes it, so a proposal followed by a decision a minute later does not leave a stale open one.

## drop_proposal

Sets an open proposal aside, by its id, with the reason. It stays on the record as considered and not chosen. Only the person who put it forward, or an admin, can set a proposal aside, and an agent does so only when the person asked.

| Input | What to send |
|---|---|
| `id` | The proposal's id. Required. |
| `reason` | Why it will not be done. Required. |

## What an agent sees

`recall` and `about` list open proposals that bear on the question beside past decisions, marked as proposals. Suggestions from ZeroWidth are not listed there until a person accepts them.
