Prodigi MCP by usefulapi
Read Prodigi print orders, tracking and product details; compare quotes without placing orders.
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": {
"prodigi": {
"url": "https://prodigi.usefulapi.io/mcp"
}
}
}Remote endpoints
https://prodigi.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢prodigi_list_orders(top, skip, status, created_from, created_to, ...)
List print orders of this Prodigi account, newest first (sorted by order id, descending), with status stage, items, shipments and charges. Filter by status, creation time, Prodigi order ids or your own merchant references. Paging: top (1-100, default 10) and skip; the reply has has_more and next_skip. Recipient names and addresses are real customer data. GET /orders.
Input Schema
{
"type": "object",
"properties": {
"top": {
"description": "Orders per page, 1-100 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Orders to skip (default 0). Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000000
},
"status": {
"description": "Only orders in this stage.",
"type": "string",
"enum": [
"draft",
"awaitingPayment",
"inProgress",
"complete",
"cancelled"
]
},
"created_from": {
"description": "Only orders placed after this time (UTC).",
"type": "string"
},
"created_to": {
"description": "Only orders placed before this time (UTC).",
"type": "string"
},
"order_ids": {
"description": "Only these Prodigi order ids.",
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Prodigi order id, e.g. ord_840796."
}
},
"merchant_references": {
"description": "Only orders with these merchant references.",
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢prodigi_get_order(order_id)
One print order by Prodigi order id: status stage and per-step details (asset download, production, shipping), issues, charges, shipments with tracking, recipient, items with print assets and costs, metadata. The webhook callbackUrl is reduced to its host. GET /orders/{id}.
Input Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Prodigi order id, e.g. ord_840796."
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢prodigi_get_order_actions(order_id)
Which changes Prodigi still allows on an order right now (cancel, change recipient details, change shipping method, change metadata), each with isAvailable (Yes/No). Only reports availability; it changes nothing. GET /orders/{id}/actions.
Input Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Prodigi order id, e.g. ord_840796."
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢prodigi_create_quote(destination_country_code, shipping_method, currency_code, items, inserts)
Price a print order WITHOUT creating or charging one: item cost, shipping (per shipping method, or all methods when none is given), branding inserts, tax and total, with carrier, fulfilment lab and unit costs, in the account's currency unless currency_code is set. Each item needs a sku, copies and the print areas (assets, e.g. printArea 'default'); books take pageCount. Items with problems come back as outcome CreatedWithIssues. POST /quotes (read-only: nothing is saved or billed).
Input Schema
{
"type": "object",
"properties": {
"destination_country_code": {
"description": "2-letter ISO country the order would ship to, e.g. GB.",
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"shipping_method": {
"description": "Only quote this method; omit to get all methods.",
"type": "string",
"enum": [
"budget",
"standard",
"standardplus",
"express",
"overnight"
]
},
"currency_code": {
"description": "3-letter ISO currency, e.g. USD (default: the account's setting).",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"items": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"sku": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Prodigi product SKU, e.g. GLOBAL-CAN-10x10."
},
"copies": {
"type": "integer",
"minimum": 1,
"maximum": 10000,
"description": "Number of copies."
},
"attributes": {
"description": "Product attributes from get_product, e.g. {\"wrap\":\"ImageWrap\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 200
}
},
"assets": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"printArea": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Print area name from get_product (usually 'default')."
},
"pageCount": {
"description": "Pages in the asset (books only).",
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
"required": [
"printArea"
]
}
}
},
"required": [
"sku",
"copies",
"assets"
]
},
"description": "The items to price (1-50)."
},
"inserts": {
"description": "Branding inserts to include (each at most once).",
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"enum": [
"postcard",
"flyer",
"packing_slip_bw",
"packing_slip_color",
"sticker_exterior_round",
"sticker_exterior_rectangle",
"sticker_interior_round",
"sticker_interior_rectangle"
]
}
}
},
"required": [
"destination_country_code",
"items"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢prodigi_get_product(sku)
Details of one Prodigi product by SKU: description, dimensions, the attribute names and allowed values (size, wrap, colour...), print areas and which are required, and variants with the countries each ships to and the print-area pixel sizes. Use it to build valid quote requests. GET /products/{sku}.
Input Schema
{
"type": "object",
"properties": {
"sku": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Prodigi product SKU, e.g. GLOBAL-CAN-10x10."
}
},
"required": [
"sku"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢prodigi_get_spine_width(sku, destination_country_code, state, number_of_pages)
Calculate the spine width in mm of a book product for a page count (for cover artwork). A pure calculation: nothing is created or charged. POST /products/spine.
Input Schema
{
"type": "object",
"properties": {
"sku": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Prodigi product SKU, e.g. GLOBAL-CAN-10x10."
},
"destination_country_code": {
"description": "2-letter ISO country the book would ship to, e.g. GB.",
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"state": {
"description": "State/county of the destination, if the product needs it.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"number_of_pages": {
"type": "integer",
"minimum": 1,
"maximum": 10000,
"description": "Number of pages in the book."
}
},
"required": [
"sku",
"destination_country_code",
"number_of_pages"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence