Skip to main content
Glama
pblsketch

Hangeul-mcp

by pblsketch

preview_addressed_edits

Preview structural edits in a HWP file by resolving addressed targets to confirm each edit hits the intended location. Use this to verify changes before applying them with apply_addressed_edits.

Instructions

Resolve STRUCTURAL addressed edits in file mode without writing output.

edits do NOT require {} named fields. Use structural addresses for repeated "▶", repeated "○○○", ordinary table cells, and paragraphs. Repeated text must never be treated as a global replace; require explicit scope in the address. For whole-template completion, gather or generate all values first and prepare one edits array here instead of one tool call per cell. Start in file mode from the beginning instead of mixing live field writes and then falling back to file mode. Preview here first to confirm each edit resolves to the intended local target and returns the reviewed session that apply_addressed_edits(session_id, out_path) writes later as a completed copy. This addressed file-mode route does not mutate the already-open same Hangul window; open the verified output afterward if live review is needed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes
editsYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed6 schema fields changedv0.6.0
    • addedInput schema / $defs / AddressedEdit / properties / bold
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional. true = bold the edited text (문항/제목), false = force non-bold (선지), omit = keep existing weight. Applies to every non-empty text run in the value, including multiline clones.",
      +  "title": "Bold"
      +}
    • changedInput schema / $defs / AddressedEdit / properties / operation / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "replace_text",
      -      "preserve_marker_replace_tail"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "replace_text",
      +      "preserve_marker_replace_tail",
      +      "insert_blank_before",
      +      "insert_blank_after",
      +      "delete_paragraph",
      +      "delete_table",
      +      "delete_row"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / AddressedEdit / properties / operation / description
      Previous value: -"Usually omit; defaults to replace_text. preserve_marker_replace_tail keeps the ▶/-/□/○ marker (bN and tN.rN.cN.pN)."New value: +"Usually omit; defaults to replace_text. preserve_marker_replace_tail keeps the ▶/-/□/○ marker. insert_blank_before/after add an empty spacer paragraph around a bN body paragraph; delete_paragraph removes a bN body paragraph; delete_table removes a whole tN table (e.g. an unused <보기> box); delete_row is live-only (open Hangul window)."
    • addedInput schema / $defs / AddressedEdit / properties / value / default
      Added value: +""
    • changedInput schema / $defs / AddressedEdit / properties / value / description
      Previous value: -"Replacement text; use \\n to split into consecutive paragraphs (개조식 lines)"New value: +"Replacement text; use \\n to split into consecutive paragraphs (개조식 lines). Ignored by delete_paragraph / insert_blank_* ops."
    • changedInput schema / $defs / AddressedEdit / required
      Previous value: -[
      -  "target",
      -  "value"
      -]New value: +[
      +  "target"
      +]
  2. Changed2 schema fields changedv0.5.1
    • changedInput schema / $defs / AddressedEdit / properties / operation / description
      Previous value: -"Usually omit; defaults to replace_text. preserve_marker_replace_tail is only for bN."New value: +"Usually omit; defaults to replace_text. preserve_marker_replace_tail keeps the ▶/-/□/○ marker (bN and tN.rN.cN.pN)."
    • changedInput schema / $defs / AddressedEdit / properties / value / description
      Previous value: -"Complete replacement text for this exact target"New value: +"Replacement text; use \\n to split into consecutive paragraphs (개조식 lines)"
  3. Changed2 schema fields changedv0.3.3
    • addedInput schema / $defs
      Added value: +{
      +  "AddressedEdit": {
      +    "description": "One structural edit. Kind and operation are inferred when omitted.",
      +    "properties": {
      +      "expected_text": {
      +        "default": "",
      +        "description": "Optional current text copied from inspection; mismatch fails closed",
      +        "title": "Expected Text",
      +        "type": "string"
      +      },
      +      "kind": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "cell",
      +              "paragraph",
      +              "body_para"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Usually omit; inferred from target",
      +        "title": "Kind"
      +      },
      +      "operation": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "replace_text",
      +              "preserve_marker_replace_tail"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Usually omit; defaults to replace_text. preserve_marker_replace_tail is only for bN.",
      +        "title": "Operation"
      +      },
      +      "target": {
      +        "description": "Exact target from inspect_editable_regions: tN.rN.cN for a whole cell, tN.rN.cN.pN for one paragraph inside a cell, or bN for a body paragraph. Do not pass sN.pN.occN occurrence IDs here.",
      +        "examples": [
      +          "t2.r4.c2.p1"
      +        ],
      +        "title": "Target",
      +        "type": "string"
      +      },
      +      "value": {
      +        "description": "Complete replacement text for this exact target",
      +        "title": "Value",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "target",
      +      "value"
      +    ],
      +    "title": "AddressedEdit",
      +    "type": "object"
      +  }
      +}
    • addedInput schema / properties / edits / items / $ref
      Added value: +"#/$defs/AddressedEdit"
  4. Addedv0.2.1

TDQS

A4.6/5.0
Behavior5/5

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

Discloses that the tool does not mutate the open Hangul window, returns a session for later application, and explains behavior of edits (no named fields, structural addresses, no global replace). No annotations exist, so description covers the burden fully.

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

Conciseness3/5

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

The description is a single dense paragraph with multiple instructions. While it front-loads the main action, it could be more concise and better structured (e.g., bullet points) given the volume of detail.

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

Completeness4/5

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

Covers use cases, behavioral constraints, integration with apply_addressed_edits, and mentions output session. With an output schema present, return values need not be explained. Leaves minor ambiguity about session_id but is largely complete.

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

Parameters4/5

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

Though top-level parameters lack descriptions (0% coverage per context), the description adds semantic value by explaining how to structure edits (no named fields, use structural addresses) and providing target format examples. This supplements the schema's nested descriptions.

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?

The description clearly states it resolves structural addressed edits in file mode without writing output, distinguishing it from the sibling tool apply_addressed_edits that writes later. It specifies the purpose as previewing to confirm edits resolve to intended targets.

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?

Provides explicit when-to-use guidance: use for whole-template completion, gather values first, start in file mode, preview before applying. Also warns against mixing live field writes and falling back, and names the alternative apply_addressed_edits for writing.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pblsketch/Hangeul-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server