hiarthur

Search Amazon products and analyze materials, design, and reviews to uncover trade-offs and likely disappointments. See results in an interactive GUI.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "hiarthur" with this command: npx skills add arthgrab/hiarthur

HiArthur Product Search and Understanding

Overview

Two-endpoint API for intelligent product search and deep product analysis. Products are sourced from Amazon, but results go far beyond what Amazon returns directly — every product is analyzed through a multi-stage pipeline combining computer vision, LLMs, and symbolic reasoning to evaluate how well each product actually matches what the user is looking for and where it's likely to disappoint.

  • POST https://hiarthur.com/api/agents/search — find products matching a query. Each result is graded for fit against the user's requirements using vision + language models, not just keyword matching.
  • POST https://hiarthur.com/api/agents/product — deep-dive one product for failure-mode analysis (FMEA), feature summary, and review synthesis. Uses LLM reasoning over product details and images to surface likely disappointments.

Base URL: https://hiarthur.com/api

Results can optionally be handed off to a GUI (e.g. https://hiarthur.com/c/<conversation_id> or https://hiarthur.com/product/f7e2a9c1b3d4) where users can browse results visually and continue the conversation interactively.


When to Use This Skill

Use this skill when you need to:

  • Find products that match detailed user requirements
  • Evaluate trade-offs between competing products
  • Identify likely durability or design problems
  • Understand why a product might disappoint buyers
  • Compare products beyond simple ratings or keywords

Quick-Start: End-to-End Flow

Step 1 — Start a new search

POST /api/agents/search

{
  "type": "new",
  "search_query": "noise cancelling headphones for travel",
  "search_top_brands": true
}

Response:

{
  "conversation_id": "a1b2c3d4-...",
  "logical_search_id": "ls_abc123",
  "products": [
    {
      "product": {
        "description": "Sony WH-1000XM5 Wireless Noise Canceling Headphones",
        "brand": "Sony",
        "location": "product/f7e2a9c1b3d4",
        "price": 328.0,
        "rating": 4.6,
        "reviews_count": 12450
      },
      "explainer": "Strong noise canceling with long battery life, well suited for travel.",
      "match_grade": "Excellent"
    }
  ],
  "can_fetch_more": true
}

Step 2 — Fetch more results (pagination)

Reuse conversation_id and logical_search_id exactly as returned.

POST /api/agents/search

{
  "type": "continue",
  "conversation_id": "a1b2c3d4-...",
  "logical_search_id": "ls_abc123"
}

Repeat while can_fetch_more is true. A continue response with products: [] is valid (more may come on the next continue). Stop when can_fetch_more is false.

Step 3 — Deep-dive a product

Use a product.location value exactly as returned by search.

POST /api/agents/product

{
  "location": "product/f7e2a9c1b3d4"
}

Response:

{
  "fmea": {
    "unmitigated_failure_modes": [
      {
        "failure_name": "Headband cushion flattens over time",
        "likelihood": {
          "level": "medium",
          "reasoning": "Foam compression builds with daily wear, so most regular users will notice reduced comfort within months."
        },
        "impact": "annoying",
        "timeline": "within_a_year",
        "summary": "The headband padding can compress with regular use, making the headphones less comfortable for long listening sessions.",
        "evidence": [
          "Foam headband cushion visible in images",
          "No mention of memory foam or replaceable pads"
        ]
      }
    ],
    "mitigated_failure_modes": [
      {
        "failure_name": "Poor noise canceling on wind",
        "ownership_experience": "Multipoint wind-noise reduction",
        "reasoning": "Multiple microphones and adaptive ANC algorithms reduce wind interference compared to single-mic designs.",
        "evidence": [
          "Adaptive ANC with multiple external microphones",
          "Wind noise reduction mode listed in features"
        ]
      }
    ],
    "quality_summary": "These headphones prioritize audio quality and noise canceling performance. Most disappointment comes from comfort degradation over time rather than core functionality."
  },
  "features_summary": "Paragraph summarizing key product features based on listing data.",
  "reviews_summary": "Paragraph synthesizing themes and patterns from customer reviews."
}

Search Endpoint — Full Field Reference

New Search (type: "new")

Full example with all optional fields:

{
  "type": "new",
  "search_query": "noise cancelling headphones for travel",
  "search_top_brands": true,
  "trim_query": "Over-ear wireless headphones with active noise canceling and long battery life for airplane use",
  "brands": ["Sony", "Bose"],
  "search_filters": {
    "price_min": 100,
    "price_max": 400,
    "rating_min": 4.0,
    "reviews_min": 500
  },
  "search_sort": "relevance"
}
FieldTypeRequiredDefaultDescription
type"new"yesDiscriminator.
search_querystringyesBroad retrieval query sent to the product catalog. Should be precise, user-intent-aligned, and include all key attributes (color, size, material, use case, gender).
search_top_brandsbooleanyesWhen true, restricts results to recognized top brands in the category. Default to true for electronics, appliances, clothing, tools, beauty, home/kitchen. Default to false for books, media.
trim_querystringnosame as search_querySimilarity-trimming query. After retrieval, products with low similarity to this string are removed. Should be a fluent, attribute-rich, natural-language description optimized for matching product titles and images. More descriptive than search_query. See examples below.
conversation_idUUID stringnoserver-generatedOmit to let the server create a new conversation. Supply to attach this search to an existing conversation.
brandsstring[]no[]Explicit brand-name constraints. Only populate when the user names specific brands. Use canonical names with proper capitalization (e.g., ["Nike", "Adidas"]).
search_filtersobjectnonullAll sub-fields optional and nullable: price_min (number), price_max (number), rating_min (number), reviews_min (integer). No extra keys allowed.
search_sortenum stringnonull"relevance", "price_low", "price_high", or "best_sellers".

search_query vs trim_query

search_query drives broad catalog retrieval. trim_query is applied after retrieval as a similarity filter — products with low similarity to it are removed.

trim_query should read like a grounded, attribute-rich product description:

  • "A men's sleeveless hooded vest made of shiny metallic fabric with a full zipper front."
  • "A 12-pack of chocolate-flavored protein shakes, each bottle containing 20 grams of protein."
  • "A thick purple yoga mat made of dense non-slip foam, measuring one inch in thickness."
  • "A 10-inch nonstick frying pan with a ceramic coating and induction-compatible base."
  • "Wireless Bluetooth 5.3 earbuds with noise-canceling features and at least 40 hours of battery life."

When omitted, trim_query defaults to search_query. Only set it when you have a more descriptive version.

Continue Search (type: "continue")

FieldTypeRequiredDescription
type"continue"yesDiscriminator.
conversation_idUUID stringyesExact value from the prior search response.
logical_search_idstringyesExact value from the prior search response.

Search Response

{
  "conversation_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "logical_search_id": "ls_abc123",
  "products": [
    {
      "product": {
        "description": "Sony WH-1000XM5 Wireless Noise Canceling Headphones",
        "brand": "Sony",
        "location": "product/f7e2a9c1b3d4",
        "price": 328.0,
        "rating": 4.6,
        "reviews_count": 12450
      },
      "explainer": "Strong noise canceling with long battery life, well suited for travel.",
      "match_grade": "Excellent"
    }
  ],
  "can_fetch_more": true
}
FieldTypeDescription
conversation_idstringStable conversation identifier. Reuse for continue requests and frontend handoff.
logical_search_idstringIdentifies this search session for pagination. Reuse for continue requests.
productsarrayProductWithExplainer objects. May be empty (valid on continue).
can_fetch_morebooleanThe only pagination signal. true = more results available via continue.

Each products[] entry:

FieldTypeDescription
product.descriptionstringProduct title/description.
product.brandstring or nullBrand name if known.
product.locationstringOpaque product identifier (format: product/<cache_key>). Preserve exactly for /agents/product calls and frontend handoff.
product.pricenumber or nullPrice in dollars.
product.ratingnumber or nullStar rating (e.g., 4.6).
product.reviews_countinteger or nullNumber of customer reviews.
explainerstringHuman-readable rationale for the fit grade. May be empty.
match_gradestringCanonical fit label. One of: "Excellent", "Good", "Partial", "Low".

Match Grade Semantics

GradeMeaning
ExcellentAll user requirements confirmed by evidence. All numeric constraints pass.
GoodAll critical requirements confirmed, none contraindicated. Constraints pass or pass within tolerance.
PartialAt least one critical requirement is unconfirmed, missing, or contraindicated, OR some numeric constraints fail.
LowAny requirement is contraindicated, OR no requirements could be evaluated.

Product Endpoint — Deep Analysis

Request

{ "location": "product/<cache_key>" }

Use only a location value returned by /api/agents/search. Never invent locations. Request model uses extra = "forbid".

Response

FieldTypeDescription
fmeaobjectFailure Mode and Effects Analysis. See structure below.
features_summarystringParagraph summarizing key product features.
reviews_summarystringParagraph synthesizing themes from customer reviews.

FMEA Structure

The fmea object describes how a product is likely to disappoint a buyer over time, framed as failure modes rather than feature ratings.

unmitigated_failure_modes — array, typically 3 entries, ordered by expected regret impact (likelihood x impact x immediacy):

FieldTypePossible Values
failure_namestringConcise description of what goes wrong.
likelihood.levelstring"low", "medium", "high"
likelihood.reasoningstringProduct-specific probability rationale with expected incidence.
impactstring"cosmetic", "annoying", "performance_loss", "unusable"
timelinestring"immediate", "within_a_year", "over_a_year"
summarystring1–2 sentences on real-use customer impact.
evidencestring[]Concrete cues from listing, specs, or images.

mitigated_failure_modes — array, 0–3 entries: common category failures that the product's design intentionally addresses.

FieldTypeDescription
failure_namestringThe common failure that is unlikely here.
ownership_experiencestringShort positive reframe (max ~6 words, e.g., "Long cord with easy rewind").
reasoningstringWhat design choices reduce this risk.
evidencestring[]Concrete cues from listing.

quality_summary — string: A calm, informed paragraph synthesizing dominant risks, design priorities, disappointment timeline, fixability, and who the product is likely to satisfy vs. frustrate.


Error Handling

StatusEndpointCauseSuggested Action
400/agents/productInvalid location format (empty, malformed, or contains path separators).Verify the location was copied verbatim from a search result.
404/agents/search (continue)logical_search_id not found or expired from cache.Start a new search with type: "new".
404/agents/productProduct cache key or destination not found. May have expired.Re-run search to get a fresh location.
422BothSchema validation failure: missing required field, wrong type, or extra key present.Fix request body. All request models use extra = "forbid".
500BothUnhandled internal error.Retry once with backoff. If persistent, report as a service issue.
502/agents/searchSearch backend did not return a final result, or returned an invalid payload.Retry once. If persistent, the upstream search service may be degraded.

Safety Rules

  1. Send JSON request bodies only.
  2. Never include extra fields — all request models use extra = "forbid" and will reject unknown keys with 422.
  3. Never invent product locations. Only use location values returned by /api/agents/search.
  4. Preserve conversation_id, logical_search_id, and product.location exactly as returned. Do not trim, modify, or regenerate.
  5. For type: "new", omit conversation_id to let the server generate one.
  6. All endpoints use the base URL https://hiarthur.com/api.

Frontend Handoff

  • Open c/<conversation_id> in a browser to resume that conversation within a GUI.
  • Open a returned product location in a browser to open the product information and see product images in a GUI.
  • Keep all backend-derived IDs and locations unchanged during handoff URL construction.

Recommended Agent Usage Pattern

  1. Call /agents/search with type: "new".
  2. Inspect the returned products.
  3. If more candidates are needed, call /agents/search with type: "continue".
  4. When a specific product requires deeper analysis, call /agents/product.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Ai Competitor Analyzer

提供AI驱动的竞争对手分析,支持批量自动处理,提升企业和专业团队分析效率与专业度。

Registry SourceRecently Updated
General

Ai Data Visualization

提供自动化AI分析与多格式批量处理,显著提升数据可视化效率,节省成本,适用企业和个人用户。

Registry SourceRecently Updated
General

Ai Cost Optimizer

提供基于预算和任务需求的AI模型成本优化方案,计算节省并指导OpenClaw配置与模型切换策略。

Registry SourceRecently Updated