{"serverId":"mcp-registry/com.jpyc-service/ec-storefront","tools":[{"name":"authorize_transfer","fixed":{"name":"authorize_transfer","description":"erc20-transfer 方式だけで、JPYC を送金する前に必ず呼ぶ。quote_checkout の選択した accept にある extra.payerAuthorization.message をウォレットで personal_sign し、その署名と reservation_id を渡す。サーバは EOA / ERC-1271 / ERC-6492 を検証して予約へ固定する。このツール自体は送金も approve も行わない。成功を確認してから accepted.amount ぴったりを transfer すること。eip3009 方式では呼ばない。","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["reservation_id","signature"],"properties":{"signature":{"type":"string","pattern":"^0x(?:[0-9a-fA-F]{2})+$","maxLength":65538,"minLength":4,"description":"payerAuthorization.message の personal_sign 署名"},"reservation_id":{"type":"string","pattern":"^res_[0-9a-f]{32}$","description":"quote_checkout が返した reservation_id"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"AAウォレット送金の事前承認"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":217,"tokensAfter":217},{"name":"get_order_status","fixed":{"name":"get_order_status","description":"ウォレットアドレスの注文履歴を新しい順で返す。x402 で購入した注文は即時に order_status=3（決済完了）となり tx_hash を持つ。","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["customer_address"],"properties":{"customer_address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"顧客のウォレットアドレス（0x...）"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"注文状況の確認"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":107,"tokensAfter":107},{"name":"get_product","fixed":{"name":"get_product","description":"1 つの商品の詳細を product_id で取得する。価格（JPYC 建て）・在庫・SKU・バリエーション・配送要否・対応チェーンを返す。購入の前に必ず呼んで、requires_shipping（配送先が必要か）と has_variants（オプション選択が必要か）を確認すること。","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["product_id"],"properties":{"product_id":{"type":"string","minLength":1,"description":"商品 ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"商品詳細"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":112,"tokensAfter":112},{"name":"get_shop","fixed":{"name":"get_shop","description":"1 つのショップ（生産者・職人）の詳細を slug で取得する。ショップのストーリーや説明、対応ブロックチェーン、x402 決済が有効かどうかを返す。","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["shop_slug"],"properties":{"shop_slug":{"type":"string","minLength":1,"description":"ショップの slug（URL 識別子）"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"ショップ詳細"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":96,"tokensAfter":96},{"name":"list_products_in_shop","fixed":{"name":"list_products_in_shop","description":"1 つのショップの公開中の商品をすべて返す。価格（JPYC 建て）・在庫・バリエーション・配送要否・対応チェーンを含む。list_shops でショップを見つけたあと、その品揃えを見るのに使う。","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["shop_slug"],"properties":{"shop_slug":{"type":"string","minLength":1,"description":"ショップの slug"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"ショップの商品一覧"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":103,"tokensAfter":103},{"name":"list_shops","fixed":{"name":"list_shops","description":"JPYC EC Platform に出店している公開ショップの一覧を返す。減農薬の農産物・地酒・伝統工芸品など、生産者から直接買えるショップが中心。各ショップの name / slug / 説明 / 対応チェーン / 商品点数を含む。商品を探す起点として最初に呼ぶとよい。","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"ショップ一覧"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":77,"tokensAfter":77},{"name":"quote_checkout","fixed":{"name":"quote_checkout","description":"カートの内容で x402 チェックアウトの 1 回目を実行する。在庫を仮押さえし（有効期限は返り値 expires_at_unix_ms）、小計・割引・送料・合計（JPYC）と reservation_id、および PAYMENT-REQUIRED チャレンジ（base64url、x402 accepts 配列）を返す。accepts の決済方式: 『eip3009』(既定。通常購入の EOA ウォレットはこちらを選び、EIP-712 TransferWithAuthorization に署名する) と『erc20-transfer』(ecrecover 非対応のスマートコントラクトウォレット専用。payer_address を渡した予約にだけ提示される。extra.payerAuthorization.message を personal_sign して authorize_transfer を呼び、その成功後に表示額ぴったりの通常 ERC-20 transfer を実行し、txHash 任意/payerAddress 必須で submit_payment に渡す)。0円デモは de","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["shop_id","items","customer_email"],"properties":{"items":{"type":"array","items":{"type":"object","required":["product_id","quantity"],"properties":{"quantity":{"type":"integer","minimum":1},"product_id":{"type":"string","format":"uuid"},"variant_selections":{"type":"object","additionalProperties":{"type":"string"}}},"additionalProperties":false},"minItems":1,"description":"購入する商品"},"is_gift":{"type":"boolean","description":"贈答かどうか"},"shop_id":{"type":"string","format":"uuid","description":"ショップ ID（全 item 共通）"},"shipping":{"type":"object","required":["name","zip","prefecture","address1","tel"],"properties":{"tel":{"type":"string","minLength":1},"zip":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"address1":{"type":"string","minLength":1},"address2":{"type":"string"},"prefecture":{"type":"string","minLength":1}},"description":"配送先（配送が必要な商品がある場合は必須）","additionalProperties":false},"coupon_code":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]*$","maxLength":64,"minLength":1,"description":"ショップから受け取ったクーポンコード（任意。NFT割引との併用不可）"},"customer_note":{"type":"string","maxLength":2000,"description":"注文メモ"},"payer_address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"支払いに使うウォレットアドレス（任意・推奨）。指定すると settle 時に支払いに使うウォレットと照合され、別ウォレットからの支払いは拒否される。スマートコントラクトウォレットで erc20-transfer 方式を使う場合は必須（指定が無いと accepts に erc20-transfer が提示されない）"},"customer_email":{"type":"string","format":"email","description":"注文確認メールの送信先（必須）"},"gift_recipient":{"type":"object","required":["name","tel","zip","prefecture","address1"],"properties":{"tel":{"type":"string","minLength":1},"zip":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"address1":{"type":"string","minLength":1},"address2":{"type":"string"},"prefecture":{"type":"string","minLength":1}},"description":"贈り先（is_gift が true なら必須）","additionalProperties":false},"idempotency_key":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","maxLength":64,"minLength":16,"description":"同じ見積もりの再試行で必ず再利用する一意キー。クーポン利用時は必須（UUID推奨）。異なる購入内容に同じキーを使わないこと"},"preferred_chain_id":{"type":"integer","description":"希望チェーン（任意。商品の対応チェーンから選ばれる）","exclusiveMinimum":0},"demo_signature_version":{"type":"string","const":"1","description":"0円デモのpersonal_signに対応する場合のみ指定"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"チェックアウト見積もり（x402 1回目）"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":811,"tokensAfter":811},{"name":"search_products","fixed":{"name":"search_products","description":"JPYC EC Platform 上の公開商品を横断検索する。減農薬米・地酒・伝統工芸品など、生産者から直接 JPYC で購入できる商品が対象。text は自然言語のキーワード（例: 『丹波 米』）で、商品名と説明に部分一致する。category / tag（産地・認証種別など）、価格帯（min_price / max_price、JPYC）、shop_slug で絞り込める。売上順で最大 50 件返す。","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"tag":{"type":"string","description":"商品タグ（産地・認証種別など）の完全一致"},"text":{"type":"string","description":"自然言語のキーワード（商品名・説明に部分一致）"},"limit":{"type":"integer","maximum":50,"minimum":1,"description":"最大件数（1-50、既定 20）"},"category":{"type":"string","description":"商品カテゴリーの完全一致"},"max_price":{"type":"number","minimum":0,"description":"最高価格（JPYC）"},"min_price":{"type":"number","minimum":0,"description":"最低価格（JPYC）"},"shop_slug":{"type":"string","description":"特定ショップに絞り込む"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"商品検索"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":234,"tokensAfter":234},{"name":"submit_payment","fixed":{"name":"submit_payment","description":"quote_checkout で得た reservation_id と、エージェントが用意した x402 PaymentPayload（base64url）を渡して決済を確定する。demo-signatureならextra.payerAuthorization.messageをpersonal_signし、{payerAddress,demoSignature}を渡す。送金やauthorize_transferは呼ばない。quote_checkout の accepts から選んだ方式に応じて payload の中身が変わる: 『eip3009』なら { signature, authorization } (EIP-712 TransferWithAuthorization の署名)、『erc20-transfer』なら { payerAddress, txHash? } (ウォレットが実行した通常の ERC-20 transferの送金元アドレス。txHash は分かれば渡す任意ヒント — 無くてもサーバがon-chain のログを検索して照合する)。erc20-transfer ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["reservation_id","payment_signature"],"properties":{"reservation_id":{"type":"string","minLength":1,"description":"quote_checkout が返した reservation_id"},"payment_signature":{"type":"string","minLength":1,"description":"署名済み x402 PaymentPayload（base64url JSON）"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"決済の確定（x402 2回目）"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":259,"tokensAfter":259}],"toolsChanged":9,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}