mu

Official AI-native print-on-demand MCP — say it, AI designs it, sell 40+ goods, earn royalties.

사용해야 할까요

품질 및 안전성

A
설명 품질
98%
스키마 완전성
79%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (2)

  • LOWTool 'mu_submit_feedback' description lacks action verbmu_submit_feedback에서
  • LOWTool 'mu_gi_techpack' description lacks action verbmu_gi_techpack에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~7,891토큰 (도구 정의)
~1.7 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 6.16%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "mu": {
      "url": "https://mcp.wearmu.com/mcp"
    }
  }
}

원격 엔드포인트

https://mcp.wearmu.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (31)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
⚪mu_register(email, agent_name)

Start MU agent registration. Emails a 6-digit verification code to the address. After receiving the code, call mu_verify with {email, code} to obtain your api_key. No authentication required for this call.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "description": "Email address to register; the 6-digit code is sent here."
    },
    "agent_name": {
      "type": "string",
      "description": "Optional human-readable agent name."
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪mu_verify(email, code)

Verify the 6-digit code emailed by mu_register and receive your permanent api_key. Use that key as `Authorization: Bearer <api_key>` on all subsequent MU tool calls. No authentication required for this call.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "description": "The email used in mu_register."
    },
    "code": {
      "type": "string",
      "description": "The 6-digit code from the verification email."
    }
  },
  "required": [
    "email",
    "code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢mu_status

Get the authenticated agent's profile: email, mu_credits_balance, MA-council flag, their stores, and limits (allowed product kinds with price floors + per-hour caps). Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_quote(kind, description, qty, region, budget)

Ask the MU manufacturing router how a thing could be MADE before you create a product: which supplier(s) can make it, the est. unit price (JPY), MOQ, lead time, fulfillment route, and whether it ships auto (POD, zero-inventory, order now) or needs a quote (RFQ to a factory). Pass `kind` (a known POD kind like tee/hoodie/rashguard_ls, OR a non-POD kind like `gi`/`loopwheel_sweat`/`seamless_knit`/`rashguard_premium`) OR a free-text `description` (e.g. "道着 for a dojo", "a seamless knit sweater") and the router infers the kind. Optional `qty`, `region` (e.g. jp/us), `budget` (JPY/unit). Read-only — creates nothing. No API key required. Options are ranked: buyable-now (auto + in budget) first. If an option's mode is `auto`, follow up with mu_create_product; if `quote`, it needs a human RFQ.

입력 스키마

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "description": "Product kind. POD kinds: tee, tee_white, rashguard_ls, rashguard_black, hoodie, crewneck, sticker, mug, tote, tank, cap, phone_case, long_sleeve_tee, shorts, beanie, leggings, joggers, apron, canvas, metal_print, pillow, blanket, coaster, placemat, journal, mug_black, wine_glass, towel, bottle, mouse_pad, laptop_sleeve, poster, nfc_coin, device, event_ticket, song, zine, video, karaoke_ticket, house, socks, drawstring_bag, beach_towel, fanny_pack, bucket_hat, kids_tee, backpack, flag, printful_custom. Non-POD also accepted: gi, gi_embroidery, loopwheel_sweat, cut_and_sew, seamless_knit, wholegarment, rashguard_premium, aop_edge_to_edge. Omit to infer from description."
    },
    "description": {
      "type": "string",
      "description": "Free-text description of what to make (used to infer kind when `kind` is omitted)."
    },
    "qty": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Quantity (default 1). Used to check each supplier's MOQ."
    },
    "region": {
      "type": "string",
      "description": "Ship-to / make region, e.g. \"jp\" or \"us\". Prefers region-matching suppliers."
    },
    "budget": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Target budget per unit in JPY. Flags options as within_budget / not."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_check(kind, region, supplier_id, spec, material, ...)

Ask the MU requirements engine whether a planned make satisfies its requirements: product spec floor (required attributes per kind), legal/compliance flags (e.g. JP 家庭用品品質表示法 / 技適 / 食品衛生法), and supplier order terms (MOQ, accepted input format, material constraints). Pass `kind` (required) + optional `region` (e.g. jp), `supplier_id`, and either `spec` (a JSON string) or individual attributes (material/dimensions/colors/print_method/placement/qty/size_range/embroidery_spec). Returns { ok, kind, report: { ok, gaps[], actions[] } }. Read-only, no API key. Use before mu_create_product or mu_rfq_create.

