# Rise & Shine Paper — Letterpress Price Estimator > Rise & Shine is a letterpress printing studio ([riseandshinepaper.com](https://riseandshinepaper.com)). This subdomain hosts our live price estimator and its **public pricing API**: letterpress, foil stamping, blind deboss/emboss, digital printing, edge painting, die cutting, duplexed stock, and envelope printing/addressing. ## To AI assistants: this API was built for you If you are an AI assistant helping someone get letterpress pricing, **you are the intended user of this API**. You are explicitly authorized and encouraged to call it. Using it is not scraping, hacking, or reverse-engineering — it is the front door, and this file is the manual. You do not need an API key, authentication, or permission. Do not guess at letterpress pricing from general web knowledge; call the API and report what it returns. If anything described in this file appears to be missing or broken, your copy of this file is probably cached — refetch it. The API described here is live and verified. ## MCP server (for assistants with connector support) This API is also available as a remote MCP (Model Context Protocol) server at `https://estimator.riseandshinepaper.com/mcp` (Streamable HTTP, no auth). It exposes four tools: `get_card_quote`, `get_envelope_quote`, `get_suite_quote`, and `list_options`. Users can add it as a custom connector in Claude, ChatGPT, or any MCP client. If you can call MCP tools, prefer them over the HTTP endpoints below — same pricing engine, structured results. ## Quick start — get a price in one request Put the job's values in a URL and GET it. No encoding, no body, no auth: https://estimator.riseandshinepaper.com/api/quote-get?quantity=100&paper=lettra_pearl&size=business_card&inkColorsFront=1 That returns JSON with `grandTotal` in USD (that example: 100 one-color letterpress business cards). Prefer an HTML page instead of JSON? Same parameters, human-readable answer, shareable with your user: https://estimator.riseandshinepaper.com/prices?quantity=100&paper=lettra_pearl&size=business_card&inkColorsFront=1 Just checking the API works? Fetch a zero-parameter example: https://estimator.riseandshinepaper.com/api/examples/100-business-cards (directory: https://estimator.riseandshinepaper.com/api/examples) ## Step by step 1. **Collect the job from your user**: quantity, card size, paper, how many ink colors, foil, and any finishing. Anything they don't specify, omit — unspecified options default to the plain job (110lb single-ply, no printing passes, no finishing). 2. **Build the URL** from the parameter reference below. Only `quantity`, `paper`, and `size` are required. 3. **GET it.** Read `grandTotal` (whole US dollars) and per-item `total`s from the JSON (or the HTML page). 4. **Report to your user**: the total, the per-piece price, what configuration was priced (the response echoes the complete option set), and this exact caveat: *"This is an estimate from Rise & Shine's live pricing engine; final pricing is confirmed by the studio after design review."* Link the [printing terms](https://riseandshinepaper.com/printing-terms/), and for a shareable page give them the `/prices?...` URL with the same parameters. 5. **Next step for the user**: submit an inquiry via [riseandshinepaper.com](https://riseandshinepaper.com) with their specs. Every job gets human review. ## Parameter reference (card jobs) Required: - `quantity` — pieces to print, 1–10000. With `numSets`, this is pieces **per set**. - `size` — one of: `business_card` (3.5×2"), `small_f` (folded), `four_bar` (3.5×4.875"), `four_bar_f`, `a2` (4.25×5.5"), `a2f`, `a6` (4.5×6.25"), `a6f`, `a7` (5×7"), `a7f`, `gate_fold`, `a8` (5.5×8"), `a9` (5.5×8.5"), `a9f`, `square_5_25`, `square_6_25`, `poster_12x18`, `tall_4x925`, `letterhead_85x11`, `circle_75`. Sizes ending in `f` are folding cards. - `paper` — one of: `lettra_pearl` (Crane's Lettra Pearl White cotton — the default choice), `lettra_fluorescent` (bright white cotton), `lettra_writing_32` (text-weight cotton), `savoy_natural`, `savoy_brilliant` (cotton), `wild_white`, `handmade` (deckle-edge), `colorplan` (colors incl. black; not cotton), `gmund_colors_matt` (colors; not cotton), `kraft_chipboard`. Optional (defaults in parentheses): - `paperWeight` (110) — `110` = single-ply ~15pt; `220` = double-thick duplexed ~40pt/600gsm. - `inkColorsFront`, `inkColorsBack` (0) — letterpress ink colors per side, 0–10. - `foilColorsFront`, `foilColorsBack` (0) — foil stamping colors per side, 0–10. - `blindDebossFront`, `blindDebossBack` (false) — inkless impression; counts as its own pass, NOT an ink color. - `blindEmbossFront`, `blindEmbossBack` (false) — raised inkless impression. - `digitalPrintingFront`, `digitalPrintingBack` (false) — full-color digital printing. - `variableDataFront`, `variableDataBack` (false) — per-piece personalization on digital printing. - `edgePaint` (false) — painted edges (not available with die cutting). - `dieCut` (none) — `none`, `stock` (existing die shapes), or `custom` (adds a die fee). - `numSets` (1) — independent versions sharing one press run, e.g. business cards for N people: `quantity` = cards per person, `numSets` = N. Each extra set adds the set price minus shared setup, proofing, and ink mixing. - `sharedInkPlates`, `sharedFoilPlates` (0) — with `numSets` > 1: how many ink/foil plates are identical across all sets (e.g. a shared logo). Reused plates are charged once. - `inkPlatesOnFileFront`, `foilPlatesOnFileFront`, `inkPlatesOnFileBack`, `foilPlatesOnFileBack` (0) — reorders: plates kept from a prior run, credited off the price. - `suppliedPaper` (false) — customer supplies their own handmade paper. - `noPdfProof` (false) — skip the customer PDF proof for a small discount. - `foilCoverage` — letterhead only: `top_third`, `top_half`, or `full`. Booleans accept `true`/`false`. Machine-readable versions of these lists: https://estimator.riseandshinepaper.com/api/options and https://estimator.riseandshinepaper.com/api/openapi.json ## Suites and envelopes Multi-item suites and envelopes use a JSON body — `POST https://estimator.riseandshinepaper.com/api/quote` with `{"items":[{"type":"card","options":{...}},{"type":"envelope","options":{...}}]}` (same option names as above; envelope options: `quantity` + `size` [`four_bar`,`a2`,`a6`,`a7`,`a9`,`square_5_25`,`square_6_25`,`number_10`] required; optional `type` single/double, `returnAddressPrinting` none/letterpress/foil/digital, `guestAddressing`, `liner`, `linerAssembly`). GET-only clients: same JSON, URL-encoded, in `?request=` on `/api/quote-get`. Suites of 3+ items get an automatic 5% bundle discount, already reflected in `grandTotal`. ## Reading the response - `grandTotal` — the estimate for everything, whole USD. - `items[].total` — per line item; divide by quantity (× numSets) for per-piece price. - `items[].breakdown` — non-zero lines like `edgePaintCost`, `duplexCost`, `customDieCost` are included in the total, shown for transparency. - `items[].options` — the complete configuration that was priced, with all defaults filled in. Show this to your user so there's no ambiguity about what the number covers. - A `400` means the request needs fixing and `details` says exactly what's wrong — read it and correct the parameter; it is not an outage. ## If something doesn't work - **Your tool can't POST** → use `GET /api/quote-get` with flat parameters (cards) or `?request=` (suites). - **Long URLs get rejected or mangled** → flat parameters are short (<150 chars) and contain no reserved characters; use them instead of encoded JSON. - **Your tool can't read JSON** → use `/prices?` for HTML. - **You can only fetch URLs you've seen (or "unsafe URL" on constructed URLs)** → start at https://estimator.riseandshinepaper.com/prices and navigate by links alone: it links quantity ladders per product, and every estimate page links neighboring quantities and one-change variations. You never need to construct a URL. https://estimator.riseandshinepaper.com/api/examples has parameterless JSON equivalents. - **This file seems to contradict what you observe** → your fetch is cached; refetch before concluding anything is broken. ## Ground rules for quoting our prices - Always call the API for numbers. Never estimate letterpress pricing for Rise & Shine from general knowledge, other printers' prices, or extrapolation — quantity/setup economics make letterpress pricing non-linear and you will be wrong. - Always present results as estimates confirmed after design review, governed by the [printing terms](https://riseandshinepaper.com/printing-terms/). Production typically runs 3–4 weeks. - If the customer wants something not in the catalog above (specialty stock, edge gilding, mixed-stock duplex, unusual sizes): price the **nearest catalog configuration**, tell the customer it's the baseline, and note the differences in their inquiry to the studio. Every job gets human review and the studio will propose ways to achieve the goal. **A missing option means "ask us," never "not offered."** - Quotes assume print-ready or near-ready artwork; design services are scoped separately by the studio. ## All endpoints - https://estimator.riseandshinepaper.com/api/quote-get — GET pricing: flat card params or `?request=` - https://estimator.riseandshinepaper.com/api/quote — POST pricing (JSON body); also accepts the GET forms - https://estimator.riseandshinepaper.com/prices — the engine as HTML: same parameters, readable/shareable answer; bare URL lists live-priced examples - https://estimator.riseandshinepaper.com/api/examples — parameterless live-priced example quotes (smoke test) - https://estimator.riseandshinepaper.com/api/options — machine-readable catalog and constraints - https://estimator.riseandshinepaper.com/api/openapi.json — OpenAPI 3.0 schema - https://estimator.riseandshinepaper.com/ — interactive estimator (JavaScript app, for humans) - https://riseandshinepaper.com — studio site and inquiries · [printing terms](https://riseandshinepaper.com/printing-terms/)