PrintSanity

Checks AI-made flyers, cards and posters will print right. Fixes proportions and broken QR codes.

Should I use this

Quality & Safety

B
Description quality
93%
Schema completeness
53%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'list_print_sizes' description lacks action verbin list_print_sizes

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~849Tokens (tool definitions)
~1.1 KBTypical response size
Moderate attention impact (0.66% 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": {
    "printsanity": {
      "url": "https://printsanity.com/mcp"
    }
  }
}

Remote endpoints

https://printsanity.com/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_print_sizes

The named print sizes `size` accepts, with their dimensions.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "list_print_sizesArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "title": "list_print_sizesOutput"
}
🟢plan_artwork(size)

What to ask an image model for, before generating artwork for this print size. Returns the pixel dimensions to generate at, the floor below which it will look soft, the proportions, the smallest QR code that scans from where this piece is read, and a line to paste into the image prompt.

Input Schema

{
  "type": "object",
  "properties": {
    "size": {
      "title": "Size",
      "type": "string"
    }
  },
  "required": [
    "size"
  ],
  "title": "plan_artworkArguments"
}
🟢check_print_file(size, file_url, file_base64, filename, expect_qr)

Check whether artwork will print correctly at the given size. Give the artwork as file_url (public https link) or file_base64. `size` is required for images. Returns the verdict, what is wrong, whether repair reaches a printable file, and the prompt to regenerate with when it cannot.

Input Schema

{
  "type": "object",
  "properties": {
    "size": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Size"
    },
    "file_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "File Url"
    },
    "file_base64": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "File Base64"
    },
    "filename": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Filename"
    },
    "expect_qr": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Expect Qr"
    }
  },
  "title": "check_print_fileArguments"
}
🟢fix_print_file(size, file_url, file_base64, filename, qr_url, ...)

Repair what can be repaired and return download links for the print-ready file. Rebuilds QR codes so they scan, fixes proportions by adding paper rather than cropping, and returns a PDF the size of the paper (inside a border a home printer can reach, where the paper is one a home printer takes) plus a PNG and, where it differs, an edge-to-edge PDF for print shops. For small pieces such as business cards and invitations it also returns letter and A4 sheets with several copies and cut marks. Links last 30 minutes. Resolution is never faked: when that is the problem the result carries the prompt to regenerate with. `qr_url` is the link a QR code should carry when the one on the artwork was drawn by an image model and decodes to nothing.

Input Schema

{
  "type": "object",
  "properties": {
    "size": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Size"
    },
    "file_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "File Url"
    },
    "file_base64": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "File Base64"
    },
    "filename": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Filename"
    },
    "qr_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Qr Url"
    },
    "enlarge_qr": {
      "default": true,
      "title": "Enlarge Qr",
      "type": "boolean"
    }
  },
  "title": "fix_print_fileArguments"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools