Skip to main content
Glama

Apply the accepted changes

apply_edits
Destructive

Requires a TechFabric engineer's Microsoft sign-in (scope blog.write). The engineer's decision on a proposal (propose_edits): the changes they accepted are applied to the saved text and saved (as update_draft saves), the rule-based checks run at once and the full check starts in the background. Only what the engineer accepted, never your own choice. Never publishes.

Input Schema

NameRequiredDescriptionDefault
idYesThe draft's id
acceptYesThe ids of the changes the engineer accepted
rejectNoThe ids of the changes the engineer rejected
proposal_idYesThe proposal's id, from propose_edits

Output Schema

NameRequiredDescriptionDefault
idYes
keptYesHow many changes the engineer rejected: their wording kept
lintNo
nextYes
checkNo
savedYes
appliedYes
acceptedYes
rejectedYes
text_hashNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / applied
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "removed": {
      +        "type": "boolean"
      +      },
      +      "section": {
      +        "description": "The \"## \" heading it is under, or \"The opening\"",
      +        "type": "string"
      +      },
      +      "text": {
      +        "description": "Its new text, as saved (\"\" when it removed the passage)",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "section",
      +      "text",
      +      "removed"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / check / properties
      Added value: +{
      +  "run": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "started": {
      +    "type": "boolean"
      +  },
      +  "status": {
      +    "type": "string"
      +  },
      +  "why": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / kept
      Added value: +{
      +  "description": "How many changes the engineer rejected: their wording kept",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "saved",
      -  "accepted",
      -  "rejected",
      -  "next"
      -]New value: +[
      +  "id",
      +  "saved",
      +  "accepted",
      +  "rejected",
      +  "applied",
      +  "kept",
      +  "next"
      +]
  2. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already flag destructive=true and idempotent=false, so the safety profile is covered; the description still adds real context: the auth scope, that edits are persisted immediately like update_draft, that rule-based checks run synchronously while a full check runs in the background, and that publishing is out of scope. It could go further on whether the apply is reversible, which matters given destructiveHint=true.

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?

The auth requirement and the core constraint are front-loaded, and every sentence carries operational information. The long compound sentence covering save semantics plus background checks is heavy but not wasted.

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

Completeness5/5

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

A mutating, destructive tool with rich annotations and an output schema: the description still covers auth, side effects, timing of checks, and the publish boundary. Nothing an agent needs before invoking it is missing.

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 100%, so the schema already explains id, proposal_id, accept, and reject. The description only ties proposal_id back to propose_edits and clarifies that accept reflects the engineer's decision; that's marginal but not redundant, so the baseline 3 holds.

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

Purpose5/5

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

States a specific action (apply accepted proposal changes to the saved draft text) and names the source tool (propose_edits) plus the comparable sibling (update_draft saves). An agent can distinguish it from propose_edits, update_draft, and publish_draft without opening any schema.

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

Usage Guidelines5/5

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

Gives the explicit precondition (a TechFabric engineer's Microsoft sign-in with scope blog.write) and the key constraint: only changes the engineer accepted, never the agent's own choice. It also names the boundary against publish_draft ("Never publishes"), so the when-not is stated, not implied.

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.