API & MCP
Everything a person can do on Handwriting to Font, a program or AI agent can do with the same inputs and get the identical result.
HTTP API
POST https://luminahandwritingfont.usefulweb.site/api/v1/calculate– run Handwriting to FontGET https://luminahandwritingfont.usefulweb.site/api/v1/tool– inputs, output schema, examples- OpenAPI 3.1: /openapi.json · /openapi.yaml
- Errors:
application/problem+json;422includes per-fielderrors.
Handwriting to Font
Leave the page fields empty to get a printable handwriting template (PDF) for a character set. Write one character per box, photograph or scan the page and upload it: the four corner squares are found, the page is straightened, every box is read and your strokes are traced into a TrueType font with spacing and basic kerning. The same engine runs in Lumina Type Lab → Glyph Lab on your device.
| Field | Type | Default | Description |
|---|---|---|---|
preset | select (1, 2, 3, 4, 5, 15) | "1" | Character set of the template |
paper | select (a4, letter) | "a4" | Paper size |
custom | text | — | Your own characters (only for “Your own characters”) |
page1 | file | — | Filled-in page (photo or scan: PNG, JPEG or WebP, up to 20 MB; empty = get the template) |
page2 | file | — | Second page (optional) |
page3 | file | — | Third page (optional) |
familyName | text | "My Handwriting" | Font name |
ink | number | 0.6 | Ink level (share of paper brightness; higher picks up lighter strokes) |
outline | select (smooth, straight) | "smooth" | Outlines |
sideBearing | integer | 40 | Space on each side of a letter (font units) |
spaceWidth | integer | 300 | Width of the space character (font units) |
kerning | number | 0.6 | Automatic kerning strength (0 = off, 1 = strong) |
sample | text | — | Sample text for the preview |
date | text | — | Creation date written into the font (optional, YYYY-MM-DD) |
Example request
Printable template for basic Latin letters on A4
curl -X POST https://luminahandwritingfont.usefulweb.site/api/v1/calculate -H 'content-type: application/json' -d '{"preset":"1","paper":"a4","custom":"","familyName":"My Handwriting","ink":0.6,"outline":"smooth","sideBearing":40,"spaceWidth":300,"kerning":0.6,"sample":"","date":""}'
Every result contains
inputs (normalised, defaults applied), summary, result (validated against the published schema), units, assumptions, sources, warnings, computedAt and links.
MCP (Model Context Protocol)
- Streamable HTTP endpoint:
https://luminahandwritingfont.usefulweb.site/mcp– protocol revisions 2026-07-28 (stateless) and 2025-11-25 / 2025-06-18 / 2025-03-26 (initialize handshake). - Tools:
lumina_handwriting_font - Local stdio connector:
node src/mcp-stdio.ts --tool=lumina-handwriting-font
{
"mcpServers": {
"lumina-handwriting-font": { "type": "http", "url": "https://luminahandwritingfont.usefulweb.site/mcp" }
}
}