check.tattoo: tattoo size and placement guide
Tattoo size minimums, body-area comparison, line-spacing check and a pre-booking checklist.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"check-tattoo": {
"url": "https://mcp.check.tattoo/mcp"
}
}
}Remote endpoints
https://mcp.check.tattoo/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢assess_tattoo_idea(design_type, size_cm, letter_height_mm, placement, style)
Use when the user describes a specific tattoo idea and asks whether it will hold up at a given size and body placement. Compares the design with published minimum sizes for its kind of design and returns the placement's fade, sun, friction, stretch and curvature estimates, style notes, things to look at and questions for the artist. Lettering is sized by capital letter height (letter_height_mm); everything else by the longest side (size_cm). It does not generate designs, look at images, or give medical advice.
Input Schema
{
"type": "object",
"properties": {
"design_type": {
"type": "string",
"enum": [
"block_capitals",
"script_lettering",
"eye",
"bold_symbol_or_short_word",
"fine_botanical",
"moderate_detail",
"realistic_face",
"realism_japanese_or_dense_floral"
],
"description": "Kind of design: block_capitals (capital letters), script_lettering, eye, bold_symbol_or_short_word (silhouette, simple symbol), fine_botanical (flower or plant with veins/stamens), moderate_detail (two line weights, simple shading), realistic_face, realism_japanese_or_dense_floral."
},
"size_cm": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 500,
"description": "Longest side of the whole design in centimetres. Use for every design_type except block_capitals and script_lettering."
},
"letter_height_mm": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 500,
"description": "Height of a capital letter in millimetres. Use for block_capitals and script_lettering."
},
"placement": {
"type": "string",
"enum": [
"upper-arm",
"forearm",
"back",
"shoulder",
"leg",
"hand",
"neck",
"chest",
"ribs",
"wrist"
],
"description": "Body area, if the user has one in mind."
},
"style": {
"type": "string",
"enum": [
"fine-line",
"watercolor",
"realism",
"blackwork",
"minimalist"
],
"description": "Tattoo style, if the user has one in mind."
}
},
"required": [
"design_type"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"design_type": {
"type": "string"
},
"size_check": {
"type": "object"
},
"placement_profile": {
"type": "object"
},
"style_notes": {
"type": "object"
},
"things_to_look_at": {
"type": "array",
"items": {
"type": "object"
}
},
"touch_ups": {
"type": "string"
},
"questions_for_the_artist": {
"type": "array",
"items": {
"type": "string"
}
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"note": {
"type": "string"
}
}
}🟢check_line_spacing(line_width_mm, gap_mm, years)
Use when the user gives a line width and the gap between two lines or letters in millimetres and asks whether the gap will stay open as the tattoo ages. Applies the published rule of thumb that a line widens by about 0.1 mm per decade: returns the line width and gap after the given number of years (default 20), whether the gap meets the guides' 'at least as wide as the line' rule, and what the guide's worked example would do to it. Illustrative arithmetic, not a measurement.
Input Schema
{
"type": "object",
"properties": {
"line_width_mm": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10,
"description": "Width of the line in millimetres, as drawn today (for example 0.3 fine line, 1.5 bold outline)."
},
"gap_mm": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 50,
"description": "Width of the space between the two lines or letters, in millimetres."
},
"years": {
"type": "number",
"minimum": 1,
"maximum": 60,
"description": "Years to project. Defaults to 20."
}
},
"required": [
"line_width_mm",
"gap_mm"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"today": {
"type": "object"
},
"guide_gap_range_mm": {
"type": "object"
},
"after": {
"type": "object"
},
"years_until_gap_used_up": {
"type": "number"
},
"worked_example": {
"type": "object"
},
"status": {
"type": "string"
},
"explanation": {
"type": "string"
},
"assumptions": {
"type": "object"
},
"source": {
"type": "string"
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"note": {
"type": "string"
}
}
}🟢get_tattoo_size_chart(size_cm)
Use when the user asks how big or how small a kind of tattoo can be, or what fits at a given size. Returns the smallest and better size for eight kinds of design (letters by height, other designs by longest side), real-world size comparisons and the small/medium/large ranges. Optional size_cm marks which designs meet their minimum at that size.
Input Schema
{
"type": "object",
"properties": {
"size_cm": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 500,
"description": "Optional size in centimetres to look up what fits."
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"updated": {
"type": "string"
},
"rows": {
"type": "array",
"items": {
"type": "object"
}
},
"scale": {
"type": "array",
"items": {
"type": "object"
}
},
"source": {
"type": "string"
},
"note": {
"type": "string"
}
}
}🟢compare_tattoo_placements(placements, sort_by)
Use when the user asks how body areas compare for pain, fading, sun, friction, stretch or curvature, or which areas hold ink longest. Returns the ten common areas (or the ones requested), ordered by fade by default. Estimates are coarse 0-100 comparisons, not measurements.
Input Schema
{
"type": "object",
"properties": {
"placements": {
"type": "array",
"items": {
"type": "string",
"enum": [
"upper-arm",
"forearm",
"back",
"shoulder",
"leg",
"hand",
"neck",
"chest",
"ribs",
"wrist"
]
},
"description": "Areas to compare. Omit for all ten."
},
"sort_by": {
"type": "string",
"enum": [
"fade",
"pain",
"sun",
"friction"
],
"description": "Order, lowest first. Defaults to fade."
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"sorted_by": {
"type": "string"
},
"areas": {
"type": "array",
"items": {
"type": "object"
}
},
"source": {
"type": "string"
},
"note": {
"type": "string"
}
}
}🟢get_pre_booking_checklist
Use when the user asks how to decide whether they are ready to book a tattoo, what to ask an artist, or what red flags to watch for in a consultation. Returns a short ordered checklist, the one question to ask when an artist pushes back, how to judge healed work, and consultation red flags.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"steps": {
"type": "array",
"items": {
"type": "string"
}
},
"ask_the_artist": {
"type": "string"
},
"red_flags": {
"type": "string"
},
"source": {
"type": "string"
},
"note": {
"type": "string"
}
}
}Community
Evidence