massprint

Print-on-demand for agents: upload a PDF, get a printed book delivered in India.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
77%
Qualität der Benennung
97%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~1,398Tokens (Tool-Definitionen)
~1.1 KBTypische Antwortgröße
Mittlere Auswirkung auf die Aufmerksamkeit (1.09% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "massprint": {
      "url": "https://themassprint.com/mcp"
    }
  }
}

Remote-Endpunkte

https://themassprint.com/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (7)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢get_catalog

List what can be printed: SKUs (storybook books, sticker-a3 wall charts, greeting-card-a5 folded cards), formats, supported trim sizes, page-count limits, prices (INR, shipping included), and shipping coverage (India only). Call this first to quote a price or check whether a PDF will be accepted.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟡create_upload

Start a PDF upload. Returns {upload_id, put_url, expires_at, max_bytes}. HTTP PUT the raw PDF bytes to put_url (Content-Type: application/pdf, no auth needed — the URL is signed). The PUT response includes the validation report. Then pass upload_id to create_order. Keyless use is bounded per calling origin: 20 create_upload calls per hour, at most 5 unused uploads open at a time, and put_url expires in 2 hours — so PUT the bytes promptly and reuse an upload_id you already hold instead of creating extras. An API key (see apply_enterprise) lifts both limits.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟡validate_pdf(upload_id)

Get the print-validation report for an uploaded PDF before paying: page count, trim size, hard errors (blocking) and soft warnings (non-blocking). Every error includes a `resolution` explaining how to fix it. Free to call; use it to check printability before create_order.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "upload_id": {
      "type": "string",
      "description": "The upload_id returned by create_upload."
    }
  },
  "required": [
    "upload_id"
  ],
  "additionalProperties": false
}
🔴create_order(upload_id, format, copies, email, address)

Create a print order for a validated upload. Validates everything BEFORE any payment link is minted. Returns { order, order_token } — the order object has order_id, status, amount, and payment_url (the Razorpay link, present while awaiting_payment). Give payment_url to the human to pay (UPI/cards/netbanking). SAVE order_token — it is shown only once and is required for get_order and cancel_order. The order confirms automatically after payment; unpaid orders expire after 72 hours.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "upload_id": {
      "type": "string",
      "description": "upload_id of a PDF that passed validation."
    },
    "format": {
      "type": "string",
      "enum": [
        "paperback",
        "hardcover",
        "sticker-a3",
        "greeting-card-a5"
      ],
      "description": "paperback/hardcover: bound storybook (20-60 page PDF). sticker-a3: single-sheet A3 portrait sticker / wall chart (exactly 1 page, 842×1191 pt). greeting-card-a5: folded A5 greeting card, one A4-landscape sheet printed duplex (exactly 2 pages, 859×612 pt incl. 3 mm bleed)."
    },
    "copies": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 1
    },
    "email": {
      "type": "string",
      "description": "Buyer email; receives the Razorpay payment notification."
    },
    "address": {
      "type": "object",
      "description": "India shipping address (V1 ships within India only).",
      "properties": {
        "name": {
          "type": "string"
        },
        "line1": {
          "type": "string"
        },
        "line2": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "pincode": {
          "type": "string",
          "description": "6-digit India PIN code"
        },
        "phone": {
          "type": "string",
          "description": "India mobile, 10 digits, optional +91 prefix"
        }
      },
      "required": [
        "name",
        "line1",
        "city",
        "state",
        "pincode",
        "phone"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "upload_id",
    "format",
    "email",
    "address"
  ],
  "additionalProperties": false
}
🟡get_order(order_id, order_token)

Check an order: status (awaiting_payment → confirmed → printing → shipped → delivered), tracking number once shipped, and — while unpaid — the payment_url again (so you can always re-answer "how do I pay"). Requires the order_token from create_order, or the API key that created the order (Authorization: Bearer mp_live_...).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string"
    },
    "order_token": {
      "type": "string",
      "description": "The token returned once by create_order. Optional if you send the API key that created the order instead."
    }
  },
  "required": [
    "order_id"
  ],
  "additionalProperties": false
}
🔴cancel_order(order_id, order_token)

Cancel an order, stopping it before it is printed. With the order_token from create_order this works while the order is awaiting_payment. A platform that sends its own API key (Authorization: Bearer mp_live_...) can additionally cancel an order THAT KEY created while it is confirmed or printing — that is how you stop a press when your customer cancels on your side. shipped and delivered can never be canceled; that is a refund, contact support (see get_catalog). Canceling stops production but moves no money, and it releases the order's client_reference — replaying that reference afterwards creates a new order and prints it. If the order moved on before the cancel landed you get not_cancellable naming its new status, never a false "canceled".

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string"
    },
    "order_token": {
      "type": "string",
      "description": "The token returned once by create_order. Optional if you send the API key that created the order instead."
    }
  },
  "required": [
    "order_id"
  ],
  "additionalProperties": false
}
🟡apply_enterprise(company_name, contact_email, gstin, expected_monthly_volume, notes)

Apply for an enterprise (invoiced) account — for platforms printing at volume behind their own checkout. Enterprise orders auto-confirm with no payment link, are priced at a platform discount off retail (default 25% below), and are settled monthly. Requires a valid India GSTIN for tax invoicing. This does NOT issue a key immediately: the application is reviewed and, once approved, an API key is emailed to contact_email. Use this only when a human has asked to set up a business/enterprise print account.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "company_name": {
      "type": "string",
      "description": "Registered business name."
    },
    "contact_email": {
      "type": "string",
      "description": "Where the approved API key and invoices are sent."
    },
    "gstin": {
      "type": "string",
      "description": "15-character India GSTIN, e.g. 29ABCDE1234F1Z5. Required for GST invoicing."
    },
    "expected_monthly_volume": {
      "type": "integer",
      "minimum": 0,
      "description": "Approximate books printed per month (optional)."
    },
    "notes": {
      "type": "string",
      "description": "Anything else for the reviewer (optional)."
    }
  },
  "required": [
    "company_name",
    "contact_email",
    "gstin"
  ],
  "additionalProperties": false
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet7 Tools
verifiziertVersion nicht aufgezeichnet7 Tools