Skip to main content
Glama

amend_changes

Maintain YOUR existing pending proposal; never another author’s. Read read_change(view=proposed, document_id) first. Supply its proposal_version and current contract_version. edits match the latest proposed text; content replaces only that item. Omitted items stay unchanged, accepted/rejected items cannot change. Same review stays pending; no intermediate content history. A conflict requires rereading, never blind retry.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "project_id": "<project_id>",
      "change_id": "<change_id>",
      "proposal_version": "<proposal_version>",
      "contract_version": "<contract_version>",
      "items": "<items>",
      "idempotency_key": "<idempotency_key>"
    },
    "name": "amend_changes"
  }
}

Input Schema

NameRequiredDescriptionDefault
itemsYes
evidenceNo
change_idYes
rationaleNo
project_idYes
result_offsetNo
idempotency_keyYes
contract_versionYes
proposal_versionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / evidence / maxLength
      Previous value: -6000New value: +20000
    • removedInput schema / properties / items / items / properties / journal
      Removed value: -{
      -  "description": "What happened, kept apart from the document text. Alone, it records an entry without changing the text. Write journal://variable in the text and in another entry to cite it (journal://DOC:variable from another document); the server replaces the variable by the number. journal://12 cites an existing entry. An unknown reference is refused.",
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "content": {
      -        "maxLength": 150000,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "variable": {
      -        "pattern": "^(?!\\d+$)[\\w-]{1,64}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "content"
      -    ],
      -    "type": "object"
      -  },
      -  "maxItems": 60,
      -  "minItems": 1,
      -  "type": "array"
      -}
    • addedInput schema / properties / items / items / properties / sections
      Added value: +{
      +  "description": "Each section this item changes, with the hash returned by read_document. A new template section has no hash. Required unless the document is still at its starting text.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "hash": {
      +        "maxLength": 64,
      +        "type": "string"
      +      },
      +      "section": {
      +        "maxLength": 400,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "section"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 60,
      +  "minItems": 1,
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / items / items / properties / journal
      Added value: +{
      +  "description": "What happened, kept apart from the document text. Alone, it records an entry without changing the text. Write journal://variable in the text and in another entry to cite it (journal://DOC:variable from another document); the server replaces the variable by the number. journal://12 cites an existing entry. An unknown reference is refused.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "content": {
      +        "maxLength": 150000,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "variable": {
      +        "pattern": "^(?!\\d+$)[\\w-]{1,64}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "content"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 60,
      +  "minItems": 1,
      +  "type": "array"
      +}
  3. First observed

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite annotations already flagging mutation and safety, the description adds substantial behavioral detail: omitted items remain unchanged, accepted/rejected items are immutable, content replaces only that item, edits apply against the latest proposed text, and no intermediate content history is kept. It also discloses the conflict semantics and forbids blind retry, which is exactly the kind of context an agent needs for a versioned mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Sentences are dense but almost every clause carries necessary information, and the ownership constraint is front-loaded. The telegraphic style ('edits match the latest proposed text; content replaces only that item') reads as clipped fragments rather than structured guidance, which slightly hurts scanability for a nine-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, non-idempotent-annotated mutation with nine parameters and no output schema, the description covers the domain semantics well but leaves several required inputs (base_revision, idempotency_key, evidence, rationale) unexplained. Nothing indicates what a successful call returns or how result_offset behaves, so an agent is only partially equipped.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden, and it does explain the core payload semantics (items, edits, content, and the two version parameters). However, it says nothing about required parameters base_revision, idempotency_key, project_id, change_id, or about evidence, rationale, and result_offset — base_revision in particular is central to the conflict behavior described but never tied to it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description makes clear this modifies an *existing pending proposal* belonging to the caller ('Maintain YOUR existing pending proposal; never another author's') and that the review stays pending, which separates it from submit_changes. It never states the resource name explicitly ('change proposal') nor a clean verb+object phrase, so an agent must infer from the name, but the operative intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete prerequisite chain: read read_change(view=proposed, document_id) first, then pass its proposal_version plus the current contract_version. It also states a negative rule (not another author's proposal) and a recovery path for conflicts ('rereading, never blind retry'). What's missing is an explicit statement of when to prefer amend_changes over submit_changes; the 'same review stays pending' clause only implies it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources