Skip to main content
Glama
pblsketch

Hangeul-mcp

by pblsketch

complete_addressed_template

Completes a Hangul template in a single file-mode call by applying all structural edits at once, writing a new copy without modifying the open document.

Instructions

Complete a whole template in ONE addressed file-mode call and write a new copy.

Gather or generate all values first, then send one edits array here — not one call per cell. edits do NOT require {} named fields; use structural addresses for repeated "▶", repeated "○○○", ordinary table cells, and paragraphs, and never treat repeated text as a document-wide replace without explicit scope. Start in file mode for whole-template completion instead of mixing live field writes and falling back to file mode later. This addressed file-mode path writes out_path only and does not mutate the already-open same Hangul window; open the verified output afterward.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes
editsYes
verifyNo
out_pathYes

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.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool 'writes out_path only and does not mutate the already-open same Hangul window,' and that edits use structural addresses. It also warns against treating repeated text as document-wide replace without explicit scope. This provides adequate behavioral transparency for a file-writing tool.

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 description is a concise paragraph of 5-6 sentences, front-loaded with the purpose. It avoids unnecessary repetition and covers key points efficiently. While it could be slightly more structured (e.g., bullet points), it remains clear and well-organized.

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?

Given the complexity of the tool (4 parameters, nested AddressedEdit schema) and the large number of sibling tools, the description provides sufficient context. It explains the mode, output, address format, and key behavioral constraints. The output schema (not shown) likely covers return values, so the description is adequately 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?

The input schema has 0% description coverage for top-level parameters, but the description adds context: it explains that edits should be sent as one array, and that the tool writes a new copy to out_path. It also clarifies that 'edits do NOT require {} named fields; use structural addresses.' This adds meaning beyond the schema, compensating for the lack of parameter 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 the purpose: 'Complete a whole template in ONE addressed file-mode call and write a new copy.' It specifies the action (complete a whole template), the mode (addressed file-mode), and the output (write a new copy). It distinguishes itself from per-cell calls and live field writes, differentiating from siblings like apply_addressed_edits.

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 provides explicit usage guidance: 'Gather or generate all values first, then send one edits array here — not one call per cell.' It also advises to 'Start in file mode for whole-template completion instead of mixing live field writes and falling back to file mode later.' While it doesn't name specific alternatives, it clearly implies when to use this tool and what to avoid.

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