{"calls": [], "exit_before_cleanup": null, "initialize": {"capabilities": {"prompts": {"listChanged": true}, "resources": {"listChanged": true}, "tools": {"listChanged": true}}, "protocolVersion": "2025-11-25", "serverInfo": {"name": "gency", "version": "0.6.0"}}, "list_change_notifications": 0, "monotonic_seconds": 0.39957623300142586, "outcome": "listed tools offline", "started_utc": "2026-10-17T15:08:13.784655Z", "status": "completed", "tools": [{"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": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"api_base": {"description": "OAuth provider base URL. Defaults to GENCY_OAUTH_API_BASE/GENCY_API_URL.", "type": "string"}, "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"}, "port": {"description": "Fixed loopback port. Default: 53682 (must be whitelisted in the OAuth client's redirect URIs as http://localhost:53682/callback).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer"}, "scope": {"description": "Space-separated scopes. Defaults to product:read product:write team:read team:write user:read.", "type": "string"}, "timeout_seconds": {"description": "Login timeout. Default: 300.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer"}}, "type": "object"}, "name": "login"}, {"description": "Remove stored OAuth tokens (~/.gency/tokens.json). gency-mcp is OAuth-only — there is no API key state to clear.", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object"}, "name": "logout"}, {"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": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object"}, "name": "auth_status"}, {"description": "Get current team information including team name and plan", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object"}, "name": "get_team"}, {"description": "List all workspaces in the current team", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object"}, "name": "list_workspaces"}, {"description": "Create a new workspace. Confirm with the user before executing.", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"name": {"description": "Workspace name", "maxLength": 100, "minLength": 1, "type": "string"}}, "required": ["name"], "type": "object"}, "name": "create_workspace"}, {"description": "Rename a workspace. Confirm with the user before executing.", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"name": {"description": "New workspace name", "maxLength": 100, "minLength": 1, "type": "string"}, "workspaceId": {"description": "Workspace ID to update", "type": "string"}}, "required": ["workspaceId", "name"], "type": "object"}, "name": "update_workspace"}, {"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": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"productType": {"description": "Product type filter (default: FASHION)", "enum": ["FASHION", "JEWELRY"], "type": "string"}, "workspaceId": {"description": "Workspace ID", "type": "string"}}, "required": ["workspaceId"], "type": "object"}, "name": "list_templates"}, {"description": "List products in a workspace.", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"workspaceId": {"description": "Workspace ID", "type": "string"}}, "required": ["workspaceId"], "type": "object"}, "name": "list_products"}, {"description": "Get detailed information about a specific product.", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"productId": {"description": "Product ID", "type": "string"}}, "required": ["productId"], "type": "object"}, "name": "get_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": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"products": {"description": "Array of product metadata", "items": {"properties": {"additionalInfo": {"properties": {"certificationNumber": {"type": "string"}, "features": {"description": "Product features (e.g., ['슬림핏','베이직 무드']). REQUIRED — ask the user; do NOT guess.", "items": {"type": "string"}, "type": "array"}, "laundryTips": {"description": "Care tips (e.g., ['30도 이하 찬물 세탁']). REQUIRED — ask the user; do NOT fabricate.", "items": {"type": "string"}, "type": "array"}, "manufactureCountry": {"type": "string"}, "manufactureDate": {"type": "string"}, "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.", "items": {"items": {"type": "string"}, "type": "array"}, "type": "array"}}, "required": ["features", "laundryTips"], "type": "object"}, "category": {"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`.", "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"], "type": "string"}, "colors": {"description": "Colors (e.g., ['블랙','화이트']). REQUIRED — ask the user; do NOT infer from filenames. Multiple colors stay in ONE product unless user explicitly splits.", "items": {"type": "string"}, "minItems": 1, "type": "array"}, "fabrics": {"description": "Fabrics (e.g., ['면 100%']). REQUIRED — ask the user; no generic defaults.", "items": {"type": "string"}, "minItems": 1, "type": "array"}, "images": {"description": "Image IDs from get_upload_url. Min 6 per product. First image = primary thumbnail.", "items": {"type": "string"}, "minItems": 6, "type": "array"}, "productName": {"description": "Product name. Auto-generated if omitted.", "type": "string"}, "productNameEn": {"description": "English name. Auto-generated if omitted.", "type": "string"}, "productNameKo": {"description": "Korean name. Auto-generated if omitted.", "type": "string"}, "projectId": {"description": "관리명 — workspace-unique identifier. Auto-generated if omitted.", "type": "string"}, "templateId": {"description": "Template ID. REQUIRED — call list_templates first and let the user pick.", "type": "string"}}, "required": ["category", "images", "colors", "fabrics", "templateId", "additionalInfo"], "type": "object"}, "minItems": 1, "type": "array"}, "workspaceId": {"description": "Target workspace ID", "minLength": 1, "type": "string"}}, "required": ["workspaceId", "products"], "type": "object"}, "name": "create_product"}, {"description": "Change product review status. Confirm with the user. Transitions: BEFORE_REVIEW → IN_REVIEW → REVIEW_COMPLETE.", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"productId": {"description": "Product ID", "type": "string"}, "status": {"description": "New status", "enum": ["BEFORE_REVIEW", "IN_REVIEW", "REVIEW_COMPLETE"], "type": "string"}}, "required": ["productId", "status"], "type": "object"}, "name": "update_product_status"}, {"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": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"extension": {"description": "File extension (lowercase, no dot). Must match the PUT Content-Type.", "enum": ["png", "jpg", "jpeg", "webp"], "type": "string"}, "workspaceId": {"description": "Workspace ID", "type": "string"}}, "required": ["workspaceId", "extension"], "type": "object"}, "name": "get_upload_url"}, {"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": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"outputPath": {"description": "Absolute path to write the image to. Defaults to a file in the OS temp directory.", "type": "string"}, "productId": {"description": "Product ID", "type": "string"}, "templateId": {"description": "Template ID to render with (optional)", "type": "string"}}, "required": ["productId"], "type": "object"}, "name": "download_product_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": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"contentType": {"description": "MIME type (auto-detected from file contents if omitted)", "enum": ["image/png", "image/jpeg", "image/webp"], "type": "string"}, "filePath": {"description": "Absolute path to the local image file", "type": "string"}, "uploadHandle": {"description": "The uploadHandle returned by get_upload_url. Single-use, valid 1h, and only redeemable by the caller it was issued to.", "type": "string"}}, "required": ["filePath", "uploadHandle"], "type": "object"}, "name": "upload_image"}, {"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": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"filePaths": {"description": "Absolute paths to local image files (6-50). Order is preserved; the first becomes the primary thumbnail.", "items": {"type": "string"}, "maxItems": 50, "minItems": 6, "type": "array"}, "workspaceId": {"description": "Workspace ID", "type": "string"}}, "required": ["workspaceId", "filePaths"], "type": "object"}, "name": "prepare_product_images"}, {"description": "Get current authenticated user information", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object"}, "name": "get_me"}, {"description": "List all team members", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object"}, "name": "list_users"}, {"description": "Get information about a specific team member. The target user must belong to the same team as the caller.", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"userId": {"description": "Target user ID", "type": "string"}}, "required": ["userId"], "type": "object"}, "name": "get_user"}, {"description": "Get remaining credit balance for the team. Call this BEFORE create_product to ensure sufficient credits.", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object"}, "name": "get_credits"}, {"description": "Search Gency API docs by keyword. Returns top 3 ranked snippets with line numbers from developers.gency.ai (cached 1h).", "inputSchema": {"$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"query": {"description": "Search keywords (space-separated, e.g., 'webhook signature')", "type": "string"}}, "required": ["query"], "type": "object"}, "name": "search_docs"}], "tools_list_hashes": ["847de8b7dd0cc022590ba540bd9af12b0e9a389bc5d0ef113f6b12afe8dbf71e"], "wall_limit_seconds": 45}