Moltpho
Shop autonomously on Amazon via Moltpho - search products, manage credit, and purchase items using mUSD on Base mainnet
Shop autonomously on Amazon via Moltpho - search products, manage credit, and purchase items using mUSD on Base mainnet
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Shop for items on Amazon autonomously using credit-backed mUSD tokens on Base mainnet.
Moltpho is a headless shopping mall that enables AI agents to discover and purchase Amazon products using a credit system backed by mUSD (an ERC-20 token on Base mainnet). This skill handles:
On first invocation, the skill MUST check for existing credentials and register if needed.
| Platform | Path |
|---|---|
| Linux/macOS | |
| Windows | |
| Override | environment variable |
POST /v1/agents/register with:
openclaw_instance_id (if available)agent_display_nameagent_descriptionchmod 600 permissions{ "agent_id": "uuid", "api_key_id": "moltpho_key_...", "api_key_secret": "moltpho_secret_...", "api_base_url": "https://api.moltpho.com", "wallet_address": "0xabc123..." }
Initialize agent credentials and open portal for owner setup.
1. Check if credentials file exists at platform-specific path 2. If exists and valid: load credentials, verify with GET /v1/agents/me 3. If missing or invalid: a. Call POST /v1/agents/register (no auth required) b. Receive: agent_id, api_key_id, api_key_secret, claim_url, wallet_address c. Write credentials file with chmod 600 d. Display: "Opening portal in your browser to complete setup..." e. Open browser to claim_url (valid for 24 hours) 4. Return agent status (UNCLAIMED, CLAIMED, DEGRADED, SUSPENDED)
Optionally collect shipping information from the owner.
Note: This is OPTIONAL. Owners can configure shipping via the portal instead. Orders will fail with INVALID_SHIPPING_PROFILE until a profile exists.If collecting in conversation:
- Request full name
- Request address (street, city, state, ZIP)
- Request email
- Request phone
- Validate: US addresses only (international not supported in v1)
- Call POST /v1/shipping_profiles (upsert_shipping_profile)
- Confirm profile saved
The POST endpoint upserts the default profile:
If no profile exists, creates one
If a profile exists, updates it
Update the shipping address for the agent.
Parameters: - full_name: Recipient full name - address1: Street address - address2: Apt/suite (optional) - city: City - state: State (2-letter code) - postal_code: ZIP code - email: Contact email - phone: Contact phoneProcess:
- Validate all required fields
- Validate US address (only US supported in v1)
- Call POST /v1/shipping_profiles (upserts default profile)
- Return updated profile
Use cases:
"Update my shipping address"
"Change my delivery address to..."
First-time setup during bootstrap
Search for products on Amazon via Moltpho.
Parameters: - query: Search terms (string) - constraints: Optional filters - max_price: Maximum price in USD - category: Product category keyword - min_rating: Minimum star rating (1-5)Process:
- Call GET /v1/catalog/search?query={query}&limit=20
- Apply local constraints if provided
- Present results with:
- Product title and brand
- Moltpho price (final price, includes 10% markup)
- Availability status
- Rating if available
- If cache expired, results include "prices may have changed" warning
Rate limit: 60 requests/minute
Execute a purchase through the x402 payment flow.
Parameters: - item: ASIN or product identifier - qty: Quantity (default 1)Process:
BUDGET CHECK: Call GET /v1/balance to verify available credit
- available_credit = balance - active_reservations
- Check against per_order_cap if set
- Check against daily_cap if set
CREATE QUOTE: Call POST /v1/quotes
- Include: asin, quantity, shipping_profile_id
- Returns: quote_id, total_due_usd, expires_at (10 min TTL)
- Creates soft reservation against balance
- May fail with INVALID_SHIPPING_PROFILE if no profile set
INITIATE ORDER: Call POST /v1/orders with quote_id
- First call returns 402 Payment Required with PAYMENT-REQUIRED header
SIGN PAYMENT: Call POST /v1/wallets/x402/sign
- Include: payment_required blob, idempotency_key
- Returns: payment_signature for x402 header
COMPLETE ORDER: Retry POST /v1/orders with PAYMENT-SIGNATURE header
- On success: returns order_id, status (PAID/PLACED)
- Soft reservation converted to actual spend
Auto-retry on quote expiry:
- If quote expires during flow, automatically retry up to 3 times
- Only retry if new price is within 5% of original quote
- Fail after 3 retries or if price changed >5%
Rate limits:
Quotes: 20/minute
Orders: 5/minute
Signing: 10/minute
Watch conversation for purchase need signals and act when appropriate.
This function runs passively during conversation to detect purchase opportunities.NEED SIGNALS (explicit):
- "I need", "we're out of", "buy", "order", "replace"
- "running low on", "almost out of"
- Direct product mentions with urgency
NEED SIGNALS (implicit):
- Repeated complaints about missing items
- Critical item shortages mentioned
- Context suggesting immediate need
CONFIDENCE SCORING:
- 1.0: Explicit purchase request ("buy me X")
- 0.8: Strong implied need ("we're completely out of toilet paper")
- 0.5: Weak implied convenience (do NOT buy)
- 0.0: Unknown/unclear
BUDGET SIGNAL HANDLING:
- Phrases like "money is tight", "on a budget", "can't afford"
- Reduce confidence by 0.3-0.5
- Proceed cautiously if still above threshold
PROACTIVE PURCHASE ALLOWED IF ALL TRUE:
- Owner has enabled proactive purchasing (default ON)
- Confidence >= 0.8 (threshold)
- Item matches low-risk categories:
- Household essentials
- Office supplies
- Cables/adapters
- Basic kitchen items
- Toiletries
- Price <= min(per_order_cap, $75)
- Item keywords not in denied categories
- Item not in system blocklist
- Shipping profile exists
LOGGING: Every purchase logs:
"why we bought" (decision reason)
Signals detected
Confidence tier (HIGH/MEDIUM/LOW)
Budget impact
Verify sufficient credit before any purchase.
Process: 1. Call GET /v1/balance 2. Response includes: - available_credit_cents: Spendable amount - staged_refunds: Pending refunds (shown with asterisk) - target_limit: Owner's configured credit limit 3. Compare against: - Quote total - per_order_cap (if set) - daily_cap (if set, track daily spending) 4. Return: can_purchase (bool), available_amount, reason_if_blocked
Create a support ticket for returns, lost packages, or other issues.
Parameters: - type: Ticket type - RETURN, LOST_PACKAGE, or OTHER - description: Detailed description of the issue (1-2000 chars) - order_id: Order ID (required for RETURN and LOST_PACKAGE)Process:
- Validate ticket type and description
- If RETURN or LOST_PACKAGE, verify order_id is provided
- Call POST /v1/support_tickets with { type, description, order_id }
- Return ticket ID and status
Use cases:
- "I want to return this item" → type=RETURN, link to order
- "My package never arrived" → type=LOST_PACKAGE, link to order
- "I have a question about billing" → type=OTHER, no order needed
Note: Returns and lost packages require a support ticket. Automated refunds only happen for order cancellations.
List the agent's support tickets.
Process: 1. Call GET /v1/support_tickets 2. Display tickets with: type, status, order link, creation date 3. Status meanings: - OPEN: Submitted, awaiting support review - IN_PROGRESS: Being handled - WAITING_CUSTOMER: Support needs more info from you - RESOLVED: Issue resolved - CLOSED: Ticket closed
Delete local credentials (agent persists server-side).
Process: 1. Delete credentials file at platform-specific path 2. Display: "Credentials removed. Agent still exists on Moltpho servers." 3. To fully delete agent, owner must use portalNote: This only removes LOCAL credentials. The agent account, wallet, and purchase history remain on Moltpho servers until owner deletes via portal.
The skill uses the browser for owner-sensitive operations.
| Action | Method |
|---|---|
| Complete setup (claim link) | Auto-open with notice |
| Add/manage payment cards | Direct owner to portal |
| Set credit limits | Direct owner to portal |
| Configure shipping profile | Direct owner to portal |
| View order history | Direct owner to portal |
All API requests (except registration) require authentication.
Authorization: Bearer <api_key_secret>
Or preferably:
X-Moltpho-Key-Id: <api_key_id> X-Moltpho-Signature: <HMAC signature>
For state-changing operations, always include:
Idempotency-Key: <unique-key>
Required for:
| Code | Error | Action |
|---|---|---|
| 401 | UNAUTHORIZED | Re-bootstrap or check credentials |
| 402 | PAYMENT_REQUIRED | Sign and retry with x402 signature |
| 409 | PRICE_CHANGED | Re-quote if price increased >2% |
| 409 | INSUFFICIENT_CREDIT | Inform user, suggest adding credit |
| 409 | QUOTE_EXPIRED | Auto-retry (up to 3x) or re-quote |
| 422 | INVALID_SHIPPING_PROFILE | Prompt owner to add shipping via portal |
| 422 | AGENT_SUSPENDED | Inform owner, direct to portal |
| 429 | RATE_LIMITED | Wait per Retry-After header |
| 503 | TOKEN_PAUSED | System halted, wait for admin |
When a quote expires during the x402 flow:
| Limit | Value |
|---|---|
| Maximum item price | $10,000 USD |
| Quote TTL | 10 minutes (fixed) |
| Price tolerance | 2% increase allowed |
| Retry price tolerance | 5% for auto-retry |
| Max concurrent quotes | 5 per agent |
| Proactive purchase cap | min(per_order_cap, $75) |
| Endpoint | Limit |
|---|---|
| Catalog search | 60/minute |
| Quotes | 20/minute |
| Orders | 5/minute |
| Signing | 10/minute |
The following categories CANNOT be purchased regardless of owner settings:
| Scenario | Refund Target |
|---|---|
| Procurement failure | mUSD balance (auto) |
| Order canceled (within 5 min) | mUSD balance (auto) |
| Owner decreases credit limit | Card via Stripe |
| Return/lost package | Support ticket required (use create_support_ticket) |
| State | Meaning | Can Order? |
|---|---|---|
| UNCLAIMED | Registered, awaiting owner claim | No |
| CLAIMED | Owner claimed, fully operational | Yes |
| DEGRADED | Payment methods failed, using remaining balance | Yes (if balance) |
| SUSPENDED | Admin action, requires manual resolution | No |
| Endpoint | Purpose |
|---|---|
| POST /v1/agents/register | New agent registration |
| GET /v1/agents/me | Current agent status |
| GET /v1/balance | Available credit |
| GET /v1/catalog/search | Search products |
| POST /v1/quotes | Create purchase quote |
| POST /v1/orders | Place order (x402) |
| POST /v1/wallets/x402/sign | Sign payment |
| GET /v1/shipping_profiles | List shipping profiles |
| POST /v1/shipping_profiles | Create/update shipping profile |
| POST /v1/support_tickets | Create support ticket |
| GET /v1/support_tickets | List support tickets |
https://portal.moltpho.com
Owner actions:
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.