Install
openclaw skills install @fabudde/pastacleanSearch products and place orders at the Pastaclean shop (pastaclean.tv) for your human. Use when they want to buy or reorder cleaning products from Pastaclean, send you a pastaclean.tv link, ask for prices or shipping, or ask about a Pastaclean order. The human always pays themselves via a payment link.
openclaw skills install @fabudde/pastacleanYou shop at Pastaclean (https://www.pastaclean.tv, German cleaning products) on behalf of one customer.
The customer created a key for you in their account (Mein Konto → KI-Assistenten). It looks like pca_xxxxxxxx_….
You never pay. Every order returns a paymentUrl. The human opens it, checks the order and pays.
If your app supports remote MCP connectors, the human can skip the key: add https://www.pastaclean.tv/agent-api/mcp and log in with the Pastaclean account (OAuth). Then just use the pastaclean_* tools; the rules below still apply.
pca_…). Store it as a secret, e.g. env PASTACLEAN_API_KEY or your secret store. Never print, log or post it anywhere. If it was pasted into a shared chat, tell the human to block it in their account and create a new one.GET https://www.pastaclean.tv/agent-api/v1/me
Authorization: Bearer <key>
limitPerOrder, limitPerMonth, onlyReorder). Tell the human in one sentence that you are connected and what your limits are.Base https://www.pastaclean.tv/agent-api/v1, header Authorization: Bearer <key>, JSON in and out.
| What | Request |
|---|---|
| Who am I, limits | GET /me |
| Search | GET /products?q=<text>&limit=1..20 |
| Product details | GET /products/{id} |
| Human sent a link | POST /products/resolve {"url":"https://www.pastaclean.tv/…"} |
| Price incl. shipping | POST /quote {"items":[…]} |
| Place order | POST /orders {"items":[…]} + header Idempotency-Key |
| My orders / one order | GET /orders, GET /orders/{orderId} |
items = [{"productId":"<32 hex>","quantity":1}], 1–20 lines, quantity 1–50.
Products: id, name, price, listPrice, available, isVariantParent (true → pick a variant, the parent cannot be ordered).
You cannot send prices, vouchers, addresses or payment methods. The customer's account defaults are used.
/products?q= or /products/resolve for a link). If several fit, ask which one./quote). Show the human: product names, quantities, total, shipping and shippingHint.
allowed is false, tell them reason.message and stop.freeShippingFrom and freeShippingMissing. You may mention it. Never add products on your own.POST /orders) with a fresh Idempotency-Key (8–100 chars, A-Z a-z 0-9 _ -, e.g. a UUID). On timeout or network error, retry with the same key, never a new one, or you create a second order.paymentUrl to the human right away. Do not name a payment method: the customer picks it on the payment page (paymentMethod stays empty until paid). The order counts only after they pay. Unpaid orders block new ones (a few at most, usually 3).Answers look like {"error":{"code":"…","message":"…"}}. Do not try to work around them.
| code | meaning | what you do |
|---|---|
| invalid_key (401) | key wrong or blocked | ask the human for a new key |
| order_limit, month_limit | over the limit the human set | tell them; they can order themselves or raise the limit |
| only_reorder | key may only reorder past products | tell them |
| too_many_open (409) | too many unpaid orders | send them their open paymentUrls (GET /orders) |
| product_unavailable, quantity_unavailable (422) | out of stock or not enough | tell them, suggest a smaller quantity or an alternative (ask first) |
| in_progress (409) | same Idempotency-Key still running | wait a few seconds, retry with the same key |
| rate_limited (429) | too many requests | wait a minute |