stdin: {"id":1,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{},"clientInfo":{"name":"toolwitness","version":"s772-v0"},"protocolVersion":"2025-11-25"}} {"jsonrpc":"2.0","method":"notifications/initialized"} {"id":2,"jsonrpc":"2.0","method":"tools/list","params":{}} stdout: {"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{"listChanged":true},"resources":{"listChanged":true},"prompts":{"listChanged":true}},"serverInfo":{"name":"gency","version":"0.6.0"}},"jsonrpc":"2.0","id":1} {"result":{"tools":[{"name":"login","description":"Start OAuth login (opens a browser). Captures the callback in-process and stores tokens at ~/.gency/tokens.json. gency-mcp uses OAuth only — this is the single sign-in flow.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"client_id":{"description":"OAuth client_id. Defaults to GENCY_OAUTH_CLIENT_ID env.","type":"string"},"client_secret":{"description":"OAuth client_secret (only required for confidential clients). Defaults to GENCY_OAUTH_CLIENT_SECRET env.","type":"string"},"api_base":{"description":"OAuth provider base URL. Defaults to GENCY_OAUTH_API_BASE/GENCY_API_URL.","type":"string"},"scope":{"description":"Space-separated scopes. Defaults to product:read product:write team:read team:write user:read.","type":"string"},"port":{"description":"Fixed loopback port. Default: 53682 (must be whitelisted in the OAuth client's redirect URIs as http://localhost:53682/callback).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timeout_seconds":{"description":"Login timeout. Default: 300.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}}},{"name":"logout","description":"Remove stored OAuth tokens (~/.gency/tokens.json). gency-mcp is OAuth-only — there is no API key state to clear.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{}}},{"name":"auth_status","description":"Inspect current Gency OAuth state. Call this BEFORE the first gency tool in a session if unsure — output's 'Next action' line tells you whether to invoke `login` or proceed. gency-mcp authenticates with OAuth only.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{}}},{"name":"get_team","description":"Get current team information including team name and plan","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{}}},{"name":"list_workspaces","description":"List all workspaces in the current team","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{}}},{"name":"create_workspace","description":"Create a new workspace. Confirm with the user before executing.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Workspace name"}},"required":["name"]}},{"name":"update_workspace","description":"Rename a workspace. Confirm with the user before executing.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"workspaceId":{"type":"string","description":"Workspace ID to update"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"New workspace name"}},"required":["workspaceId","name"]}},{"name":"list_templates","description":"List templates for a workspace (workspace-specific + defaults TEMPLATE_01~TEMPLATE_12). Present as a picklist for the user — do NOT silently pick.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"workspaceId":{"type":"string","description":"Workspace ID"},"productType":{"description":"Product type filter (default: FASHION)","type":"string","enum":["FASHION","JEWELRY"]}},"required":["workspaceId"]}},{"name":"list_products","description":"List products in a workspace.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"workspaceId":{"type":"string","description":"Workspace ID"}},"required":["workspaceId"]}},{"name":"get_product","description":"Get detailed information about a specific product.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"productId":{"type":"string","description":"Product ID"}},"required":["productId"]}},{"name":"create_product","description":"Create AI-generated product images. **Consumes credits — confirm with the user first.** Only `category: \"CLOTHING\"` is accepted by the API today. Defaults to ONE product per request (all colors go in a single `colors` array; split only on explicit user request). **Do NOT guess colors/fabrics/features/laundryTips from filenames or category — ask the user.** Generation is asynchronous: poll `get_product` until status leaves CREATING. Read resource `gency://api-reference/products` for the full ProductMetadata schema (category enum, additionalInfo, sizeTables format).","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"workspaceId":{"type":"string","minLength":1,"description":"Target workspace ID"},"products":{"minItems":1,"type":"array","items":{"type":"object","properties":{"category":{"type":"string","enum":["CLOTHING","OUTER","TOP","PANTS","SKIRT","DRESS","JUMPSUIT","BAG","SHOES","UNDERWEAR","SWIMWEAR","SOCKS","HAT","NECKWEAR","GLOVES","TOY","HAIR_ACCESSORY","BIB","WASHCLOTHS","NECK_PILLOWS","BELT","SET","JEWELRY","RING","NECKLACE","EARRING","BRACELET","ANKLET"],"description":"**Use `CLOTHING`.** The Gency API currently rejects every other value with `현재 CLOTHING 카테고리만 지원됩니다` — the remaining enum members (OUTER/TOP/BAG/RING/…) are reserved for a future rollout and will fail today. Full list: `gency://api-reference/products`."},"images":{"minItems":6,"type":"array","items":{"type":"string"},"description":"Image IDs from get_upload_url. Min 6 per product. First image = primary thumbnail."},"projectId":{"description":"관리명 — workspace-unique identifier. Auto-generated if omitted.","type":"string"},"productName":{"description":"Product name. Auto-generated if omitted.","type":"string"},"productNameKo":{"description":"Korean name. Auto-generated if omitted.","type":"string"},"productNameEn":{"description":"English name. Auto-generated if omitted.","type":"string"},"colors":{"minItems":1,"type":"array","items":{"type":"string"},"description":"Colors (e.g., ['블랙','화이트']). REQUIRED — ask the user; do NOT infer from filenames. Multiple colors stay in ONE product unless user explicitly splits."},"fabrics":{"minItems":1,"type":"array","items":{"type":"string"},"description":"Fabrics (e.g., ['면 100%']). REQUIRED — ask the user; no generic defaults."},"templateId":{"type":"string","description":"Template ID. REQUIRED — call list_templates first and let the user pick."},"additionalInfo":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"},"description":"Product features (e.g., ['슬림핏','베이직 무드']). REQUIRED — ask the user; do NOT guess."},"laundryTips":{"type":"array","items":{"type":"string"},"description":"Care tips (e.g., ['30도 이하 찬물 세탁']). REQUIRED — ask the user; do NOT fabricate."},"sizeName":{"description":"Size label (e.g., 'S/M/L'). Use with sizeTables.","type":"string"},"sizeTables":{"description":"Single 2D size chart (header row + value rows). All strings; '' for empty. Omit if no chart. See `gency://api-reference/products` for format.","type":"array","items":{"type":"array","items":{"type":"string"}}},"manufactureDate":{"type":"string"},"manufactureCountry":{"type":"string"},"certificationNumber":{"type":"string"}},"required":["features","laundryTips"]}},"required":["category","images","colors","fabrics","templateId","additionalInfo"]},"description":"Array of product metadata"}},"required":["workspaceId","products"]}},{"name":"update_product_status","description":"Change product review status. Confirm with the user. Transitions: BEFORE_REVIEW → IN_REVIEW → REVIEW_COMPLETE.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"productId":{"type":"string","description":"Product ID"},"status":{"type":"string","enum":["BEFORE_REVIEW","IN_REVIEW","REVIEW_COMPLETE"],"description":"New status"}},"required":["productId","status"]}},{"name":"get_upload_url","description":"Get a presigned S3 URL to upload one product image, plus the uploadHandle that `upload_image` requires. Single-use, valid 1h; uploaded images retained 24h. See `gency://api-reference/images`. Tip: for the common 6+ images case, prefer `prepare_product_images` (single call).","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"workspaceId":{"type":"string","description":"Workspace ID"},"extension":{"type":"string","enum":["png","jpg","jpeg","webp"],"description":"File extension (lowercase, no dot). Must match the PUT Content-Type."}},"required":["workspaceId","extension"]}},{"name":"download_product_image","description":"Render a generated product's detail page and save the resulting image locally. Requires the product to be generated (status past CREATING). Rendering is slow — allow up to 3 minutes.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"productId":{"type":"string","description":"Product ID"},"templateId":{"description":"Template ID to render with (optional)","type":"string"},"outputPath":{"description":"Absolute path to write the image to. Defaults to a file in the OS temp directory.","type":"string"}},"required":["productId"]}},{"name":"upload_image","description":"PUT a local image file to the presigned S3 URL that get_upload_url issued. Pass the `uploadHandle` from that call — it carries the destination URL, so no URL is accepted here.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"filePath":{"type":"string","description":"Absolute path to the local image file"},"uploadHandle":{"type":"string","description":"The uploadHandle returned by get_upload_url. Single-use, valid 1h, and only redeemable by the caller it was issued to."},"contentType":{"description":"MIME type (auto-detected from file contents if omitted)","type":"string","enum":["image/png","image/jpeg","image/webp"]}},"required":["filePath","uploadHandle"]}},{"name":"prepare_product_images","description":"Upload 6+ local images for a workspace and return imageIds ready for create_product. Use this when the user gives you several image paths — it replaces 6× (get_upload_url + upload_image). Fails fast if fewer than 6 paths are supplied (Gency requires min 6 per product).","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"workspaceId":{"type":"string","description":"Workspace ID"},"filePaths":{"minItems":6,"maxItems":50,"type":"array","items":{"type":"string"},"description":"Absolute paths to local image files (6-50). Order is preserved; the first becomes the primary thumbnail."}},"required":["workspaceId","filePaths"]}},{"name":"get_me","description":"Get current authenticated user information","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{}}},{"name":"list_users","description":"List all team members","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{}}},{"name":"get_user","description":"Get information about a specific team member. The target user must belong to the same team as the caller.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"userId":{"type":"string","description":"Target user ID"}},"required":["userId"]}},{"name":"get_credits","description":"Get remaining credit balance for the team. Call this BEFORE create_product to ensure sufficient credits.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{}}},{"name":"search_docs","description":"Search Gency API docs by keyword. Returns top 3 ranked snippets with line numbers from developers.gency.ai (cached 1h).","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"query":{"type":"string","description":"Search keywords (space-separated, e.g., 'webhook signature')"}},"required":["query"]}}]},"jsonrpc":"2.0","id":2}