Connect your store
Test in your terminal
curl "https://runeloresupply.com/discovery/v1/products?search=shirt&limit=3"This public lookup needs no key. Merchant ordering requires the authorization below.
RuneLore LLC supplies custom products to businesses. Connect your shop or AI through the merchant API, or install the WooCommerce connector for a WordPress store. Stripe processes RuneLore payments.
Authorize your shop or AI Merchant OpenAPI
Complete merchant setup before automatic ordering
Requires an active RuneLore account, a compatible working connector with order permission, published approved product mappings, a saved Stripe payment method, and explicitly enabled spending limits. Orders support US delivery and USD only.
- Sign in, create a connection for your shop’s HTTPS address, and save the key in your server or AI client’s secret storage.
- Set per-order and daily limits, save a payment method with Stripe, and explicitly enable automatic purchases. A read-only key cannot place orders. Keys cannot change spending consent.
- Customize a product and save the approved design in your cart. Approve its resale artwork rights and publish the exact size, color and design to the connection.
- Your shop verifies its customer payment, maps the approved listing, and sends the paid order. RuneLore checks current stock and price, prepares and verifies a supplier draft, charges the authorized method, and confirms production. Status and tracking return through polling.
Connect your AI
Use a Streamable HTTP MCP client that supports a secret Authorization header:
POST /mcp/merchant
Authorization: Bearer YOUR_CONNECTION_KEY
Content-Type: application/json
Accept: application/json, text/event-streamTools: merchant_status, merchant_listings, merchant_publish, merchant_submit_order, merchant_orders, merchant_order, merchant_cancel, merchant_restock_rules, merchant_inventory, merchant_received. Submit and inventory tools can initiate real purchases. Browse all products anonymously at /mcp/catalog, then order only your shop’s approved listings. This does not grant access to other shops. AI clients must support a secret bearer header, directly or through an adapter. Native OAuth login is not supported.
Any-platform API
All requests use the bearer key over HTTPS. GET requests need no signature. POST notifications also require a fresh signature; this authenticates your connector, while your shop remains responsible for verifying the customer’s payment.
key = SHA256(JSON.stringify(connectionKey)) as raw bytes
bodyHash = SHA256(exact UTF-8 request body) as lowercase hex
message = timestamp + "\n" + nonce + "\n" + method + "\n" + path + "\n" + bodyHash
signature = HMAC-SHA256(key, message) as lowercase hex
X-RuneLore-Timestamp: Unix seconds
X-RuneLore-Nonce: new 32–64 character hexadecimal nonce or UUID
X-RuneLore-Signature: signatureTimestamps must be within five minutes. Reused nonces are rejected. A transport retry uses a fresh nonce and signature with the original body and external order ID. MCP requests use authenticated protocol calls instead of this REST signature.
| Endpoint | Use |
|---|---|
| GET /merchant-api/v1/connection | Connection identity and permissions. |
| GET /merchant-api/v1/listings | Approved product/variant, size, color, design digest, merchant retail price, current RuneLore unit price and availability timestamp. |
| POST /merchant-api/v1/published | {listingId, externalProductId}: acknowledge a stable store or AI listing mapping. |
| POST /merchant-api/v1/orders | {externalOrderId, paid:true, maximumTotalMinor, recipient, items:[{listingId,quantity,expectedUnitMinor,designDigest}]}. Cents, USD. Save expected price and design when your customer orders. Size and color come from the immutable listing. |
| GET /merchant-api/v1/orders | Recent orders, sanitized event logs, failures, refund amounts and tracking packages. Poll every 30–60 seconds. |
| GET /merchant-api/v1/orders/ORDER_ID | One order, including older orders. |
| POST /merchant-api/v1/cancel | {id}: request cancellation and eligible original-payment refund. |
| GET /merchant-api/v1/restock | Separately authorized stock rules and incoming units. |
| POST /merchant-api/v1/inventory | {ruleId,available,sequence,observedAt}. Increasing sequence; observedAt in Unix milliseconds within 15 minutes. Never report unknown stock as zero. |
| POST /merchant-api/v1/received | {ruleId,orderId,receiptId,quantity}. Confirm physical receipt of shipped goods after updating shop inventory. Reuse receiptId on retry. Partial receipts keep remaining units incoming. |
Recipient: name, email, address1, optional address2, city, stateCode, countryCode:"US", zip, optional phone. A repeated externalOrderId with identical contents returns the original purchase; changed contents return 409. Reconnecting the same store address preserves its identity. Never create a new order ID to retry an uncertain purchase.
Sync timing and failure alerts
Products and tracking update through scheduled polling, not instantly. Keep WordPress scheduled tasks running for WooCommerce, or run polling in your own integration. Review failures in your RuneLore account, API or WooCommerce order notes; email and SMS failure alerts are not provided.
Exceptions and recovery
Unavailable products, stale or changed prices, invalid addresses, artwork problems, spending limits and payment failures pause the order. The account and API show a failure code and order log. Pause automatic purchases in your account at any time. Resolve the cause; cancel an uncharged order before replacing it. Payment authentication failures are not retried as fresh charges. A known supplier rejection triggers cancellation and refund; unaccepted orders are checked for cancellation after one hour. Ambiguous supplier writes remain under reconciliation until cancellation or production is confirmed. An in-production order is never automatically refunded as if it were unfulfilled. Refund settlement depends on the payment network.
An incoming restock order blocks repeat buying. Canceled, expired or refunded replenishment pauses its rule for review. Receipt never increases reported stock automatically: update actual inventory, confirm receipt and send a new observation.
WooCommerce store connection
WooCommerce runs your WordPress storefront. Stripe processes the authorized RuneLore supply payment. They perform separate jobs and work together in this ordering flow.
Download version 0.2.0 for an existing WordPress/WooCommerce shop. Install it, enter the key under WooCommerce → RuneLore, enable sync and ensure WordPress scheduled tasks run every minute. The connector signs paid-order notifications, syncs approved products and stock checks, and stores returned status and tracking on the order. Products rotate through a bounded sync queue; stock is checked again before charging.
Choose your buying path
Buy stock for your business directly, or connect your online store for approved customer orders. The WooCommerce connector and merchant API are available; automatic purchases require account setup, approved products, payment authorization and spending limits. Stripe remains RuneLore’s payment processor. Other shop platforms use the merchant API through an adapter; native Shopify and Etsy apps are not supplied.