Penline Handwriting Sheets MCP
Generates custom tracing worksheets and blank practice paper as vector PDFs for letters, words, sentences, and names. Supports solid top/baseline guides, optional dashed midlines, and various paper sizes like Letter and A4 in portrait or landscape orientations.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://handwriting-sheets.zovo.one/mcpWhat you can do with it
- Create name tracing worksheets with alternating trace and blank rows
- Generate word tracing with automatic repetitions to fill rows
- Produce blank lined practice paper with specific body height and midline options
Source and maintenance
Protocol and capabilities
- Server
- handwriting-sheets 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 3 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
3 advertised
generate_handwriting_sheet — Generate handwriting sheet
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Letters, words or sentences to trace, up to 600 characters. Example: The cat sat."
},
"paper": {
"type": "string",
"description": "Paper: Letter or A4. Example: Letter. Default Letter."
},
"title": {
"type": "string",
"description": "Optional page title, up to 80 supported characters. Example: Letter practice."
},
"line_size": {
"type": "number",
"description": "Capital-to-baseline body height in inches: 0.5, 0.625, 0.75 or 1.0. Example: 0.5. Default 0.5."
},
"name_date": {
"type": "boolean",
"description": "Print a blank name and date line. Example: true. Default false."
},
"orientation": {
"type": "string",
"description": "Page direction: portrait or landscape. Example: portrait. Default portrait."
},
"repetitions": {
"type": "number",
"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."
},
"trace_style": {
"type": "string",
"description": "Tracing style: dotted, light_grey or outline. Example: dotted. Default dotted."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"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"
],
"properties": {
"kind": {
"type": "string"
},
"paper": {
"type": "string"
},
"midline": {
"type": "boolean"
},
"copy_rows": {
"type": "number"
},
"downloads": {
"type": "object",
"required": [
"pdf"
],
"properties": {
"pdf": {
"type": "string"
}
},
"additionalProperties": false
},
"line_size": {
"type": "number"
},
"margin_pt": {
"type": "number"
},
"page_count": {
"type": "number"
},
"total_rows": {
"type": "number"
},
"trace_rows": {
"type": "number"
},
"orientation": {
"type": "string"
},
"repetitions": {
"type": "number"
},
"trace_style": {
"type": "string"
},
"page_size_pt": {
"type": "array",
"items": {
"type": "number"
}
},
"rows_per_page": {
"type": "number"
},
"body_height_pt": {
"type": "number"
},
"repetition_counts": {
"type": "array",
"items": {
"type": "number"
}
},
"guide_positions_pt": {
"type": "array",
"items": {
"type": "object",
"required": [
"top",
"midline",
"baseline",
"descender_bottom"
],
"properties": {
"top": {
"type": "number"
},
"midline": {
"type": [
"number",
"null"
]
},
"baseline": {
"type": "number"
},
"descender_bottom": {
"type": "number"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"title": "Generate handwriting sheet",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}generate_name_tracing_sheet — Generate name tracing sheet
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Name to trace, up to 40 characters. Example: Emma."
},
"lines": {
"type": "number",
"description": "Total writing rows, alternating trace and blank; 1 to 30. Example: 6. Default 6."
},
"paper": {
"type": "string",
"description": "Paper: Letter or A4. Example: Letter. Default Letter."
},
"title": {
"type": "string",
"description": "Optional page title, up to 80 supported characters. Example: Letter practice."
},
"line_size": {
"type": "number",
"description": "Capital-to-baseline body height in inches: 0.5, 0.625, 0.75 or 1.0. Example: 0.5. Default 0.5."
},
"name_date": {
"type": "boolean",
"description": "Print a blank name and date line. Example: true. Default false."
},
"orientation": {
"type": "string",
"description": "Page direction: portrait or landscape. Example: portrait. Default portrait."
},
"repetitions": {
"type": "number",
"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."
},
"trace_style": {
"type": "string",
"description": "Tracing style: dotted, light_grey or outline. Example: dotted. Default dotted."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"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"
],
"properties": {
"kind": {
"type": "string"
},
"paper": {
"type": "string"
},
"midline": {
"type": "boolean"
},
"copy_rows": {
"type": "number"
},
"downloads": {
"type": "object",
"required": [
"pdf"
],
"properties": {
"pdf": {
"type": "string"
}
},
"additionalProperties": false
},
"line_size": {
"type": "number"
},
"margin_pt": {
"type": "number"
},
"page_count": {
"type": "number"
},
"total_rows": {
"type": "number"
},
"trace_rows": {
"type": "number"
},
"orientation": {
"type": "string"
},
"repetitions": {
"type": "number"
},
"trace_style": {
"type": "string"
},
"page_size_pt": {
"type": "array",
"items": {
"type": "number"
}
},
"rows_per_page": {
"type": "number"
},
"body_height_pt": {
"type": "number"
},
"repetition_counts": {
"type": "array",
"items": {
"type": "number"
}
},
"guide_positions_pt": {
"type": "array",
"items": {
"type": "object",
"required": [
"top",
"midline",
"baseline",
"descender_bottom"
],
"properties": {
"top": {
"type": "number"
},
"midline": {
"type": [
"number",
"null"
]
},
"baseline": {
"type": "number"
},
"descender_bottom": {
"type": "number"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"title": "Generate name tracing sheet",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}generate_lined_paper — Generate lined paper
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"pages": {
"type": "number",
"description": "Number of blank practice pages, whole number 1 to 20. Example: 2. Default 1."
},
"paper": {
"type": "string",
"description": "Paper: Letter or A4. Example: Letter. Default Letter."
},
"title": {
"type": "string",
"description": "Optional page title, up to 80 supported characters. Example: Letter practice."
},
"midline": {
"type": "boolean",
"description": "Include the dashed guide halfway between top and baseline. Example: true. Default true."
},
"line_size": {
"type": "number",
"description": "Capital-to-baseline body height in inches: 0.5, 0.625, 0.75 or 1.0. Example: 0.5. Default 0.5."
},
"orientation": {
"type": "string",
"description": "Page direction: portrait or landscape. Example: portrait. Default portrait."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"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"
],
"properties": {
"kind": {
"type": "string"
},
"paper": {
"type": "string"
},
"midline": {
"type": "boolean"
},
"copy_rows": {
"type": "number"
},
"downloads": {
"type": "object",
"required": [
"pdf"
],
"properties": {
"pdf": {
"type": "string"
}
},
"additionalProperties": false
},
"line_size": {
"type": "number"
},
"margin_pt": {
"type": "number"
},
"page_count": {
"type": "number"
},
"total_rows": {
"type": "number"
},
"trace_rows": {
"type": "number"
},
"orientation": {
"type": "string"
},
"repetitions": {
"type": "number"
},
"trace_style": {
"type": "string"
},
"page_size_pt": {
"type": "array",
"items": {
"type": "number"
}
},
"rows_per_page": {
"type": "number"
},
"body_height_pt": {
"type": "number"
},
"repetition_counts": {
"type": "array",
"items": {
"type": "number"
}
},
"guide_positions_pt": {
"type": "array",
"items": {
"type": "object",
"required": [
"top",
"midline",
"baseline",
"descender_bottom"
],
"properties": {
"top": {
"type": "number"
},
"midline": {
"type": [
"number",
"null"
]
},
"baseline": {
"type": "number"
},
"descender_bottom": {
"type": "number"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"title": "Generate lined paper",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
handwriting-sheets-widget — Penline Handwriting Sheets view
Interactive view for Penline Handwriting Sheets.
ui://widget/handwriting-sheets-v5-1.0.0-bafffdd965153b78d295d84220d8d763885a2a23ec08410d1ace0abce8e174e9.htmlhandwriting-sheets-widget-legacy — Penline Handwriting Sheets view (previous versions)
ui://widget/handwriting-sheets-{version}.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 856 ms
- 95th percentile latency
- 856 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 856 ms · metadata changed · 3 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http penline-handwriting-sheets-mcp https://handwriting-sheets.zovo.one/mcpCodex
codex mcp add penline-handwriting-sheets-mcp --url https://handwriting-sheets.zovo.one/mcpCursor
{
"mcpServers": {
"penline-handwriting-sheets-mcp": {
"url": "https://handwriting-sheets.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"penline-handwriting-sheets-mcp": {
"type": "streamableHttp",
"url": "https://handwriting-sheets.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"penline-handwriting-sheets-mcp": {
"type": "http",
"url": "https://handwriting-sheets.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http penline-handwriting-sheets-mcp https://handwriting-sheets.zovo.one/mcpClaude Desktop
{
"mcpServers": {
"penline-handwriting-sheets-mcp": {
"url": "https://handwriting-sheets.zovo.one/mcp"
}
}
}Windsurf
{
"mcpServers": {
"penline-handwriting-sheets-mcp": {
"serverUrl": "https://handwriting-sheets.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Penline Handwriting Sheets MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.