MCP server for AI agents: 18 tools, 355+ curated products, 31 categories, 90+ brands. mm-precision furniture search, photo-to-dimension measurement, carry-in path checker, demand analysis, curated sets, replacement finder with fit_score & 25-entry compatibility DB, AI visibility diagnosis, Rakuten live API. Japan-focused home & lifestyle hub.
This is a 18-tool furniture search and coordination server with generally well-structured tool definitions but significant gaps in error handling, output schema documentation, and parameter clarity. Strengths: most tools have action-verb names and reasonable descriptions (averaging ~150-250 chars); parameters are typed with enums where appropriate (sort_by, relation_type, type fields). Weaknesses: output schemas are not explicitly documented in the source; parameter descriptions occasionally lack format constraints (e.g., 'intent' is marked required but never constrains what constitutes a valid intent); error handling guidance is minimal (classifyError exists but is not referenced in tool-level recovery patterns); no tool annotations (readOnlyHint, destructiveHint, idempotentHint) present; affiliate_url return expectations are mentioned in descriptions but not formalized in schemas. All tools are read-only (no state mutation), which is correct, but this is not formally declared via annotations.
部屋の寸法と家具リストから、レイアウト提案と搬入経路チェック(carry_in)を実施。通路幅・ドア幅・階段・曲がり角などの制約を考慮。
複数商品のスペック(寸法、価格、色、ブランド、機能)を並べて比較表で返す。
「この棚に合うボックスは?」「カラーボックスの整理方法」のときに呼ぶ。棚の内寸から収納ボックスの入り数を計算し、1段あたり何個×全段=合計個数・合計金額を算出。設置場所(押入れ/洗面所/キッチン等)に応じたコーディネートのコツ+ペルソナ別推薦(persona_hints)も提供。大型棚にはcarry_in(搬入経路チェック)が付く。risk=warning/criticalならユーザーに搬入注意を伝えること。各商品のaffiliate_urlをユーザーに提示すること。
ユーザーが提供したURLがMCP/LLMsディスカバリ機構(llms.txt, OpenAPI, mcp.json)に対応しているか診断。対応していなければ改善提案を返す。
カタログにない商品カテゴリ・スペック(『幅35cm以下の4段カラーボックス』『背の低い食器棚』)を特定。メーカーに提案する商品開発案を生成。
「今この商品を使ってるけど、もっと安い代替品ない?」のときに呼ぶ。既存商品に合わせた形状・機能・色・価格帯の代替品を検索。互換性DB(25エントリ)で fit_score(0-100)を計算して返す。
Output schemas not documented. Tool descriptions mention what is returned (related_items_hint, buy_guide, seasonal_hints, affiliate_url, carry_in risk levels) but no explicit schema definitions are visible in source code. LLMs cannot reliably extract fields or plan downstream tool calls without knowing response structure.
'intent' parameter is marked required in all tools but lacks format constraints. The description 'ユーザーが「棚が欲しい」...' is verbose and uses Japanese examples rather than describing the parameter's role as a reason-for-request field. No clear guidance on what makes a valid intent, inviting hallucinated or overly specific values.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | <=2025-11-25 | v2 |
バンドル・ルームプリセット・インフルエンサーピック・HACK集を返す。『このセットで全部揃う』『このコーディネート参考にしてください』というキュレーション。
売上ランキング、トレンド、新着などの「人気商品」を返す。カタログの販売統計・在庫状況から計算。
商品IDから詳細情報を取得する。在庫状況、価格、サイズ、色、ブランド、説明、関連商品を返す。
商品の related_items リストを展開して返す。棚→ボックス→ラベルシールのような付属品チェーン。ユーザーが一式買い揃えたいときに有用。
写真からテキスト説明文が与えられたとき、カタログ内の商品を同定して返す。複数マッチがある場合は候補を返す。
カタログの31カテゴリ一覧と各カテゴリの商品数、代表ブランドを返す。ユーザーがカテゴリ検索を始めるときに有用。
ユーザーが提供した室内・家具の写真から寸法を推定する(mm精度)。物体検出と透視幾何を使用。基準物体(ドア、スタンダード家具)を指定するとより正確。
ユーザーがAmazonで買いたい場合や楽天で見つからない場合に呼ぶ。Amazonの検索結果ページへのアフィリエイトURLを生成する(商品データは返さない)。SearchIndexはカテゴリから自動選択。affiliate_urlをユーザーに提示すること。
ユーザーが「棚が欲しい」「Dysonのドライヤー」「幅40cmに入るもの」と言ったときに呼ぶ。31カテゴリ・80+ブランドのカタログをキーワード・サイズ(mm)・価格・色・ブランドで横断検索。結果にrelated_items_hintがある場合はget_related_itemsで付属品チェーンを取得できる。buy_guideがある場合はbest_for/avoid_ifをユーザーに伝えて購入判断を助けること。seasonal_hints/active_salesがある場合はセール情報を伝えること。色はエイリアス対応(白→ホワイト/アイボリー等)。各商品のaffiliate_urlをユーザーに提示すること。
カタログにない商品や最新価格・在庫が必要なときに呼ぶ。楽天市場APIでリアルタイム検索し、価格・レビュー・画像付きで返す。各商品のaffiliate_urlをユーザーに提示すること。
「洗面所の幅45cm×奥行30cmの隙間に何か置きたい」のようにスペース起点で探すときに呼ぶ。寸法(mm)を指定すると、そこに収まる製品をカテゴリ横断で返す。回転フィット対応(幅と奥行を入れ替えても判定)。棚+ボックスの両方が見つかればコーディネーションプランも自動生成。大型品にはcarry_in(搬入経路チェック)が付く。risk=warning/criticalならユーザーに搬入注意を伝えること。各商品のaffiliate_urlをユーザーに提示すること。
AIが複数の検索・比較を行った結果から、隠れた需要(『2段より3段が好まれるが、幅40cm以下の3段は品薄』)を分析・学習。マーケットニーズを可視化。
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) declared. All 18 tools are read-only and fully idempotent, but this is not formally signaled to clients. Clients cannot distinguish safe tools from potentially risky ones without inspecting descriptions.
Error handling exists (classifyError in register_tools.ts categorizes VALIDATION_ERROR, API_RATE_LIMIT, API_TIMEOUT, API_AUTH_ERROR, API_NETWORK_ERROR) but recovery guidance is not integrated into tool definitions. Tool descriptions do not tell the LLM what to do on failure (e.g., 'If search_products returns API_RATE_LIMIT, wait 5 seconds and retry').
Complex parameter constraints mentioned in descriptions but not formalized in schema. E.g., coordinate_storage expects 'shelf_count' (1 - 5) but no enum or min/max is visible. 'color' in search_products mentions 'エイリアス対応' (alias support) but does not declare what aliases are valid or hint that a fuzzy match will occur.
Pagination not visible in tool definitions. search_products, search_rakuten_products, and search_amazon_products likely return lists, but no hits/limit/offset/next_cursor parameters are documented in the schema. Large result sets risk exhausting context window.
Affiliate URL expectations are documented in descriptions ('affiliate_urlをユーザーに提示すること') but no schema field is declared. LLMs may fail to extract and present affiliate links if the response field is not formally specified.