# Suggestions and approvals

Some changes shouldn't happen without a person: an inferred email address, a deal marked won, a fact from a source that might be wrong. For these an agent calls `suggest_change` instead of writing.

## What a suggestion contains

- `operation`: the tool it would have called. Suggestable operations: `upsert_company`, `upsert_person`, `create_deal`, `update_deal`, `set_deal_contact`, `set_custom_fields`, `log_activity`, `record_signal`, `create_task`.
- `input`: exactly what it would have passed to it.
- `reason`: why, in a sentence or two.
- `evidence`: up to ten items, each with a source, a quoted excerpt and a URL.

## What happens next

The suggestion appears in **Review** in the Tandem app. Approving runs the operation, and the change is recorded as made by the agent and approved by the person. Rejecting closes it. `list_suggestions` shows an agent what's pending, approved and rejected, so it doesn't suggest the same thing twice.

## Suggest-only agents

An agent with only `crm:read` and `crm:suggest` can propose any write but make none. That's the safest way to let a new agent loose on a real CRM.
