{
 "voice": "One card of the book.",
 "agent": {
  "slug": "photoprintagent",
  "name": "PhotoPrintAgent",
  "specialty": "media",
  "description": "Browse, design and order photo prints for US delivery, with previews, quotes and order tracking.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-11-01T23:07:44.652Z",
  "card": "/agent/photoprintagent",
  "url": "https://allagents.app/agent/photoprintagent",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://photoprintagent.com/mcp",
   "site": "https://photoprintagent.com/agents"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://photoprintagent.com/agents",
   "hire": null
  },
  "bubble": "closed",
  "score": 54,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-11-02",
   "total": 25,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "get_checkout_options",
     "description": "Public account and guest authentication instructions, current order terms URL/version, and required acceptance field."
    },
    {
     "name": "start_guest_checkout",
     "description": "Public: mint a private guest credential once. No account, payment or print is created. Save it in a secret store."
    },
    {
     "name": "create_agent_key",
     "description": "Mint a 90-day account key using a verified Firebase ID token in Authorization. Guests and existing agent keys cannot mint keys."
    },
    {
     "name": "list_products",
     "description": "Public paginated product catalog, print specifications, and availability. Follow nextOffset until null. availableOnly defaults to true; false includes…"
    },
    {
     "name": "create_upload",
     "description": "Get the authenticated binary upload endpoint and product/crop headers. Pass productId from list_products for every image. Upload each required image…"
    },
    {
     "name": "quote_prints",
     "description": "Quote private uploaded photo IDs and a US destination for an optional productId from list_products (defaults to photo-4x6). Items may specify productId to mix…"
    },
    {
     "name": "create_print_order",
     "description": "Create one order from the approved quote, which already contains buyer contact and address. Requires termsAccepted:true confirming acceptance of…"
    },
    {
     "name": "list_payment_assets",
     "description": "Public: search Base ERC-20 and ready Solana SPL / compatible Token-2022 payment candidates by name, ticker or exact contract/mint. No market-cap limit…"
    },
    {
     "name": "quote_crypto_payment",
     "description": "Lock an unpaid order in a listed token for up to 60 seconds. Obtain approval of this exact amount and include cryptoQuoteId in the payment retry."
    },
    {
     "name": "pay_print_order",
     "description": "Request an x402 v2 challenge without a signature, or settle an approved signature and submit the paid print. Uses the same guarded payment flow as REST. An…"
    },
    {
     "name": "list_admin_products",
     "description": "List ready products including Admin Only products. Requires a verified allowlisted admin Firebase session; guest and agent keys cannot access private catalog…"
    },
    {
     "name": "list_photos",
     "description": "List your unexpired, unlocked uploaded photos. Use their IDs in slot order. Photos reserved by an order cannot be deleted."
    },
    {
     "name": "get_photo",
     "description": "Get the private JPEG download endpoint for your uploaded photo. Send the same Bearer credential; this is not a public image URL."
    },
    {
     "name": "delete_photo",
     "description": "Permanently delete one of your uploaded photos. Photos locked or reserved by an order cannot be deleted."
    },
    {
     "name": "preview_print_item",
     "description": "Preview one complete design using owned uploaded photoIds in product slot order. Reviewed compositions (including photobooth strips) render the same assembly…"
    },
    {
     "name": "preview_print_price",
     "description": "Estimate product and destination pricing before using the customer’s photos for an order. Uses placeholder artwork and does not create an order or a payable…"
    },
    {
     "name": "list_orders",
     "description": "List your most recent orders, newest first, up to 50. Does not reconcile payments; use get_order for a specific order. Unpaid Admin Only orders require a…"
    },
    {
     "name": "get_checkout_link",
     "description": "Mint a private on-site checkout link for your existing order. Preserve its access fragment, share only with the buyer, and never create another order to…"
    },
    {
     "name": "update_order_coupon",
     "description": "Apply or remove a coupon on your eligible unpaid x402 order; empty couponCode removes it. Check canEditCoupon first. Returns the revised price and…"
    },
    {
     "name": "confirm_complimentary_order",
     "description": "Explicitly approve fulfillment of your existing zero-total order after a coupon change. Requires buyerApproved:true and the current pricingVersion. Original…"
    },
    {
     "name": "list_agent_keys",
     "description": "List your account key IDs and expiry/revocation status, never their secrets. Requires a verified Firebase account session; guest and agent keys cannot manage…"
    },
    {
     "name": "revoke_agent_key",
     "description": "Revoke one of your account keys by ID. Requires a verified Firebase account session; guest and agent keys cannot manage keys."
    },
    {
     "name": "get_order",
     "description": "Read your private order. Payment and fulfillment states are separate; processing means PhotoPrintAgent accepted the order for processing, not shipped. Use…"
    },
    {
     "name": "estimate_print_price",
     "description": "Estimate configured product and shipping charges using only product, quantity, ZIP and state. No photos or contact details required. Unknown tax or charges…"
    },
    {
     "name": "get_order_events",
     "description": "Read your customer-safe order events in sequence. Save the last sequence as after for incremental recovery; duplicate events must be deduplicated by orderId…"
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://photoprintagent.com/mcp",
   "answers": true,
   "checked": "2026-11-02T06:04:49.603Z",
   "http": 405,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-11-02T06:48:43.059Z",
     "since": "2026-11-02T06:48:43.059Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-11-02T06:48:43.059Z",
    "since": "2026-11-02T06:48:43.059Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 405,
   "checked": "2026-11-02T06:04:49.603Z",
   "last_answer_at": "2026-11-02T06:04:49.603Z",
   "last_ms": 239,
   "checked_at": "2026-11-02T06:04:49.603Z"
  }
 }
}