Skip to main content
Just want to connect? Follow MCP server, or hand your agent the Quickstart for agents.
Print.App runs a remote Model Context Protocol server, so AI agents such as ChatGPT, Claude, Cursor or your own can work in your account through the REST API: build a design from a brief, look at it and fix it, then put it on a product.
A client connects one of two ways, both with a secret key of your store:
  • Sign in (OAuth): apps such as ChatGPT and Claude open a Print.App page where you paste the key and allow access. The app never sees the key: it gets its own access, tied to that key.
  • Send the key: developer tools and your own code send Authorization: Bearer sk_… with every request.
An agent connected with your key can change and delete anything in your account that the API can. Create a separate key for each app or agent, labelled so you recognise it. Revoking the key in the admin disconnects it, including apps that signed in with it.

Connect a client

  1. In ChatGPT, add a custom MCP server (it is in developer mode; see OpenAI’s Connecting custom MCP servers in ChatGPT for where it is on your plan).
  2. Name it Print.App, enter the URL https://api.print.app/mcp, and choose OAuth as the authentication.
  3. ChatGPT opens the Print.App connect page. Paste a secret key of your store and click Allow access.
Any MCP client that speaks Streamable HTTP works the same way, sending a key or signing in. The server is stateless: it answers JSON over POST and keeps no sessions.

How signing in works

Clients find the sign-in on their own: a request without credentials gets a 401 that points to https://api.print.app/.well-known/oauth-protected-resource/mcp, and from there to the authorization server’s metadata at https://api.print.app/.well-known/oauth-authorization-server. It supports dynamic client registration and client ID metadata documents, PKCE (S256) and refresh tokens. Access lasts an hour and the client renews it on its own; it stops within a minute of the key it was approved with being revoked. Redirect URIs must be https addresses, as ChatGPT’s and Claude’s are. Apps that sign in through a local address (http://localhost:…) can’t register; send the key as a header from those instead.

What an agent can do

Each tool calls the REST API with your key, so the same rules, limits and errors apply. Tools that only read are marked read-only; tools that can delete are marked destructive, so clients that ask before running those will ask.

How an agent builds a design

  1. create_design at the trim size, with bleed and a safe margin.
  2. upload_file for logos, photos and SVG graphics.
  3. get_design_content to read the page size and safe area, then edit_design with a batch of operations: text, shapes, graphics, photo frames, QR codes, calendars. The batch saves as one change, or not at all.
  4. preview_design returns images of the pages, so the agent can look at its work and fix what it sees with another edit_design.
  5. set_product_designs to sell it on a store product, or create_editor_link to share it.
Try it with a prompt like “Create a two-sided 85 × 55 mm business card for a bakery called Crumb & Co with 3 mm bleed: logo from https://…/logo.png, the name, job title and phone as fields customers fill in, and a warm palette. Show me both sides.”

Things to know

  • Page content can only be edited on accounts that use the new editor. Others get editor_not_supported.
  • SVG graphics go in as files. The firewall in front of the API refuses requests that carry markup, so an agent should upload an SVG with upload_file and place it as an asset, not write SVG into an operation. It stays vector in print. A tool call with SVG or HTML in its arguments fails with an HTTP 403 before it reaches the server, so the client reports a connection error rather than a tool error.
  • Fonts must be families your account has. list_fonts lists them; manage_font imports any Google font.
  • Previews are redrawn each time a design is saved. They are for checking a layout; the PDF is made from the design itself.