Penline Handwriting Sheets

Tracing sheets & lined paper

Should I use this

Quality & Safety

A
Description quality
90%
Schema completeness
97%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'generate_lined_paper' description lacks action verbin generate_lined_paper

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,073Tokens (tool definitions)
~7.0 KBTypical response size
Moderate attention impact (1.62% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "handwriting-sheets": {
      "url": "https://handwriting-sheets.zovo.one/mcp"
    }
  }
}

Remote endpoints

https://handwriting-sheets.zovo.one/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢generate_handwriting_sheet(text, line_size, paper, orientation, title, ...)

Use this when the user wants handwriting worksheets, tracing worksheets, letter tracing or handwriting practice sheets as a printable vector PDF. Supports up to 600 characters and word wrapping. Repeats text to fill each tracing row when repetitions are omitted, or uses an explicit one to four copies, followed by a blank copy row. Does not support cursive. Print letters only. Latin, Greek and Cyrillic supported. Oversized words produce a clear error.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "Letters, words or sentences to trace, up to 600 characters. Example: The cat sat."
    },
    "line_size": {
      "description": "Capital-to-baseline body height in inches: 0.5, 0.625, 0.75 or 1.0. Example: 0.5. Default 0.5.",
      "type": "number"
    },
    "paper": {
      "description": "Paper: Letter or A4. Example: Letter. Default Letter.",
      "type": "string"
    },
    "orientation": {
      "description": "Page direction: portrait or landscape. Example: portrait. Default portrait.",
      "type": "string"
    },
    "title": {
      "description": "Optional page title, up to 80 supported characters. Example: Letter practice.",
      "type": "string"
    },
    "trace_style": {
      "description": "Tracing style: dotted, light_grey or outline. Example: dotted. Default dotted.",
      "type": "string"
    },
    "name_date": {
      "description": "Print a blank name and date line. Example: true. Default false.",
      "type": "boolean"
    },
    "repetitions": {
      "description": "Whole-number repetitions per tracing row, 1 to 4; each row is followed by a blank copy row. Example: 2. Omit to repeat as many copies as fit, with one body-height gap.",
      "type": "number"
    }
  },
  "required": [
    "text"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "page_count": {
      "type": "number"
    },
    "paper": {
      "type": "string"
    },
    "orientation": {
      "type": "string"
    },
    "line_size": {
      "type": "number"
    },
    "body_height_pt": {
      "type": "number"
    },
    "margin_pt": {
      "type": "number"
    },
    "total_rows": {
      "type": "number"
    },
    "trace_rows": {
      "type": "number"
    },
    "copy_rows": {
      "type": "number"
    },
    "repetitions": {
      "type": "number"
    },
    "repetition_counts": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "rows_per_page": {
      "type": "number"
    },
    "page_size_pt": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "guide_positions_pt": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "top": {
            "type": "number"
          },
          "midline": {
            "type": [
              "number",
              "null"
            ]
          },
          "baseline": {
            "type": "number"
          },
          "descender_bottom": {
            "type": "number"
          }
        },
        "required": [
          "top",
          "midline",
          "baseline",
          "descender_bottom"
        ],
        "additionalProperties": false
      }
    },
    "trace_style": {
      "type": "string"
    },
    "midline": {
      "type": "boolean"
    },
    "downloads": {
      "type": "object",
      "properties": {
        "pdf": {
          "type": "string"
        }
      },
      "required": [
        "pdf"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "kind",
    "page_count",
    "paper",
    "orientation",
    "line_size",
    "body_height_pt",
    "margin_pt",
    "total_rows",
    "trace_rows",
    "copy_rows",
    "repetitions",
    "repetition_counts",
    "rows_per_page",
    "page_size_pt",
    "guide_positions_pt",
    "trace_style",
    "midline",
    "downloads"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢generate_name_tracing_sheet(name, lines, line_size, paper, orientation, ...)

Use this when the user wants name tracing worksheets or a custom tracing worksheet as a printable PDF. Supports a name up to 40 characters and 1 to 30 total writing rows, alternating trace and blank rows starting with trace. Does not support cursive. Print letters only. Latin, Greek and Cyrillic supported. A name must fit one row at the chosen size.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Name to trace, up to 40 characters. Example: Emma."
    },
    "lines": {
      "description": "Total writing rows, alternating trace and blank; 1 to 30. Example: 6. Default 6.",
      "type": "number"
    },
    "line_size": {
      "description": "Capital-to-baseline body height in inches: 0.5, 0.625, 0.75 or 1.0. Example: 0.5. Default 0.5.",
      "type": "number"
    },
    "paper": {
      "description": "Paper: Letter or A4. Example: Letter. Default Letter.",
      "type": "string"
    },
    "orientation": {
      "description": "Page direction: portrait or landscape. Example: portrait. Default portrait.",
      "type": "string"
    },
    "title": {
      "description": "Optional page title, up to 80 supported characters. Example: Letter practice.",
      "type": "string"
    },
    "trace_style": {
      "description": "Tracing style: dotted, light_grey or outline. Example: dotted. Default dotted.",
      "type": "string"
    },
    "name_date": {
      "description": "Print a blank name and date line. Example: true. Default false.",
      "type": "boolean"
    },
    "repetitions": {
      "description": "Optional whole-number copies per tracing row, 1 to 4. Example: 2. Omit to fill the row with a body-height gap between copies.",
      "type": "number"
    }
  },
  "required": [
    "name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "page_count": {
      "type": "number"
    },
    "paper": {
      "type": "string"
    },
    "orientation": {
      "type": "string"
    },
    "line_size": {
      "type": "number"
    },
    "body_height_pt": {
      "type": "number"
    },
    "margin_pt": {
      "type": "number"
    },
    "total_rows": {
      "type": "number"
    },
    "trace_rows": {
      "type": "number"
    },
    "copy_rows": {
      "type": "number"
    },
    "repetitions": {
      "type": "number"
    },
    "repetition_counts": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "rows_per_page": {
      "type": "number"
    },
    "page_size_pt": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "guide_positions_pt": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "top": {
            "type": "number"
          },
          "midline": {
            "type": [
              "number",
              "null"
            ]
          },
          "baseline": {
            "type": "number"
          },
          "descender_bottom": {
            "type": "number"
          }
        },
        "required": [
          "top",
          "midline",
          "baseline",
          "descender_bottom"
        ],
        "additionalProperties": false
      }
    },
    "trace_style": {
      "type": "string"
    },
    "midline": {
      "type": "boolean"
    },
    "downloads": {
      "type": "object",
      "properties": {
        "pdf": {
          "type": "string"
        }
      },
      "required": [
        "pdf"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "kind",
    "page_count",
    "paper",
    "orientation",
    "line_size",
    "body_height_pt",
    "margin_pt",
    "total_rows",
    "trace_rows",
    "copy_rows",
    "repetitions",
    "repetition_counts",
    "rows_per_page",
    "page_size_pt",
    "guide_positions_pt",
    "trace_style",
    "midline",
    "downloads"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢generate_lined_paper(line_size, paper, orientation, title, pages, ...)

Use this when the user wants printable lined paper or kindergarten writing paper as a vector PDF. Produces 1 to 20 pages with solid top and baseline guides, descender space and an optional dashed midline. Four body heights, Letter or A4, portrait or landscape. Does not produce cursive examples.

Input Schema

{
  "type": "object",
  "properties": {
    "line_size": {
      "description": "Capital-to-baseline body height in inches: 0.5, 0.625, 0.75 or 1.0. Example: 0.5. Default 0.5.",
      "type": "number"
    },
    "paper": {
      "description": "Paper: Letter or A4. Example: Letter. Default Letter.",
      "type": "string"
    },
    "orientation": {
      "description": "Page direction: portrait or landscape. Example: portrait. Default portrait.",
      "type": "string"
    },
    "title": {
      "description": "Optional page title, up to 80 supported characters. Example: Letter practice.",
      "type": "string"
    },
    "pages": {
      "description": "Number of blank practice pages, whole number 1 to 20. Example: 2. Default 1.",
      "type": "number"
    },
    "midline": {
      "description": "Include the dashed guide halfway between top and baseline. Example: true. Default true.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "page_count": {
      "type": "number"
    },
    "paper": {
      "type": "string"
    },
    "orientation": {
      "type": "string"
    },
    "line_size": {
      "type": "number"
    },
    "body_height_pt": {
      "type": "number"
    },
    "margin_pt": {
      "type": "number"
    },
    "total_rows": {
      "type": "number"
    },
    "trace_rows": {
      "type": "number"
    },
    "copy_rows": {
      "type": "number"
    },
    "repetitions": {
      "type": "number"
    },
    "repetition_counts": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "rows_per_page": {
      "type": "number"
    },
    "page_size_pt": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "guide_positions_pt": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "top": {
            "type": "number"
          },
          "midline": {
            "type": [
              "number",
              "null"
            ]
          },
          "baseline": {
            "type": "number"
          },
          "descender_bottom": {
            "type": "number"
          }
        },
        "required": [
          "top",
          "midline",
          "baseline",
          "descender_bottom"
        ],
        "additionalProperties": false
      }
    },
    "trace_style": {
      "type": "string"
    },
    "midline": {
      "type": "boolean"
    },
    "downloads": {
      "type": "object",
      "properties": {
        "pdf": {
          "type": "string"
        }
      },
      "required": [
        "pdf"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "kind",
    "page_count",
    "paper",
    "orientation",
    "line_size",
    "body_height_pt",
    "margin_pt",
    "total_rows",
    "trace_rows",
    "copy_rows",
    "repetitions",
    "repetition_counts",
    "rows_per_page",
    "page_size_pt",
    "guide_positions_pt",
    "trace_style",
    "midline",
    "downloads"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools