{"openapi":"3.1.0","info":{"title":"Chore Forge","description":"반복 잡무를 설명하면 에이전트가 실행 가능한 도구를 만들어 등록하는 개인 생산성 앱. 인증이 없으므로 모든 엔드포인트를 그대로 호출할 수 있습니다. 자동화 클라이언트를 위한 요약은 /llms.txt 에 있습니다.","version":"2.0.0"},"paths":{"/healthz":{"get":{"tags":["system"],"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/api/forge":{"post":{"tags":["forge"],"summary":"Forge","description":"잡무 설명 → Spec·Build·Verify 파이프라인을 Server-Sent Events로 스트리밍합니다.\n\n이벤트 타입: `stage`, `delta`, `sandbox`, `draft`, `error`, `end`.\n완주까지 60~200초가 걸리므로 클라이언트 타임아웃을 넉넉히 잡으세요.","operationId":"forge_api_forge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/forge/runs":{"get":{"tags":["forge"],"summary":"Forge Runs","description":"단조 실행 이력. 각 건의 단계, 도구 호출 수, 판정, 자가 수정 횟수를 담습니다.\n\n단조를 직접 돌리지 않고도 에이전트 오케스트레이션이 실제로 수행됐는지\n확인할 수 있습니다. `tool_calls` 는 VerifierAgent 가 샌드박스를 tool 로\n호출한 횟수이고, `sandbox_attempts` 가 2 이상이면 자가 수정이 일어난 것입니다.","operationId":"forge_runs_api_forge_runs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Forge Runs Api Forge Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills":{"get":{"tags":["skills"],"summary":"List Skills","operationId":"list_skills_api_skills_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Skills Api Skills Get"}}}}}}},"/api/skills/{skill_id}":{"get":{"tags":["skills"],"summary":"Get Skill","operationId":"get_skill_api_skills__skill_id__get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Skill Api Skills  Skill Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["skills"],"summary":"Delete Skill","operationId":"delete_skill_api_skills__skill_id__delete","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Skill Api Skills  Skill Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/approve":{"post":{"tags":["skills"],"summary":"Approve Skill","operationId":"approve_skill_api_skills__skill_id__approve_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Approve Skill Api Skills  Skill Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/reject":{"post":{"tags":["skills"],"summary":"Reject Skill","operationId":"reject_skill_api_skills__skill_id__reject_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reject Skill Api Skills  Skill Id  Reject Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/skills/{skill_id}/run":{"post":{"tags":["skills"],"summary":"Run Approved Skill","description":"등록된 스킬을 샌드박스에서 실행합니다. 모델 호출이 없어 보통 0.03초 이내입니다.","operationId":"run_approved_skill_api_skills__skill_id__run_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","title":"Skill Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Approved Skill Api Skills  Skill Id  Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/runs":{"get":{"tags":["runs"],"summary":"List Runs","operationId":"list_runs_api_runs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Runs Api Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats":{"get":{"tags":["stats"],"summary":"Stats","operationId":"stats_api_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stats Api Stats Get"}}}}}}},"/api/agent/guide":{"get":{"tags":["agent"],"summary":"Agent Guide","description":"자동화 클라이언트를 위한 기계 판독용 사용 안내.","operationId":"agent_guide_api_agent_guide_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Agent Guide Api Agent Guide Get"}}}}}}},"/llms.txt":{"get":{"tags":["agent"],"summary":"Llms Txt","description":"자동화 클라이언트를 위한 평문 요약. 이 앱이 무엇을 제공하는지 기술한다.","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"ForgeRequest":{"properties":{"request":{"type":"string","maxLength":4000,"minLength":3,"title":"Request","description":"자연어로 설명한 반복 잡무","examples":["CSV를 붙여넣으면 컬럼별 요약 통계 표로 바꿔줘"]},"manual_minutes":{"type":"number","maximum":600.0,"minimum":0.0,"title":"Manual Minutes","description":"이 잡무를 손으로 할 때 걸리는 분","default":15.0},"require_approval":{"type":"boolean","title":"Require Approval","description":"true면 사람이 승인할 때까지 초안으로 남습니다. 기본은 false로, 샌드박스를 통과한 도구는 즉시 등록됩니다. 어느 쪽이든 코드·샌드박스 결과·검증 판정은 항상 노출되며, 샌드박스에 실패한 코드는 절대 자동 등록되지 않습니다.","default":false}},"type":"object","required":["request"],"title":"ForgeRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"RunRequest":{"properties":{"input":{"type":"string","maxLength":200000,"title":"Input","description":"스킬에 넘길 입력","default":""},"source":{"type":"string","title":"Source","description":"호출 주체 태그 — \"ui\", \"api\", \"agent\"","default":"api"}},"type":"object","title":"RunRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}