Skip to content
Angels Print
Search products…

✦ For AI agents

Your agent can order printing here.

When an operator tells an agent “print 500 business cards by Thursday”, the agent can search our 131-product catalogue, get the exact price with options, and prepare the order. Then it stops and hands a human the link to pay.

The rule

The agent never pays. The operator does.

Orders are never charged automatically. An agent can only prepare a draft; a human operator must open the approval link, review the cart and pay via Stripe Checkout.

Every price is recomputed on the server from the product configuration — at quote, at draft, and again when the operator pays. A price sent by a client is ignored, so an agent cannot invent, discount or inflate a total.

  • No card, no wallet and no account is ever exposed to an agent.
  • A prompt injection can, at worst, produce a draft nobody approves.
  • Drafts expire after 7 days and are signed — they cannot be edited in transit.
  • The paid order is written by the same Stripe webhook that handles the shop.

How an order happens

Step 1

Find the product

GET /api/agent/products?q=business+cards — slugs, entry prices, category counts.

Step 2

Price it exactly

POST /api/agent/quote with the slug, quantity and any selections. Back comes the real total and an itemId.

Step 3

Prepare the order

POST /api/agent/orders with the operator's email. You get draft_id and approval_url — and nothing is charged.

Step 4

Hand the link to a human

The operator opens approval_url, checks the cart and pays with Stripe. Only then does the order exist.

Option A — MCP

Connect the shop as a tool

A streamable-HTTP MCP server, protocol 2025-06-18, no key required. Drop this into claude_desktop_config.json or your client's equivalent.

{
  "mcpServers": {
    "angels-print": {
      "type": "http",
      "url": "https://angelsprint.com/api/mcp"
    }
  }
}

Claude Code, one line:

claude mcp add --transport http angels-print https://angelsprint.com/api/mcp

Discovery pointer: /.well-known/mcp.json

Option B — REST

Or just call the API

Same capabilities over plain JSON. Full contract in the OpenAPI 3.1 spec.

1 · Find the product

curl -s "https://angelsprint.com/api/agent/products?q=business+cards&limit=3"

2 · Price it exactly

curl -s -X POST https://angelsprint.com/api/agent/quote \
  -H "content-type: application/json" \
  -d '{ "slug": "classic-business-cards-160", "quantity": 500 }'

# → "unitPrice": 43.96, "shipping": 9.99, "total": 53.95,
#   "summary": "500 pcs · 3.5 x 2 · Rectangle · 14PT Coated Both Sides · Front and Back · Glossy, 2 Sides · 3 Business Days",
#   "itemId": "classic-business-cards-160|{…}"   ← pin it for the order

3 · Prepare it for a human

curl -s -X POST https://angelsprint.com/api/agent/orders \
  -H "content-type: application/json" \
  -H "x-agent-name: Claude for Acme Design" \
  -d '{
    "items": [{ "slug": "classic-business-cards-160", "quantity": 500 }],
    "operator": { "email": "ops@acme.com", "name": "Dana" },
    "note": "Needed by Thursday"
  }'

# → "status": "awaiting_approval",
#   "total": 53.95,
#   "approval_url": "https://angelsprint.com/a/<draft_id>"
#   Nothing was charged. Send that URL to your operator.

Endpoints

MethodPathWhat it does
GET/api/agent/productsSearch or list the catalogue. Every word must match; returns slugs, entry prices and the category counts.
GET/api/agent/products/{slug}One product's whole option surface: stocks and finishes with price deltas, the quantity ladder, turnaround speeds, size limits.
POST/api/agent/quoteExact price for one configured product, plus an itemId that pins those selections for the order.
POST/api/agent/ordersPrepare a draft and get the approval link for the human operator. Charges nothing and writes no order.
GET/api/agent/orders/{draft_id}Read a draft back: awaiting_approval, paid or expired, with the totals the operator sees.

Limits

  • 120 catalogue reads per minute per IP.
  • 60 quotes and 6 drafts per minute per IP.
  • Up to 7 lines in one order.
  • Over the limit: 429 with code: rate_limited.

Artwork

PDF · PNG · JPG · WEBP · AI · EPS · DXF · DWG — up to 25 MB.

Attach artwork as public https links on the order, or let the operator send the file after approving. DXF/DWG are for cutting jobs.

Referenced, never uploaded: https URL on the order (no uploads, no data: URLs) — up to 10 files per order.

Production & delivery

  • Printed in Sun Valley, CA.
  • 3–5 business days standard; next-day on 39 products.
  • Standard-size items: free U.S. ground over $100, $9.99 flat below. Oversized items require pickup or a separate shipping quote.
  • 6 categories, 131 products.