# Smartpress MCP server > Smartpress (smartpress.com) is a US online printer: it prints in the United States and ships across the US and Canada, and to many other countries. Its remote MCP server lets an AI agent search the print catalog, configure and price a job, upload and check artwork, generate a proof, and fill a cart that the customer checks out from on smartpress.com. Endpoint: https://mcp.smartpress.com/mcp (Streamable HTTP). No API key, account, or sign-in. This page is for people and agents setting up a connection. It describes the server and the rules it enforces. Whether to connect is the user's decision. ## Connect - Endpoint: `https://mcp.smartpress.com/mcp`, transport Streamable HTTP, no authentication. Leave OAuth fields empty. - Claude (web or desktop): Settings, then Connectors, then Add custom connector. Name it Smartpress and paste the endpoint. - Claude Code: `claude mcp add --transport http --scope user smartpress https://mcp.smartpress.com/mcp`, then `/mcp` shows it with 21 tools. - ChatGPT: add a custom connector (app) with the endpoint and no authentication. This needs developer mode, and menu names vary by plan and release. - Cursor, VS Code, Windsurf, Goose and most agent frameworks: `{"mcpServers": {"smartpress": {"type": "http", "url": "https://mcp.smartpress.com/mcp"}}}` - stdio-only clients: `npx mcp-remote https://mcp.smartpress.com/mcp` - Raw JSON-RPC: POST with `Accept: application/json, text/event-stream`, send `initialize` first, and send the returned `Mcp-Session-Id` header on every later call. Most clients ask the person before running a tool that changes something. Every tool is annotated read-only or not, so a client can tell which ones those are. ## What an agent can do - Discover: `find_products` (search the catalog in plain words), `get_product_config` (a product's options and defaults), `get_product_templates` (downloadable templates; most products have none). - Configure and price: `create_config_session`, then `update_config_session`. Every change returns a fresh quote, validation messages, and which options no longer fit. `get_session_latest` re-reads the session. Each turnaround option carries an `estimatedDeliveryDate`. - Upload artwork: `create_file_session`, then `get_file_upload_url`. Give the customer `uploadPageUrl` (a hosted upload page), or PUT the raw bytes to `url` with no extra headers. The link lasts 15 minutes by default (`expiresIn`, 1 to 3600 seconds). `list_session_files` confirms the upload. `link_file_session` and `clone_file_session` join or copy file sessions. - Match a file to a product: `analyze_file` (usually 30 to 90 seconds; if it is still running it returns an `uploadId` for `get_file_analysis`), then `recommend_products` (up to five ranked products with `initialSelections`). `get_file_session_analysis` reads the saved analysis. - Check artwork: `create_file_check` (preflight report) or `create_proof` (preflight plus a proof file), using the exact file name from `list_session_files`. Read the result with `get_file_session_proofs` until it is COMPLETED. It reports `isProofable` and `isFileCheckAvailable` first; when both are false, this product or file can't be checked. - Artwork orientation: before each proof, `create_proof` compares the artwork's orientation with the configured size. When the art is turned against it (for example 6 x 4 landscape art on a 4 x 6 postcard) and swapping width and height fits, it changes the configured size, which can change the price. The result then carries `orientation` with an `action` (`swapped`, `swapped-earlier`, `swapped-not-synced` or `warned`), `changedNow` (true only when this call changed the size), and a `message` in plain words. `swapped-not-synced` means the size changed but no proof started yet: the result is `proofStarted: false` with no `proofId`, and calling `create_proof` again a few seconds later starts it. `warned` means the size was not changed and the proof shows the art unrotated, with a warning. - Approve a proof: `set_proof_approval` with APPROVED, DECLINED, or FURTHER_REVIEW (a Smartpress expert reviews the file). - Fill a cart: `add_to_cart` returns a `cartLink` and a `clientKey`; reuse the `clientKey` to add more jobs to the same cart. - Send feedback: `send_feedback` passes the user's own words (a problem, a suggestion, or praise) to the Smartpress team, only when the user asks to send it. - Panels: clients that show MCP App panels (claude.ai, for example) also get `check_print_file` (the customer picks a PDF on their own computer; it is checked there and uploaded straight to Smartpress), `show_quote`, `show_proof`, `show_products` and `suggest_next_steps`, and see configuration changes and the cart as cards with buttons. Clients without panels don't list these five tools. ## Rules the customer and the server rely on - Nothing is ordered or paid through MCP. There is no checkout, payment, or order tool. An agent's work ends with a cart link; the customer chooses shipping, pays, and places the order on smartpress.com. - Shipping: Smartpress ships across the US and Canada, and to many other countries, but not every country. For an address outside the US and Canada, the customer confirms at checkout, where shipping options are shown for their address, or contacts Smartpress (https://smartpress.com/support/contact). - A cart is not an order. Before `add_to_cart`, restate the product, quantity, and price, and wait for a clear yes. - Orientation: when `orientation.changedNow` is true, the customer needs to hear that the size changed, and the new price if it changed, before the cart. When it is false, nothing changed in that call, so there is no change to announce. - Proofs: share `proofFileUrl` so the customer can see the proof itself (the link lasts up to 24 hours; read again for a fresh one). Summarize errors first, then warnings. - Approval: only the current proof, the one that carries `proofFileUrl`, can be approved, and only after the customer has seen it, heard every error and warning, and said yes. The server refuses APPROVED when the proof has errors or `noReport: true`; offer FURTHER_REVIEW instead. An approved proof is what prints. - After any configuration change, read `get_file_session_proofs` again. A proof with `invalid: true` no longer matches the order; offer to regenerate it. - Session ids work like claim tickets: anyone holding a configuration or file session id can read and change it. Keep them in the conversation; don't publish them. - One print-ready PDF per job: combine front and back, or cover and interior, into one file. ## Errors - `SELECTION_CONFLICT`: that combination can't run (for example a coating the paper won't take). The result lists the conflicting options; change one or ask the customer which to keep. - Validation messages after an update: the change was accepted but moved or cleared another option. Tell the customer what changed. - Upload 403 `SignatureDoesNotMatch`: extra headers on the PUT. Send only the bytes; request a new URL if 15 minutes have passed. - HTTP 429: a rate limit. Wait a minute and retry the same call. ## Limits - 60 MCP requests per minute per client IP. - Calls that change something (`create_config_session`, `update_config_session`, `add_to_cart`, `create_proof`, `create_file_check`, `set_proof_approval`): 10 per minute per agent conversation, or per client IP without one, under a 60 per minute per IP ceiling. - 500 requests per 5 minutes per IP at the edge, before the server. - Claude connectors (Anthropic's shared outbound range, 160.79.104.0/21): the per-IP limits above apply per MCP session instead, and the range as a whole has its own edge limit. ## Optional - [Smartpress company overview](https://smartpress.com/llms.txt): who Smartpress is, products, and file preparation. - [Privacy policy](https://smartpress.com/support/privacy-policy) - [Terms and conditions](https://smartpress.com/support/terms-and-conditions)