{"base_url":"https://docs.prototypebench.org","guide_url":"https://docs.prototypebench.org/api/guide","auth":{"header":"x-api-key","format":"gdk_..."},"tools":[{"name":"hwpx_inspect","description":"한글 양식 파일(.hwpx)의 구조를 읽는다. 단락 목록(인덱스·현재 텍스트·안내문 여부)과 표 구조(행/열)를 돌려준다. 양식을 채우기 전에 반드시 먼저 호출해 단락 개수와 각 자리의 성격을 확인해야 한다.","input_schema":{"type":"object","properties":{"template_url":{"type":"string","description":"양식 .hwpx 파일의 URL. 파일을 직접 올릴 때는 multipart 로 template 필드를 쓴다."}},"required":[]},"endpoint":{"method":"POST","path":"/api/hwpx/inspect","content_type":"multipart/form-data"}},{"name":"hwpx_expand_rows","description":"양식 표의 행이 모자랄 때 지정한 행을 복제해 늘린다. 복제본은 원본 행의 서식·셀 폭·테두리를 물려받는다. 행이 늘면 단락 인덱스가 전부 바뀌므로 이 호출 뒤에는 hwpx_inspect 를 다시 해야 한다.","input_schema":{"type":"object","properties":{"expansions":{"type":"array","description":"늘릴 대상. table/row 는 inspect 가 준 인덱스, count 는 추가할 행 수.","items":{"type":"object","properties":{"table":{"type":"integer","description":"표 인덱스 (0부터)"},"row":{"type":"integer","description":"복제할 행 인덱스. 생략하면 마지막 행. 머리글이 아니라 데이터 행을 지정한다."},"count":{"type":"integer","description":"추가할 행 수"}},"required":["table","count"]}}},"required":["expansions"]},"endpoint":{"method":"POST","path":"/api/hwpx/expand-rows","content_type":"multipart/form-data"}},{"name":"hwpx_apply","description":"단락 배열을 양식에 그대로 적용해 채워진 .hwpx 를 받는다. 배열 길이는 inspect 의 paragraphCount 와 정확히 같아야 하며, 표 밖의 빈 단락은 빈 문자열로 둬야 한다. 평문만 넣는다 — 마크다운이나 HTML 은 글자 그대로 보인다.","input_schema":{"type":"object","properties":{"paragraphs":{"type":"array","items":{"type":"string"},"description":"inspect 가 준 순서대로, 각 단락에 넣을 텍스트. 길이가 다르면 400 으로 거부된다."}},"required":["paragraphs"]},"endpoint":{"method":"POST","path":"/api/hwpx/apply","content_type":"multipart/form-data"}},{"name":"request_api_token","description":"사용자의 이메일 주소로 API 토큰을 보낸다. 브라우저 없이 토큰을 받는 길이다. 응답은 주소 등록 여부와 무관하게 같으므로, 사용자에게 메일함을 확인하고 토큰을 알려 달라고 한다. 같은 주소로는 1분에 한 번만 보낸다. 인증 없이 호출한다.","input_schema":{"type":"object","properties":{"email":{"type":"string","description":"토큰을 받을 이메일 주소"}},"required":["email"]},"endpoint":{"method":"POST","path":"/api/auth/request-token","content_type":"application/json"}},{"name":"publish_page","description":"HTML 문서를 웹에 올리고 URL 을 받는다. 링크를 아는 사람만 볼 수 있다. 디자인을 맞추려면 먼저 get_design_system 으로 규칙을 받아 그 스타일로 HTML 을 만든다.","input_schema":{"type":"object","properties":{"html":{"type":"string","description":"완성된 HTML 문서"},"name":{"type":"string","description":"문서 제목"}},"required":["html"]},"endpoint":{"method":"POST","path":"/api/pages","content_type":"application/json"}},{"name":"publish_presentation","description":"슬라이드(HTML 조각 배열)를 올리고 URL 을 받는다. 슬라이드 하나당 1280x720 을 기준으로 만든다.","input_schema":{"type":"object","properties":{"slides":{"type":"array","items":{"type":"string"},"description":"슬라이드별 HTML"},"name":{"type":"string","description":"덱 제목"}},"required":["slides"]},"endpoint":{"method":"POST","path":"/api/presentations","content_type":"application/json"}},{"name":"list_design_systems","description":"쓸 수 있는 디자인 시스템 목록을 본다(내장 24종 + 내가 만든 것). 인증 없이도 내장 목록은 볼 수 있다.","input_schema":{"type":"object","properties":{}},"endpoint":{"method":"GET","path":"/api/design-systems"}},{"name":"get_design_system","description":"디자인 시스템 하나의 규칙을 받는다. 응답의 promptBlock 을 그대로 프롬프트에 넣고 HTML·슬라이드를 만들면 서비스와 같은 디자인이 나온다.","input_schema":{"type":"object","properties":{"id":{"type":"string","description":"프리셋 id (예: banya-ai) 또는 내가 만든 ds_… id"}},"required":["id"]},"endpoint":{"method":"GET","path":"/api/design-systems?id={id}"}},{"name":"create_design_system","description":"내 브랜드 색으로 디자인 시스템을 만든다. 팔레트 7색만 주면 타이포·레이아웃은 기본값으로 채워진다. 만든 뒤에는 id 로 불러 쓴다.","input_schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"palette":{"type":"object","description":"background, surface, primary, accent, text, muted, divider 7가지 색 (hex)"}},"required":["name","palette"]},"endpoint":{"method":"POST","path":"/api/design-systems","content_type":"application/json"}},{"name":"publish_blog_post","description":"[관리자 전용] 마크다운 원고를 기술 블로그에 게시한다. 디자인을 입히고 영문으로 번역한다. 3~5분이 걸리므로 jobId 를 받아 get_blog_job_status 로 진행을 확인한다. 권한이 없으면 403(code: not_admin)이 온다. 고칠 때는 새로 올리지 말고 replaceId 를 써야 URL 이 유지된다.","input_schema":{"type":"object","properties":{"markdown":{"type":"string","description":"원고 전문"},"mode":{"type":"string","enum":["custom","research"],"description":"custom=원문 보존(기본), research=검색으로 보강"},"chain":{"type":"boolean","description":"커뮤니티·LinkedIn 까지 연쇄 게시 (기본 true)"},"generateImages":{"type":"boolean","description":"삽화·썸네일 생성 (기본 true)"},"replaceId":{"type":"string","description":"기존 글 id. 주면 같은 URL 로 교체한다"}},"required":["markdown"]},"endpoint":{"method":"POST","path":"/api/blog/publish","content_type":"application/json"}},{"name":"get_blog_job_status","description":"[관리자 전용] 블로그 게시 진행을 확인한다. succeeded 가 되면 result.techBlogUrl 에 주소가 들어 있다.","input_schema":{"type":"object","properties":{"jobId":{"type":"string"}},"required":["jobId"]},"endpoint":{"method":"GET","path":"/api/blog/jobs/{jobId}"}},{"name":"hwpx_fill","description":"양식과 마크다운 원고만 주면 어디에 무엇을 넣을지 알아서 판단해 채운다. 호출하는 쪽이 이미 LLM 이라면 inspect + apply 로 직접 제어하는 편이 정확하고 빠르다.","input_schema":{"type":"object","properties":{"markdown":{"type":"string","description":"채워 넣을 내용 (마크다운)"},"filename":{"type":"string","description":"받을 파일 이름 (선택)"}},"required":["markdown"]},"endpoint":{"method":"POST","path":"/api/hwpx/fill","content_type":"multipart/form-data"}}]}