# report_seam_offer

Record one offer you made at a seam and its answer: yes, no, or silent when the reply did not address it or nobody answered. This files nothing, proposes nothing, and stores no word of what anybody said. Call it every time you offer, including when the answer was no, because a no is the reading that says the offers are landing at the wrong moments. Never record an offer you did not make. Use kind 'drop' for the other outcome: an entry you were holding that the work went on to contradict, so you never offered it at all. Report drops when the work settles, one call each, never the moment the build disagrees with an entry: nothing about this is worth interrupting the task for.

Reviewed 2026-10-01. Read the [current operating instructions](https://app.balladeer.ai/agent) and the [tool index](/docs/mcp-reference.md). This reference does not authorize the action.

## Parameters

```json
{
  "type": "object",
  "properties": {
    "identity": {
      "description": "For reliable accounting, assign one UUID and the ISO startedAt for the offer (first reports accepted up to seven days later). Reuse both on retries and later answers. To change an answer, include previousAnswer with the last reported answer; a conflict requires checking your report, not inventing a new offer. After propose_promise actually succeeds, include its proposalId on the yes or silent report to link the persisted proposal; a no never carries one. A reported answer is agent-reported capture permission, never independently verified consent or owner agreement. Omit identity only for legacy unlinked reporting. Identity is refused for drops.",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "startedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        "previousAnswer": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "silent"
          ]
        },
        "proposalId": {
          "type": "string",
          "pattern": "^cand_[a-z0-9]{8,64}$"
        }
      },
      "required": [
        "id",
        "startedAt"
      ],
      "additionalProperties": false
    },
    "seamKind": {
      "description": "The kind of conversation this happened in. Nothing here describes the rule itself.",
      "type": "string",
      "enum": [
        "new_feature",
        "bug_fix",
        "refactor",
        "incident_closure",
        "config_or_copy",
        "review_verdict",
        "planning",
        "explicit_ask"
      ]
    },
    "kind": {
      "description": "'offer' when you put it to the person, which is the default and needs an answer. 'drop' when you were holding an entry and the work contradicted it, so nothing was ever put to anybody: leave the answer out.",
      "default": "offer",
      "type": "string",
      "enum": [
        "offer",
        "drop"
      ]
    },
    "answer": {
      "description": "What the reply said about recording, whatever you then did: yes if they asked you to keep it, no if they declined, silent if the reply did not address the offer (a generic go-ahead, carrying on with the work) or nobody answered. Required on an offer, and refused on a drop, because nobody answered something you never said.",
      "type": "string",
      "enum": [
        "yes",
        "no",
        "silent"
      ]
    }
  },
  "required": [
    "seamKind"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
```

## Effect annotations

```json
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "idempotentHint": false,
  "openWorldHint": false
}
```