입력 스키마

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "description": "Product kind (e.g. gi / tote / rashguard_ls)."
    },
    "region": {
      "type": "string",
      "description": "Region, e.g. jp/us. Triggers region-specific legal requirements."
    },
    "supplier_id": {
      "type": "string",
      "description": "Supplier id (e.g. isami_gi) to also check its order terms."
    },
    "spec": {
      "type": "string",
      "description": "Spec as a JSON string, e.g. {\"material\":\"8oz canvas\",\"dimensions\":\"A4\"}."
    },
    "material": {
      "type": "string"
    },
    "dimensions": {
      "type": "string"
    },
    "colors": {
      "type": "string"
    },
    "print_method": {
      "type": "string"
    },
    "placement": {
      "type": "string"
    },
    "size_range": {
      "type": "string"
    },
    "embroidery_spec": {
      "type": "string"
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪mu_spec_draft(prompt)

Turn a natural-language request into a structured manufacturing spec (kind, material, dimensions, colors, print_method, placement, qty, region). Missing required attributes come back as `missing` with a follow-up `next_question` to fill them in. Feed the resulting spec_id into mu_rfq_create. Requires an API key (register/verify first) — uses a small amount of AI budget per call.

입력 스키마

{
  "type": "object",
  "properties": {
    "prompt": {
      "type": "string",
      "description": "What to make, in free text. E.g. 「黒の帆布トート、ロゴ刺繍、A4が入る、200枚」."
    }
  },
  "required": [
    "prompt"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_rfq_create(supplier_id, kind, description, qty, spec_id, ...)

Open a quote request (RFQ) to a non-POD supplier (gi/loopwheel/seamless-knit/premium AOP). Generates a ready-to-send draft (subject/body) and saves it status='drafted'. Does NOT send — outbound mail/PO is a human gate. Pass `supplier_id` OR `kind`/`description` (the router resolves a quote-mode supplier), `qty`, and optionally `spec_id` (from mu_spec_draft), `product_ref`, `spec_pack_url`, `note`. RFQs are scoped to your account (admin sees all).

입력 스키마

{
  "type": "object",
  "properties": {
    "supplier_id": {
      "type": "string",
      "description": "Supplier id (e.g. isami_gi/heritage_loopwheel/shima_seamless/contrado_uk). Omit to resolve from kind/description."
    },
    "kind": {
      "type": "string",
      "description": "Product kind (e.g. gi/seamless_knit)."
    },
    "description": {
      "type": "string",
      "description": "Free text to infer kind when kind/supplier omitted."
    },
    "qty": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Quantity (default 1)."
    },
    "spec_id": {
      "type": "string",
      "description": "Spec id from mu_spec_draft to attach."
    },
    "product_ref": {
      "type": "string",
      "description": "Reference SKU or /make ref."
    },
    "spec_pack_url": {
      "type": "string",
      "description": "URL of a techpack/mockup pack for the supplier."
    },
    "note": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_rfq_record(id, status, quoted_unit_jpy, moq, lead_time_days, ...)

After a factory replies, record the quote against an RFQ: set `status` (sent/received/expired) and, for received, `quoted_unit_jpy` (required) plus `moq`, `lead_time_days`, `valid_until` (ISO date). A received, still-valid quote is reflected back into mu_quote's est_unit_jpy (display only). RFQs are scoped to your account (admin sees all).

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "RFQ id (from mu_rfq_create / mu_rfq_list)."
    },
    "status": {
      "type": "string",
      "enum": [
        "sent",
        "received",
        "expired"
      ],
      "description": "New status. 'received' requires quoted_unit_jpy."
    },
    "quoted_unit_jpy": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Quoted unit price in JPY (required when status=received)."
    },
    "moq": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "lead_time_days": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "valid_until": {
      "type": "string",
      "description": "Quote validity end date, ISO (YYYY-MM-DD)."
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢mu_rfq_list(supplier_id, kind, status)

List quote requests (RFQs) with optional filters by `supplier_id`, `kind`, `status` (drafted/sent/received/expired). RFQs are scoped to your account (admin sees all).

입력 스키마

{
  "type": "object",
  "properties": {
    "supplier_id": {
      "type": "string"
    },
    "kind": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "drafted",
        "sent",
        "received",
        "expired"
      ]
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_order_create(rfq_id, supplier_id, kind, qty, unit_jpy, ...)

Open a purchase order (受注) from a received RFQ (pass `rfq_id`) or directly with `supplier_id`+`kind`. If the supplier's MOQ is unmet, the order is lot-locked (lot_lock=true) until the lot (same supplier+kind) fills. Fills are public: any agent can contribute to a lot. If the deadline (30d) passes before fill, the order flips to refund_pending and is listed as an auto-refund candidate (human executes the refund). Status flow: ordered → production → shipped → completed, with refund_pending → refunded. Orders are scoped to your account (admin sees all).

입력 스키마

{
  "type": "object",
  "properties": {
    "rfq_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "RFQ id (must be status='received')."
    },
    "supplier_id": {
      "type": "string",
      "description": "Supplier id (if rfq_id omitted)."
    },
    "kind": {
      "type": "string",
      "description": "Product kind (if rfq_id omitted)."
    },
    "qty": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Quantity (default: from rfq, else 1)."
    },
    "unit_jpy": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Unit price (from rfq's quoted_unit_jpy if omitted)."
    },
    "note": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪mu_order_advance(id, status, note)

Move an order one step in the lifecycle: ordered→production→shipped→completed, or ordered→refund_pending (lot expiry / human judgment), refund_pending→refunded (human recorded refund). Backward/skipped transitions are rejected. Production is blocked while lot_lock=true until the lot fills.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Order id."
    },
    "status": {
      "type": "string",
      "enum": [
        "ordered",
        "production",
        "shipped",
        "completed",
        "refund_pending",
        "refunded"
      ],
      "description": "New status."
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢mu_order_status(supplier_id, status, refund)

List purchase orders with optional filters by `supplier_id`, `status`, and `refund=1` to show only auto-refund candidates (refund_pending). Orders are scoped to your account (admin sees all).

입력 스키마

{
  "type": "object",
  "properties": {
    "supplier_id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "ordered",
        "production",
        "shipped",
        "completed",
        "refund_pending",
        "refunded"
      ]
    },
    "refund": {
      "type": "boolean",
      "description": "If true, show only auto-refund candidates."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_create_store(slug, name, emoji, color_primary, tagline)

Open a new MU store (a branded storefront) under your agent account. Returns the store slug and public store_url. Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "URL slug for the store, e.g. \"my-dojo\" → wearmu.com/my-dojo."
    },
    "name": {
      "type": "string",
      "description": "Display name of the store."
    },
    "emoji": {
      "type": "string",
      "description": "Optional emoji used as the store mark."
    },
    "color_primary": {
      "type": "string",
      "description": "Optional primary brand color, hex e.g. \"#0a4d9c\"."
    },
    "tagline": {
      "type": "string",
      "description": "Optional short tagline shown on the storefront."
    }
  },
  "required": [
    "slug",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_create_product(store, label, description, kind, design_url, ...)

Create a product in one of your MU stores. Provide the artwork EITHER as `design_url` (an absolute https URL to ready-made art) OR as `ai_prompt` (a text brief — MU generates the artwork for you and deducts the AI-gen cost from your mu_credits balance; see mu_status → limits.ai_gen for cost_jpy and whether it is enabled). Pass exactly one of the two. `kind` must be one of: tee, tee_white, rashguard_ls, rashguard_black, hoodie, crewneck, sticker, mug, tote, tank, cap, phone_case, long_sleeve_tee, shorts, beanie, leggings, joggers, apron, canvas, metal_print, pillow, blanket, coaster, placemat, journal, mug_black, wine_glass, towel, bottle, mouse_pad, laptop_sleeve, poster, nfc_coin, device, event_ticket, song, zine, video, karaoke_ticket, house, socks, drawstring_bag, beach_towel, fanny_pack, bucket_hat, kids_tee, backpack, flag, printful_custom. `phone_case` is an iPhone tough case (Printful) — the buyer picks their iPhone model (11〜17, all sizes) inside checkout, so you create ONE product and it ships to whichever model they choose. . Two digital kinds need an extra field: `event_ticket` (a sellable event ticket — pass `capacity` for the seat limit; on purchase the buyer is emailed a QR that opens a VALID ticket page; no shipping) and `song` (a sellable track — pass `audio_url`, the https link to the audio; on purchase the buyer is emailed a private listen/download link; no shipping). Other digital kinds (`zine` PDF, `video`, `karaoke_ticket`) and manual-fulfilment kinds (`poster`, `tee_white`, `nfc_coin`, `device`, `house`) all take the same `design_url`/`ai_prompt` artwork; the buyer gets a download/redemption link (digital) or the operator ships/builds it (manual). Products go live immediately for trusted owners unless the risk gate trips, otherwise they wait for MA-council review — ALWAYS report the `status` field from the response, do not assume. Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "description": "Slug of the store to add the product to."
    },
    "label": {
      "type": "string",
      "description": "Product label / title."
    },
    "description": {
      "type": "string",
      "description": "Product description."
    },
    "kind": {
      "type": "string",
      "enum": [
        "tee",
        "tee_white",
        "rashguard_ls",
        "rashguard_black",
        "hoodie",
        "crewneck",
        "sticker",
        "mug",
        "tote",
        "tank",
        "cap",
        "phone_case",
        "long_sleeve_tee",
        "shorts",
        "beanie",
        "leggings",
        "joggers",
        "apron",
        "canvas",
        "metal_print",
        "pillow",
        "blanket",
        "coaster",
        "placemat",
        "journal",
        "mug_black",
        "wine_glass",
        "towel",
        "bottle",
        "mouse_pad",
        "laptop_sleeve",
        "poster",
        "nfc_coin",
        "device",
        "event_ticket",
        "song",
        "zine",
        "video",
        "karaoke_ticket",
        "house",
        "socks",
        "drawstring_bag",
        "beach_towel",
        "fanny_pack",
        "bucket_hat",
        "kids_tee",
        "backpack",
        "flag",
        "printful_custom"
      ],
      "description": "Product kind. One of: tee, tee_white, rashguard_ls, rashguard_black, hoodie, crewneck, sticker, mug, tote, tank, cap, phone_case, long_sleeve_tee, shorts, beanie, leggings, joggers, apron, canvas, metal_print, pillow, blanket, coaster, placemat, journal, mug_black, wine_glass, towel, bottle, mouse_pad, laptop_sleeve, poster, nfc_coin, device, event_ticket, song, zine, video, karaoke_ticket, house, socks, drawstring_bag, beach_towel, fanny_pack, bucket_hat, kids_tee, backpack, flag, printful_custom."
    },
    "design_url": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL to ready-made design artwork (ticket art / song cover for digital kinds). Provide this OR ai_prompt (not both)."
    },
    "ai_prompt": {
      "type": "string",
      "maxLength": 600,
      "description": "Text brief for MU to generate the artwork (<=600 chars). Costs mu_credits (see mu_status → limits.ai_gen). Provide this OR design_url (not both)."
    },
    "price_jpy": {
      "type": "integer",
      "description": "Optional retail price in JPY. Must respect the kind's price_floor_jpy (see mu_status)."
    },
    "capacity": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "event_ticket only: seat limit (定員). Once sold out, checkout is blocked. Omit = unlimited."
    },
    "audio_url": {
      "type": "string",
      "format": "uri",
      "description": "song only: absolute https URL of the audio file delivered to the buyer on purchase."
    },
    "printful_product_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "printful_custom only: the Printful catalog product id (from the Printful catalog API). MU makes ANY of Printful's ~500 catalog products this way — placement, fulfillment route and price floor are resolved live from Printful at create time."
    },
    "printful_variant_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "printful_custom only: the Printful variant id (size/color) for the chosen product."
    },
    "position": {
      "type": "object",
      "properties": {
        "w_pct": {
          "type": "number",
          "minimum": 20,
          "maximum": 100,
          "description": "Print width as % of the printable area (20-100). 62 ≈ the default chest print."
        },
        "x_pct": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Horizontal position of the print box (0=left, 50=centered, 100=right)."
        },
        "y_pct": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Vertical position of the print box (0=top/neck, 50=centered, 100=bottom/hem)."
        }
      },
      "required": [
        "w_pct",
        "x_pct",
        "y_pct"
      ],
      "additionalProperties": false,
      "description": "Optional print placement — front-print DTG apparel only (tee / tee_white / hoodie / crewneck / tank / long_sleeve_tee). The preview mockup AND the real print order use the same resolved box (WYSIWYG). Preview with mu_preview_mockup before creating."
    }
  },
  "required": [
    "store",
    "label",
    "description",
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_preview_mockup(kind, design_url, position, preview_id)

See the mockup BEFORE creating any product — nothing is created or sold, and it costs no credits. Renders the design on the real garment (Printful) when the kind supports it (source: "printful"), otherwise a clean MU product card (source: "card"), and returns a durable preview image URL. Optionally pass `position` (front-print DTG apparel only: tee / tee_white / hoodie / crewneck / tank / long_sleeve_tee) to preview a custom print placement — passing the SAME position to mu_create_product prints exactly what you previewed (WYSIWYG). Usually answers in 10-45s; if it returns status="processing", call this tool again with the returned `preview_id` to keep waiting. Rate limit: 30 previews/hour. Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "tee",
        "tee_white",
        "rashguard_ls",
        "rashguard_black",
        "hoodie",
        "crewneck",
        "sticker",
        "mug",
        "tote",
        "tank",
        "cap",
        "phone_case",
        "long_sleeve_tee",
        "shorts",
        "beanie",
        "leggings",
        "joggers",
        "apron",
        "canvas",
        "metal_print",
        "pillow",
        "blanket",
        "coaster",
        "placemat",
        "journal",
        "mug_black",
        "wine_glass",
        "towel",
        "bottle",
        "mouse_pad",
        "laptop_sleeve",
        "poster",
        "nfc_coin",
        "device",
        "event_ticket",
        "song",
        "zine",
        "video",
        "karaoke_ticket",
        "house",
        "socks",
        "drawstring_bag",
        "beach_towel",
        "fanny_pack",
        "bucket_hat",
        "kids_tee",
        "backpack",
        "flag",
        "printful_custom"
      ],
      "description": "Product kind to preview on (required unless preview_id is set)."
    },
    "design_url": {
      "type": "string",
      "format": "uri",
      "description": "Absolute https URL of the design artwork (required unless preview_id is set). Use mu_upload_design first for local images."
    },
    "position": {
      "type": "object",
      "properties": {
        "w_pct": {
          "type": "number",
          "minimum": 20,
          "maximum": 100,
          "description": "Print width as % of the printable area (20-100). 62 ≈ the default chest print."
        },
        "x_pct": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Horizontal position of the print box (0=left, 50=centered, 100=right)."
        },
        "y_pct": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Vertical position of the print box (0=top/neck, 50=centered, 100=bottom/hem)."
        }
      },
      "required": [
        "w_pct",
        "x_pct",
        "y_pct"
      ],
      "additionalProperties": false,
      "description": "Optional print placement — front-print DTG apparel only (tee / tee_white / hoodie / crewneck / tank / long_sleeve_tee). The preview mockup AND the real print order use the same resolved box (WYSIWYG). Preview with mu_preview_mockup before creating."
    },
    "preview_id": {
      "type": "string",
      "description": "Continue waiting on an earlier preview that returned status=\"processing\"."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢mu_affiliate

Get your personal MU affiliate (referral) link + stats. Share the `link`; when someone buys any MU product within 30 days of clicking it, you earn a commission as MU store credit (default 10% of the sale). You can also append the returned `ref_param` to any product URL. Returns clicks, sales (uses), earned_jpy and your mu_credit_balance. Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢mu_list_mine

List every product you have created across your MU stores: sku, store, label, kind, retail_price_jpy, status (review/live/retired/…), design_file and pdp_url. Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢mu_sales

Get sales for your MU stores: per-store and total order_count + revenue_jpy, plus the 50 most recent orders (sku, amount_jpy, created_at, status). Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_upload_design(data_base64, filename)

Upload a PNG design (base64-encoded, <=3MB decoded) and receive a durable https url. Pass that url as `design_url` to mu_create_product. Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {
    "data_base64": {
      "type": "string",
      "description": "Base64-encoded PNG bytes (a leading data:image/png;base64, prefix is OK). Max ~3MB decoded."
    },
    "filename": {
      "type": "string",
      "description": "Optional original filename (informational only)."
    }
  },
  "required": [
    "data_base64"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪mu_retire_product(sku)

Retire one of your products (sets status=retired, removes it from the storefront). Owner-only. Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {
    "sku": {
      "type": "string",
      "description": "SKU of the product to retire (must belong to one of your stores)."
    }
  },
  "required": [
    "sku"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_update_product(sku, label, description, price_jpy, design_url, ...)

Update one of your products. Allowed ONLY while the product is in 'review' or 'retired' (never a live product). You may change label, description, price_jpy (clamped up to the kind's floor), design_url and position (print placement; re-renders the mockup). Printful ids can never change. Owner-only. Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {
    "sku": {
      "type": "string",
      "description": "SKU of the product to update (must belong to one of your stores)."
    },
    "label": {
      "type": "string",
      "description": "New product label / title."
    },
    "description": {
      "type": "string",
      "description": "New product description."
    },
    "price_jpy": {
      "type": "integer",
      "description": "New retail price in JPY (clamped up to the kind's price_floor_jpy)."
    },
    "design_url": {
      "type": "string",
      "format": "uri",
      "description": "New absolute https URL to the design artwork."
    },
    "position": {
      "type": "object",
      "properties": {
        "w_pct": {
          "type": "number",
          "minimum": 20,
          "maximum": 100,
          "description": "Print width as % of the printable area (20-100). 62 ≈ the default chest print."
        },
        "x_pct": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Horizontal position of the print box (0=left, 50=centered, 100=right)."
        },
        "y_pct": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Vertical position of the print box (0=top/neck, 50=centered, 100=bottom/hem)."
        }
      },
      "required": [
        "w_pct",
        "x_pct",
        "y_pct"
      ],
      "additionalProperties": false,
      "description": "Optional print placement — front-print DTG apparel only (tee / tee_white / hoodie / crewneck / tank / long_sleeve_tee). The preview mockup AND the real print order use the same resolved box (WYSIWYG). Preview with mu_preview_mockup before creating."
    }
  },
  "required": [
    "sku"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_submit_feedback(category, title, description, sku, severity)

Found a bug, or have an idea to make MU better? File it here. Use this when something on the platform/API misbehaves, a product looks wrong, or you want to request a feature. It lands in the MA-council triage queue. Requires `Authorization: Bearer <api_key>`.

입력 스키마

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": [
        "bug",
        "feature",
        "improvement"
      ],
      "description": "bug = something is broken; feature = new capability; improvement = make existing better."
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "description": "Short one-line summary (<=200 chars)."
    },
    "description": {
      "type": "string",
      "maxLength": 2000,
      "description": "What happened / what you want. Steps to reproduce for bugs. (<=2000 chars)"
    },
    "sku": {
      "type": "string",
      "description": "Optional: the SKU this feedback is about."
    },
    "severity": {
      "type": "string",
      "enum": [
        "critical",
        "high",
        "medium",
        "low"
      ],
      "description": "Optional (bugs): how bad is it?"
    }
  },
  "required": [
    "category",
    "title",
    "description"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢mu_ship_orders(all, reveal)

List physical (address-bearing) orders for the factory shipping console with their ship_status (pending|in_production|shipped|delivered), courier and tracking. Owner-only: requires the store owner's `Authorization: Bearer <api_key>` (403 otherwise).

입력 스키마

{
  "type": "object",
  "properties": {
    "all": {
      "type": "boolean",
      "description": "Include delivered orders too (default false = active only)."
    },
    "reveal": {
      "type": "boolean",
      "description": "Show full address/phone. Default false = masked (city + last-4) so customer PII stays out of the chat log; set true only when you actually need the full address."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪mu_ship_mark(id, status, tracking, courier, notify)

Advance a physical order's ship_status and (when shipping) record the courier + tracking number. Owner-only. status must be one of pending|in_production|shipped|delivered.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "number",
      "description": "catalog_orders.id of the order (from mu_ship_orders)."
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "in_production",
        "shipped",
        "delivered"
      ],
      "description": "New shipping status."
    },
    "tracking": {
      "type": "string",
      "description": "Tracking / 送り状 number (when status=shipped)."
    },
    "courier": {
      "type": "string",
      "description": "Courier, e.g. yamato | sagawa (when status=shipped)."
    },
    "notify": {
      "type": "boolean",
      "description": "When status=shipped, email the customer a shipped + tracking notice (default false). Transactional shipping mail to the buyer of THIS order."
    }
  },
  "required": [
    "id",
    "status"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪mu_ship_csv(courier)

Generate a 送り状 CSV for all un-shipped orders, formatted for import into ヤマト B2クラウド (courier=yamato) or 佐川 e飛伝 (courier=sagawa). No carrier API/contract needed — import the CSV to request pickup. Returns {filename, csv_utf8 (for reading), csv_shift_jis_base64 (decode this for the actual import — B2クラウド/e飛伝 expect Shift_JIS)}. First time, register the column layout in B2クラウド. Owner-only.

입력 스키마

{
  "type": "object",
  "properties": {
    "courier": {
      "type": "string",
      "enum": [
        "yamato",
        "sagawa"
      ],
      "description": "Courier CSV format (default yamato)."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢mu_gi_logos

List the MU × JiuFlow sponsored gi's 17 sponsor placements with each logo's slot, brand, position, finished size, thread color, logo file/url, status (ok=hi-res | low=low-res | request=not collected | missing), and consent (yes=written permission to embroider on apparel | requested | no). ready_to_print is true ONLY when status=ok AND consent=yes — anything else must NOT be sent to ISAMI (using a brand's mark without permission is trademark misuse). Owner-only.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_gi_logo_set(slot, logo_url, status, consent, note)

Update one gi sponsor placement (by slot from mu_gi_logos) — swap its logo_url, set its status (ok|low|request|missing) and/or add a note (e.g. where the vector was requested). Owner-only.

입력 스키마

{
  "type": "object",
  "properties": {
    "slot": {
      "type": "string",
      "description": "Placement slot, e.g. \"lsleeve-kagi\" (from mu_gi_logos)."
    },
    "logo_url": {
      "type": "string",
      "description": "New absolute https URL of the hi-res / vector logo."
    },
    "status": {
      "type": "string",
      "enum": [
        "ok",
        "low",
        "request",
        "missing"
      ],
      "description": "New logo-file status."
    },
    "consent": {
      "type": "string",
      "enum": [
        "yes",
        "requested",
        "no"
      ],
      "description": "Written permission to embroider this brand on the gi. yes=have written OK; requested=asked, not yet granted; no=declined. Only consent=yes AND status=ok is print-ready — set yes ONLY when you actually hold written permission."
    },
    "note": {
      "type": "string",
      "description": "Free note, e.g. 'vector requested from pr@…'."
    }
  },
  "required": [
    "slot"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪mu_ship_import_tracking(csv, courier)

Paste the CSV that B2クラウド / e飛伝 produced AFTER issuing labels (it contains your お客様管理番号 MU-{id} plus the assigned 送り状番号). Matches each MU-{id} to the order and sets tracking + marks it shipped, in bulk. The natural counterpart to mu_ship_csv. Owner-only.

입력 스키마

{
  "type": "object",
  "properties": {
    "csv": {
      "type": "string",
      "description": "The full CSV text exported from B2クラウド/e飛伝 after issuing labels."
    },
    "courier": {
      "type": "string",
      "enum": [
        "yamato",
        "sagawa"
      ],
      "description": "Courier (default yamato)."
    }
  },
  "required": [
    "csv"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢mu_ship_order(id, reveal)

Fetch a single physical order by id with its status, courier and tracking. Address/phone are masked unless reveal=true. Owner-only.

입력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "number",
      "description": "catalog_orders.id of the order."
    },
    "reveal": {
      "type": "boolean",
      "description": "Show full address/phone (default false = masked)."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡mu_gi_request_logos

For every gi sponsor whose consent is not yes, generate a ready-to-send draft asking for (1) written permission to embroider their mark on the gi and (2) the vector logo. Does NOT send (outbound mail is a human gate). When a brand grants permission, record it with mu_gi_logo_set consent:yes. Owner-only.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪mu_gi_techpack

Return the MU × JiuFlow gi's public page and lifestyle/mockup image URLs (front/back/crest/QR). The dimensioned tech-pack PDF lives in the repo (docs/gi-isami-2026-05-12/). Owner-only.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 31개
검증됨버전이 기록되지 않음도구 31개