Skip to main content
Glama
pblsketch

Hangeul-mcp

by pblsketch

preview_current_hwp_document

Preview changes to a saved HWPX document without altering the original. Apply simple values for live fills or structural edits for complex updates.

Instructions

Preview the saved current .hwpx document pathlessly without writing it.

Pass values for small live fills OR edits (structural addressed edits) for the complete_and_load route — never both. complete_and_load writes the whole-template completion to a NEW verified file (optional output_path, .hwpx, never the original) that apply opens as a new tab; the original document stays untouched and the new path is always returned. Saved .hwp returns preview_requires_hwpx; success returns the authoritative preview_token for apply_to_current_hwp_document.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNoauto
editsNo
valuesNo
output_pathNo
candidate_idNo

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. Changed8 schema fields changedv0.4.0
    • 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
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "$ref": "#/$defs/AddressedEdit"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Edits"
      +}
    • addedInput schema / properties / output_path
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Output Path"
      +}
    • removedInput schema / properties / values / additionalProperties
      Removed value: -{
      -  "type": "string"
      -}
    • addedInput schema / properties / values / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": {
      +      "type": "string"
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / values / default
      Added value: +null
    • removedInput schema / properties / values / type
      Removed value: -"object"
    • removedInput schema / required
      Removed value: -[
      -  "values"
      -]
  4. Addedv0.2.1

TDQS

A4.7/5.0
Behavior5/5

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

Without annotations, the description fully discloses behavioral traits: it creates a new file (never touching the original), returns a preview_token, and requires .hwpx format. It also explains the effect of each route and the outcome for unsupported .hwp files. This provides complete transparency beyond what the schema offers.

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

Conciseness5/5

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

The description is compact and well-structured. It starts with the core purpose, then breaks into two clearly separated usage paths, mentions the error case, and ends with the success result. Every sentence adds necessary detail without redundancy, achieving high density of useful information.

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?

Given the presence of an output schema (not shown but indicated), the description does not need to detail return values. It covers the preview workflow, parameter constraints, error conditions, and the overall process (new file, untouched original). This provides a complete understanding for a preview tool with moderate complexity.

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?

The description adds significant meaning to key parameters (`values`, `edits`, `output_path`) by explaining their purpose, constraints (mutual exclusivity), and behavior (e.g., new file creation). However, it does not mention `mode` or `candidate_id`. Given the 0% schema coverage, the description compensates well for the most critical parameters but omits two.

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 the tool's action ('Preview... pathlessly without writing it'), specifies the two routes (values vs. edits) with a clear distinction, and contrasts with likely siblings like apply_to_current_hwp_document by mentioning it returns a preview_token for later application. The verb 'Preview' is specific and accurately describes the output.

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?

The description explicitly instructs to use either `values` or `edits`, never both, and explains the complete_and_load route. It also specifies that .hwp files are not supported. However, it does not directly compare against sibling preview tools (e.g., preview_addressed_edits) or state when to use this tool over them. The guidance is clear for the two main parameters but lacks broader context against alternatives.

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