{"service":{"name":"인사책","name_en":"Insacheck","description":"한국 중소기업·소상공인을 위한 HR SaaS·근태관리 솔루션 — 직원·조직, 출퇴근·근태·근무표, 시간 단위 연차·휴가, 전자결재, 여러 법인·지점 운영을 지원하고 4대보험·임금대장 등 급여 준비 기능을 제공합니다. 출퇴근 인증은 GPS·NFC·회사 Wi-Fi·보안 QR·사내망 IP 중 선택하고, 인원 제한 없는 무료 플랜으로 시작합니다.","ai_native_standard_version":"v1"},"server":{"name":"insacheck-mcp","version":"0.2.0"},"mcp":{"url":"https://timesync-dfu.pages.dev/api/mcp","legacy_url":"https://timesync-dfu.pages.dev/mcp","protocol_version":"2025-06-18","legacy_catalog_url":"https://timesync-dfu.pages.dev/mcp/tools.json"},"registry_version":"v1","generated_at":"2026-10-04T08:11:57.341Z","tool_count":185,"tool_count_scope":"read_write","read_tool_count":102,"write_tool_count":83,"registry_tool_count":185,"tool_count_note":"tool_count counts the full registry (read + write). The pre-auth public catalog at /mcp/tools.json advertises read_tool_count read-only tools.","roles":["employee","dept_manager","hr_manager","owner"],"oauth_scopes":["read","read_write"],"permissions":["company.read","employee.read","employee.write","attendance.read","attendance.write","leave.read","leave.request","leave.approve","approval.read","approval.create","approval.approve","expense.read","expense.create","expense.approve","resource.read","resource.reserve","document.read","document.issue","admin.read","admin.write"],"scopes":["read","read_write"],"tools":[{"name":"query_attendance_today","description":"오늘 우리 회사 직원들의 출퇴근 기록을 조회합니다. \"오늘 누가 출근했어?\", \"오늘 출퇴근 현황\" 같은 질문에 사용하세요.","permission":"attendance.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"date":{"type":"string","description":"YYYY-MM-DD (생략하면 오늘, KST 기준)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_attendance_today","arguments":{"date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_who_is_in","description":"지금 회사에 있는 사람(출근 후 퇴근 안 한 사람) 목록을 조회합니다. \"지금 누가 회사에 있어?\", \"현재 남아있는 사람\" 같은 질문에 사용하세요.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_who_is_in","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_overtime_summary","description":"지정한 기간의 연장근로(야근) 시간을 직원별로 집계합니다. \"이번주 야근시간 누가 가장 많아?\", \"야간 근로자 누구\" 같은 질문에 사용하세요.","permission":"attendance.read","required_role":"owner","required_scope":"read","input_schema":{"type":"object","properties":{"start_date":{"type":"string","description":"YYYY-MM-DD"},"end_date":{"type":"string","description":"YYYY-MM-DD"},"night_only":{"type":"boolean","description":"야간(22시 이후) 만 집계할지 (기본 false)"}},"required":["start_date","end_date"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_overtime_summary","arguments":{"start_date":"2026-06-13","end_date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_leaves_pending","description":"승인 대기 중인 휴가 신청 목록을 조회합니다. \"내가 승인해야 할 휴가\", \"결재 대기 중인 휴가\" 같은 질문에 사용하세요.","permission":"leave.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_leaves_pending","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_employees","description":"회사 직원 목록을 조회합니다. 부서/직책으로 필터링 가능. \"디자인팀에 누가 있어?\", \"전체 직원 명단\" 같은 질문에 사용하세요.","permission":"employee.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"department":{"type":"string","description":"부서명 (옵션)"},"position":{"type":"string","description":"직책 (옵션)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_employees","arguments":{"department":"영업팀","position":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_expense_summary","description":"경비 청구 요약을 조회합니다. 월별 / 카테고리별. \"이번달 경비 합계\", \"광고비 얼마 썼지?\" 같은 질문에 사용하세요.","permission":"expense.read","required_role":"owner","required_scope":"read","input_schema":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM (생략하면 이번달, KST 기준)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_expense_summary","arguments":{"month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"create_announcement","description":"회사 전체 공지를 작성합니다. \"내일 오후 2시 전사 회의 공지 올려\" 같은 명령에 사용하세요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"title":{"type":"string","description":"공지 제목 (60자 이내)"},"body":{"type":"string","description":"공지 본문 (markdown 또는 plain text)"},"pinned":{"type":"boolean","description":"상단 고정 여부 (기본 false)"}},"required":["title","body"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_announcement","arguments":{"title":"공지 제목","body":"예시 메모"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"clock_in","description":"본인 출근을 기록합니다. \"출근 찍어줘\", \"출근 처리\" 같은 명령에 사용하세요. NFC 없이 MCP 만으로 출근 처리.","permission":"attendance.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"note":{"type":"string","description":"메모 (선택, 예: \"외근\")"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"clock_in","arguments":{"note":"예시 메모"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"clock_out","description":"본인 퇴근을 기록합니다. \"퇴근 찍어줘\" 같은 명령에 사용하세요.","permission":"attendance.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"note":{"type":"string","description":"메모 (선택)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"clock_out","arguments":{"note":"예시 메모"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_my_attendance","description":"본인의 이번 주 출퇴근 기록을 조회합니다. \"내가 이번주 몇시간 일했어?\", \"내 출퇴근 보여줘\" 같은 질문에 사용하세요.","permission":"attendance.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"days":{"type":"number","description":"며칠치 (기본 7)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_attendance","arguments":{"days":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"request_leave","description":"본인의 휴가를 신청합니다. \"내일 연차 신청해줘\", \"다음주 월요일 반차\" 같은 명령에 사용하세요.","permission":"leave.request","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"start_date":{"type":"string","description":"시작일 YYYY-MM-DD"},"end_date":{"type":"string","description":"종료일 YYYY-MM-DD (생략하면 start_date 와 동일)"},"leave_type":{"type":"string","enum":["annual","half_morning","half_afternoon","quarter","staggered","sick","family_event","unpaid","maternity","paternity","public","other"],"description":"휴가 종류 (annual=연차, half_morning=오전반차, half_afternoon=오후반차, quarter=반반차, staggered=시간 단위 연차, sick=병가, family_event=경조사, unpaid=무급, maternity=출산휴가, paternity=배우자출산휴가, public=공가, other=기타. 기본 annual)"},"start_time":{"type":"string","description":"반반차·시간 단위 연차 시작 시각 HH:MM"},"hours":{"type":"number","description":"시간 단위 연차 시간(1~8시간)"},"reason":{"type":"string","description":"사유 (선택)"}},"required":["start_date"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"request_leave","arguments":{"start_date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_team_attendance","description":"본인 팀의 오늘 출퇴근 현황을 조회합니다. \"우리팀 오늘 누구 출근했어?\" 같은 질문에 사용하세요. 부서장 이상.","permission":"attendance.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"date":{"type":"string","description":"YYYY-MM-DD (생략하면 오늘 KST)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_team_attendance","arguments":{"date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_team_pending_leaves","description":"본인 팀의 승인 대기 휴가 신청 목록. \"우리팀 휴가 신청 누가 했어?\" 같은 질문에 사용하세요. 부서장 이상.","permission":"leave.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_team_pending_leaves","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_company_overtime_cost","description":"회사 전체의 연장근로/야간근로 시간 + 추정 야간수당 지급액. \"이번주 야근수당 얼마야?\", \"이번달 야간근로 수당 얼마야?\" 같은 질문에 사용하세요. 대표관리자 전용.","permission":"attendance.read","required_role":"owner","required_scope":"read","input_schema":{"type":"object","properties":{"start_date":{"type":"string","description":"YYYY-MM-DD"},"end_date":{"type":"string","description":"YYYY-MM-DD"},"hourly_rate":{"type":"number","description":"시간당 평균 임금(원) — 야간수당 1.5배 적용 (기본 12000)"}},"required":["start_date","end_date"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_company_overtime_cost","arguments":{"start_date":"2026-06-13","end_date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_company_expense_total","description":"회사 전체 경비 청구 총액 (기간/상태별). \"이번달 경비 얼마 청구됐어?\", \"이번주 결재된 경비\" 같은 질문에 사용하세요. 대표관리자 전용.","permission":"expense.read","required_role":"owner","required_scope":"read","input_schema":{"type":"object","properties":{"start_date":{"type":"string","description":"YYYY-MM-DD"},"end_date":{"type":"string","description":"YYYY-MM-DD"}},"required":["start_date","end_date"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_company_expense_total","arguments":{"start_date":"2026-06-13","end_date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_my_leave_balance","description":"본인의 연차 잔여일수를 조회합니다. \"내 휴가 며칠 남았어?\", \"연차 얼마 남음?\" 같은 질문에 사용.","permission":"leave.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"year":{"type":"number","description":"회계연도 (생략 시 올해)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_leave_balance","arguments":{"year":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_my_leaves","description":"본인이 신청한 휴가 목록을 조회합니다. \"내가 신청한 휴가 보여줘\", \"내 휴가 신청 상태\" 같은 질문에 사용.","permission":"leave.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["all","pending","approved","rejected","cancelled"],"description":"상태 필터 (기본 all)"},"year":{"type":"number","description":"연도 (생략 시 올해)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_leaves","arguments":{"status":"all","year":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"cancel_leave_request","description":"본인이 신청한 대기중(pending) 휴가를 취소합니다. \"어제 신청한 휴가 취소해줘\" 같은 명령에 사용.","permission":"leave.request","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"leave_id":{"type":"number","description":"휴가 신청 ID (query_my_leaves 로 먼저 조회)"}},"required":["leave_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"cancel_leave_request","arguments":{"leave_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"withdraw_approved_leave","description":"승인된 휴가의 철회를 시도합니다. ★2026-09-15 규칙 변경 이후 결재가 완료된 휴가는 시작 전이어도 결재를 받아야 취소되므로, 이 도구로는 처리되지 않고 앱·웹의 「취소 결재 요청」으로 안내합니다.★ 아직 결재가 끝나지 않은 신청의 취소는 앱·웹 휴가 화면에서 본인이 바로 할 수 있습니다.","permission":"leave.approve","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"leave_id":{"type":"number","description":"휴가 신청 ID"},"reason":{"type":"string","description":"철회 사유 (선택)"}},"required":["leave_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"withdraw_approved_leave","arguments":{"leave_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_leave_balance","description":"특정 직원의 연차 잔여일수를 조회합니다. \"이주영 휴가 며칠 남았어?\" 같은 질문에 사용. 부서장 이상.","permission":"leave.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id (예: \"이주영\" 또는 \"7\")"},"year":{"type":"number","description":"연도 (생략 시 올해)"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_leave_balance","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_company_leave_summary","description":"회사 전체의 휴가 사용 현황 요약 (부여/사용/잔여 총합 + 사용률). \"전사 휴가 사용률\", \"올해 연차 얼마나 썼어?\" 같은 질문에 사용. 인사 권한 필요.","permission":"leave.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"year":{"type":"number","description":"회계연도 (생략 시 올해)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_company_leave_summary","arguments":{"year":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_leaves_on_date","description":"특정 날짜에 휴가/휴무인 직원 목록. \"내일 누가 쉬어?\", \"오늘 휴무자\" 같은 질문에 사용. 부서장 이상.","permission":"leave.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"date":{"type":"string","description":"YYYY-MM-DD (생략 시 오늘)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_leaves_on_date","arguments":{"date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"submit_overtime_request","description":"연장(시간외) 근무를 사전 신청합니다. \"오늘 저녁 2시간 야근 신청\", \"내일 18시부터 21시까지 연장근무 신청\" 같은 명령에 사용. 주52시간 한도/임금 분쟁의 핵심 증거가 되는 사전 승인 기록입니다. 결재 대기(submitted)로 등록됩니다.","permission":"attendance.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"request_date":{"type":"string","description":"연장근무 날짜 YYYY-MM-DD (생략 시 오늘)"},"start_time":{"type":"string","description":"시작 시각 HH:MM (24시간, 예: \"18:00\")"},"end_time":{"type":"string","description":"종료 시각 HH:MM (24시간, 예: \"21:00\". 시작보다 빠르면 익일로 간주)"},"reason":{"type":"string","description":"연장근무 사유"}},"required":["start_time","end_time","reason"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"submit_overtime_request","arguments":{"start_time":"string","end_time":"string","reason":"예시 메모"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_my_work_hours","description":"본인의 이번달(또는 지정월) 총 근무시간/연장/야간을 조회합니다. \"이번달 내 근무시간?\", \"내가 몇시간 일했어?\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM (생략 시 이번달)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_work_hours","arguments":{"month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_my_overtime","description":"본인의 이번달 연장/야간 근로 시간을 조회합니다. \"이번달 내 야근 얼마야?\" 같은 질문에 사용.","permission":"attendance.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM (생략 시 이번달)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_overtime","arguments":{"month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_employee_work_hours","description":"특정 직원의 근무시간을 조회합니다. \"이주영 이번달 몇시간 일했어?\" 같은 질문에 사용. 부서장은 본인 팀원만, 인사 권한 필요은 전사.","permission":"employee.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"month":{"type":"string","description":"YYYY-MM (생략 시 이번달)"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_employee_work_hours","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_team_work_hours","description":"본인 팀 전체의 이번달 근무시간을 직원별로 정리합니다. \"우리팀 이번달 근로시간 정리해줘\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM (생략 시 이번달)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_team_work_hours","arguments":{"month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_team_overtime","description":"본인 팀의 야근 시간 순위 (기간 지정). \"우리팀 이번주 야근 누가 많아?\" 같은 질문에 사용. 부서장 이상.","permission":"attendance.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"start_date":{"type":"string","description":"YYYY-MM-DD (생략 시 이번주 월요일)"},"end_date":{"type":"string","description":"YYYY-MM-DD (생략 시 이번주 일요일)"},"top_n":{"type":"number","description":"상위 N명 (기본 10)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_team_overtime","arguments":{"start_date":"2026-06-13","end_date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_team_overtime_today","description":"오늘 야근(8시간 초과 또는 22시 이후 퇴근 안함) 중인 본인 팀원. \"금일 야근 중인 우리팀원 누구야?\" 같은 질문에 사용. 부서장 이상.","permission":"attendance.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_team_overtime_today","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_overtime_threshold_breach","description":"지정 기간 야근(연장) 시간이 임계값 초과한 직원. \"이번달 야근 30시간 넘은 사람?\" 같은 질문에 사용. 인사 권한 필요.","permission":"attendance.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM (생략 시 이번달)"},"threshold_hours":{"type":"number","description":"연장근로 임계값 시간 (기본 20)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_overtime_threshold_breach","arguments":{"month":"string","threshold_hours":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"check_52h_compliance","description":"주 52시간 근로제 준수 점검 — 이번주 총근로 52시간 초과(또는 임박) 직원. \"주52시간 위반 위험자 누구?\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"warn_hours":{"type":"number","description":"경고 임계값 시간 (기본 48 — 52 임박)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"check_52h_compliance","arguments":{"warn_hours":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"create_employment_contract","description":"근로계약서를 작성하여 직원에게 발송합니다. \"이주영 근로계약서 작성해서 보내줘\" 같은 명령에 사용. 인사 권한 필요. 직원이 앱에서 전자서명. 임금 조건은 근로조건 카드(급여 설정)에서 정한 값이 자동으로 실린다 — 이 도구는 그 값을 인자로 받지 않는다.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"title":{"type":"string","description":"계약서 제목 (예: \"2026년 정규직 근로계약서\")"},"body":{"type":"string","description":"계약 본문 (생략 시 표준 템플릿 자동 생성)"},"contract_type":{"type":"string","description":"보내지 않아도 된다 — 계약 유형은 직원의 고용형태(직원 설정)로 정해진다. 다른 유형을 보내면 거절된다."},"start_date":{"type":"string","description":"계약 시작일 YYYY-MM-DD"},"end_date":{"type":"string","description":"계약 종료일 (정규직은 생략)"},"position":{"type":"string","description":"직책"},"send":{"type":"boolean","description":"true 면 즉시 발송(sent), false 면 draft (기본 true)"}},"required":["worker","title","start_date"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_employment_contract","arguments":{"worker":"홍길동","title":"공지 제목","start_date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_my_contracts","description":"본인의 근로계약서 목록을 조회합니다. \"내 근로계약서 보여줘\", \"내 계약 만료일?\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_contracts","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_contract_expiry","description":"특정 직원의 근로계약 만료일을 조회합니다. \"박민수 계약 언제 끝나?\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_contract_expiry","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_expiring_contracts","description":"곧 만료되는 근로계약 목록. \"이번달 만료되는 계약 누구?\", \"30일 내 갱신 필요한 직원\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"within_days":{"type":"number","description":"며칠 이내 만료 (기본 30)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_expiring_contracts","arguments":{"within_days":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_contracts","description":"회사 근로계약 목록을 상태별로 조회합니다. \"서명 대기중 계약?\", \"발송한 계약서 현황\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["all","draft","sent","worker_signed","signed","rejected","canceled"],"description":"상태 필터 (기본 all)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_contracts","arguments":{"status":"all"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_my_payslip","description":"본인의 급여명세서를 조회합니다. \"이번달 내 급여 명세서\", \"5월 월급 얼마야?\" 같은 질문에 사용.","permission":"payroll.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"pay_period":{"type":"string","description":"YYYY-MM (생략 시 가장 최근)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_payslip","arguments":{"pay_period":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_company_payroll_total","description":"회사 전체 인건비(급여) 총합을 조회합니다. \"이번달 인건비 총합?\", \"5월 급여 총액\" 같은 질문에 사용. 대표관리자 전용.","permission":"company.read","required_role":"owner","required_scope":"read","input_schema":{"type":"object","properties":{"pay_period":{"type":"string","description":"YYYY-MM (생략 시 이번달)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_company_payroll_total","arguments":{"pay_period":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_payslips","description":"회사 급여명세서 목록을 조회합니다. \"5월 급여명세서 현황\", \"확정 안된 명세서?\" 같은 질문에 사용. 인사 권한 필요.","permission":"payroll.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"pay_period":{"type":"string","description":"YYYY-MM (생략 시 이번달)"},"status":{"type":"string","enum":["all","draft","finalized","paid","revised"],"description":"상태 필터 (기본 all)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_payslips","arguments":{"pay_period":"string","status":"all"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_headcount_by_department","description":"부서별 인원수 현황. \"부서별 인원 몇 명?\", \"조직 규모\" 같은 질문에 사용. 대표관리자 또는 인사 권한.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_headcount_by_department","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_new_hires","description":"신규 입사자 목록. \"이번달 신규 입사자?\", \"최근 입사한 사람\" 같은 질문에 사용. 대표관리자 또는 인사 권한.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM (생략 시 이번달)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_new_hires","arguments":{"month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_recent_resignations","description":"최근 퇴사자 목록. \"이번달 퇴사자 누구?\", \"퇴사한 사람\" 같은 질문에 사용. 대표관리자 또는 인사 권한.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM (생략 시 이번달)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_recent_resignations","arguments":{"month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_low_leave_users","description":"연차를 거의 안 쓴 직원 (사용촉진 대상). \"연차 안 쓴 사람 누구?\", \"휴가 촉진 대상\" 같은 질문에 사용. 대표관리자 또는 인사 권한.","permission":"leave.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"year":{"type":"number","description":"연도 (생략 시 올해)"},"max_used_days":{"type":"number","description":"사용일수 이하 기준 (기본 3)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_low_leave_users","arguments":{"year":1,"max_used_days":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_attendance_rate_today","description":"오늘 부서별 출근율. \"오늘 출근율?\", \"부서별 출근 현황\" 같은 질문에 사용. 대표관리자 또는 인사 권한.","permission":"attendance.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_attendance_rate_today","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_employee_profile","description":"직원 1명의 상세 프로필 (부서/직책/입사일/고용형태). \"이주영 정보 알려줘\", \"박민수 입사일?\" 같은 질문에 사용. 부서장 이상.","permission":"employee.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_employee_profile","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_org_chart","description":"회사 조직도(부서 트리)를 조회합니다. \"조직도 보여줘\", \"부서 구조\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_org_chart","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"update_employee_position","description":"직원의 직책/부서를 변경(승진/이동)합니다. \"이주영 부서장으로 승진\", \"박민수 개발팀으로 이동\" 같은 명령에 사용. 인사 권한 필요.","permission":"employee.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"position":{"type":"string","description":"새 직책 (선택)"},"department":{"type":"string","description":"새 부서 (선택)"},"role":{"type":"string","enum":["worker","manager"],"description":"권한 (선택, manager=부서장)"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"update_employee_position","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"process_resignation","description":"직원 퇴직 처리 (소속 상태를 resigned 로 변경 + 퇴사일 기록). \"박민수 6월 15일자 퇴사 처리\" 같은 명령에 사용. 인사 권한 필요. ⚠️ 신중히.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"last_day":{"type":"string","description":"퇴사일 YYYY-MM-DD"},"reason":{"type":"string","description":"사유 (선택)"}},"required":["worker","last_day"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"process_resignation","arguments":{"worker":"홍길동","last_day":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_announcements_unread","description":"읽지 않은 회사 공지 목록. \"새 공지 있어?\", \"안 읽은 공지\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_announcements_unread","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_announcements","description":"회사 공지 목록 (최근순). \"공지사항 보여줘\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"limit":{"type":"number","description":"개수 (기본 10)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_announcements","arguments":{"limit":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"mark_announcement_read","description":"공지를 읽음 처리합니다. \"그 공지 읽음 처리해\" 같은 명령에 사용.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"announcement_id":{"type":"number","description":"공지 ID"}},"required":["announcement_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"mark_announcement_read","arguments":{"announcement_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_my_expense_claims","description":"본인 경비 청구 목록. \"내 경비 정산 어떻게 됐어?\", \"이번달 경비 신청\" 같은 질문에 사용.","permission":"expense.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["all","draft","submitted","reviewing","approved","rejected","paid"],"description":"상태 (기본 all)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_expense_claims","arguments":{"status":"all"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"create_expense_claim","description":"이전 호환용 경비 청구 도구입니다. 새 제출은 결재 스냅샷을 안전하게 만드는 submit_expense 도구를 사용하세요.","permission":"expense.create","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"title":{"type":"string","description":"청구 제목 (예: \"5월 출장 교통비\")"},"amount":{"type":"number","description":"금액 (원)"},"occurred_on":{"type":"string","description":"지출일 YYYY-MM-DD (생략 시 오늘)"},"payment_method":{"type":"string","enum":["card_corp","card_personal","cash","bank_transfer","advance","other"],"description":"결제수단 (기본 card_corp)"},"vendor":{"type":"string","description":"거래처/사용처"},"description":{"type":"string","description":"상세 설명"}},"required":["title","amount"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_expense_claim","arguments":{"title":"공지 제목","amount":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_seals","description":"회사 등록 인감(도장) 목록. \"우리 회사 인감 뭐있어?\" 같은 질문에 사용.","permission":"approval.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_seals","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"request_seal_use","description":"인감 사용을 신청합니다. \"법인인감 계약서용으로 신청\" 같은 명령에 사용.","permission":"approval.create","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"seal_type":{"type":"string","enum":["personal","corporate"],"description":"인감 종류"},"document_name":{"type":"string","description":"날인 문서명"},"purpose":{"type":"string","description":"사용 목적"},"purpose_category":{"type":"string","enum":["contract","loan","government","realestate","employment","bid","internal","other"],"description":"목적 분류 (기본 other)"},"use_date":{"type":"string","description":"사용일 YYYY-MM-DD (생략 시 오늘)"},"seal_count":{"type":"number","description":"날인 횟수 (기본 1)"}},"required":["seal_type","document_name","purpose"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"request_seal_use","arguments":{"seal_type":"personal","document_name":"string","purpose":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"submit_business_trip","description":"출장/외근을 신청합니다. \"다음주 부산 출장 신청\", \"내일 고객사 방문 외근\" 같은 명령에 사용.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"trip_type":{"type":"string","enum":["domestic_day","domestic_overnight","overseas","field_work","client_visit"],"description":"출장 유형"},"destination":{"type":"string","description":"목적지"},"purpose":{"type":"string","description":"출장 목적"},"start_date":{"type":"string","description":"시작일 YYYY-MM-DD"},"end_date":{"type":"string","description":"종료일 YYYY-MM-DD (당일은 시작일과 동일)"},"estimated_cost":{"type":"number","description":"예상 비용 (원, 선택)"}},"required":["trip_type","destination","purpose","start_date"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"submit_business_trip","arguments":{"trip_type":"domestic_day","destination":"string","purpose":"string","start_date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_my_trips","description":"본인 출장 신청 목록. \"내 출장 신청 현황\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_trips","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"request_certificate","description":"재직증명서 등 제증명을 신청합니다. \"재직증명서 1부 신청\", \"경력증명서 발급해줘\" 같은 명령에 사용.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"cert_type":{"type":"string","enum":["employment","career","employment_en","career_en","appointment","dismissal","other"],"description":"증명서 종류 (employment=재직, career=경력)"},"copies":{"type":"number","description":"부수 (기본 1)"},"submit_to":{"type":"string","description":"제출처 (선택)"}},"required":["cert_type"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"request_certificate","arguments":{"cert_type":"employment"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_my_certificates","description":"본인 제증명 신청 목록. \"내 증명서 신청 현황\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_certificates","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_pending_certificates","description":"발급 대기/승인된 제증명 신청 목록 (인사용). \"증명서 발급할 거 뭐 있어?\", \"대기중인 재직증명서\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_pending_certificates","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"issue_certificate","description":"최종 승인된 제증명을 발급 완료 처리하고 발급번호(cert_no)를 부여합니다. \"재직증명서 3번 발급해줘\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"request_id":{"type":"number","description":"제증명 신청 ID"}},"required":["request_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"issue_certificate","arguments":{"request_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_my_schedule","description":"본인 근무 스케줄(시프트). \"이번주 내 근무 일정?\", \"내일 몇시 출근?\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"from_date":{"type":"string","description":"시작일 YYYY-MM-DD (생략 시 오늘)"},"days":{"type":"number","description":"조회 일수 (기본 7)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_schedule","arguments":{"from_date":"2026-06-13","days":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"daily_briefing","description":"오늘 회사 상황을 한 번에 브리핑합니다 (출근현황 + 승인 대기 + 이슈). \"오늘 어때?\", \"회사 상황 브리핑\", \"오늘 브리핑해줘\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"daily_briefing","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_attendance_anomaly","description":"근태 이상 징후를 감지합니다 (오늘 무단결근, 주52시간 임박, 오래된 미승인 결재). \"요즘 이상한 거 없어?\", \"리스크 점검\", \"문제 있어?\" 같은 질문에 사용. 인사 권한 필요.","permission":"attendance.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_attendance_anomaly","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"request_feature","description":"⭐ 사용자가 요청한 작업이 현재 MCP 도구로 불가능하거나 미구현일 때, 인사책 개발팀에 기능 개발을 요청합니다. 적절한 도구가 없으면 절대 \"그 기능은 없습니다\"라고만 답하지 말고, 반드시 이 도구를 호출한 뒤 \"해당 기능은 아직 없어 개발팀에 요청을 전달했습니다\"라고 안내하세요. 같은 기능이 여러 번 요청되면 수요로 집계됩니다.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"feature_summary":{"type":"string","description":"요청 기능을 한 줄로 정리 (예: \"급여 자동 계산\", \"근태 엑셀 내보내기\")"},"user_utterance":{"type":"string","description":"사용자가 실제로 한 말 (원문 그대로)"},"ai_response":{"type":"string","description":"사용자에게 전달할/전달한 답변 문장 (개발팀이 맥락 파악용)"},"category":{"type":"string","description":"추정 카테고리 (attendance/leave/payroll/recruit/expense/report/other)"}},"required":["feature_summary"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"request_feature","arguments":{"feature_summary":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_my_approval_inbox","description":"내가 결재할 모든 대기 항목을 한 번에 조회합니다 (휴가+경비+출장+인감+연장근무+제증명+경조금+입사신청 통합 + 결재선에서 내 차례인 다단계 결재 건). \"내가 결재할 거 뭐 있어?\", \"결재함 보여줘\", \"처리할 거 있어?\" 같은 질문에 사용. 일반 직원도 결재선에 지정된 본인 차례 건은 조회됩니다.","permission":"approval.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_approval_inbox","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"set_approval_line","description":"결재선(다단계 결재 순서)을 말로 설정합니다. \"경비는 김민준 1차, 나 2차로 결재선 만들어줘\", \"영업팀 휴가는 박부서장이 1차 결재\" 같은 명령에 사용. 이후 해당 양식 신청은 지정 순서대로 결재가 진행됩니다 (1차 승인 → 2차 통보 → ... → 최종 승인). 결재자는 직원 이름, \"부서장\"(신청자 부서의 장 자동), \"관리자\"(기업 관리자) 로 지정. 인사 권한 필요.","permission":"approval.create","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"form_type":{"type":"string","enum":["leave","overtime","business_trip","expense","seal","certificate","condolence","all"],"description":"적용 양식 (all=모든 양식)"},"approvers":{"type":"array","maxItems":3,"description":"결재 순서대로 1~3명. 각각 직원 이름(또는 worker_id), \"부서장\", \"관리자\" 중 하나","items":{"type":"string"}},"department":{"type":"string","description":"특정 부서에만 적용 (선택 — 생략 시 전 부서)"},"name":{"type":"string","description":"결재선 이름 (선택, 예: \"영업팀 휴가 결재선\")"}},"required":["form_type","approvers"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"set_approval_line","arguments":{"form_type":"leave","approvers":[]}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_approval_lines","description":"설정된 결재선 목록을 조회합니다. \"결재선 어떻게 돼있어?\", \"경비 결재 순서 보여줘\" 같은 질문에 사용. 부서장 이상.","permission":"approval.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_approval_lines","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_resources","description":"예약 가능한 사내 자원(회의실/차량/장비) 목록. \"회의실 뭐있어?\", \"예약 가능한 자원\" 같은 질문에 사용.","permission":"resource.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"resource_type":{"type":"string","description":"종류 필터 (room/vehicle/equipment_av 등, 선택)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_resources","arguments":{"resource_type":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"create_resource_reservation","description":"회의실/차량/장비를 예약합니다. \"내일 오후 2시 회의실B 예약\", \"금요일 사내차량 예약\" 같은 명령에 사용.","permission":"resource.reserve","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"resource":{"type":"string","description":"자원 이름 또는 코드 (예: \"회의실 B\", \"car-1\")"},"start_at":{"type":"string","description":"시작 일시 ISO (예: \"2026-05-30T14:00\")"},"end_at":{"type":"string","description":"종료 일시 ISO"},"purpose":{"type":"string","description":"사용 목적 (선택)"},"participant_count":{"type":"number","description":"참석 인원 (선택)"}},"required":["resource","start_at","end_at"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_resource_reservation","arguments":{"resource":"string","start_at":"string","end_at":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_my_reservations","description":"본인 자원 예약 목록. \"내 예약 뭐있어?\" 같은 질문에 사용.","permission":"resource.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_reservations","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"cancel_reservation","description":"본인 자원 예약을 취소합니다. \"회의실 예약 취소해줘\" 같은 명령에 사용.","permission":"resource.reserve","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"reservation_id":{"type":"number","description":"예약 ID"}},"required":["reservation_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"cancel_reservation","arguments":{"reservation_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"register_alert_rule","description":"능동 알림 규칙을 등록합니다. \"야근 50시간 넘으면 알려줘\", \"주52시간 임박하면 푸시\", \"계약 만료 30일 전 알림\" 같은 명령에 사용. 등록된 규칙은 인사책이 주기적으로 체크해 푸시 알림. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"rule_type":{"type":"string","enum":["overtime_threshold","weekly_52h_risk","attendance_missing","leave_pending_aging","contract_expiry","custom"],"description":"규칙 종류"},"threshold_value":{"type":"number","description":"임계값 (overtime=시간, contract_expiry=일수, leave_pending_aging=일수)"},"scope":{"type":"string","enum":["company","department","self"],"description":"범위 (기본 company)"},"scope_filter":{"type":"string","description":"부서명 등 (scope=department 시)"},"description":{"type":"string","description":"규칙 설명 (사람용)"}},"required":["rule_type"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"register_alert_rule","arguments":{"rule_type":"overtime_threshold"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_alert_rules","description":"등록된 알림 규칙 목록. \"알림 규칙 뭐있어?\", \"설정된 알림\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_alert_rules","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"deactivate_alert_rule","description":"알림 규칙을 비활성화합니다. \"그 알림 끄줘\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"rule_id":{"type":"number","description":"규칙 ID"}},"required":["rule_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"deactivate_alert_rule","arguments":{"rule_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"search_company","description":"사업자등록번호 또는 상호명으로 회사를 검색합니다. 가입 신청 전에 회사를 찾을 때 사용. \"ABC물산 찾아줘\", \"사업자번호 123-45-67890 회사\" 같은 질문에 사용. (가입 신청은 request_join_company) 회사 미소속도 사용 가능.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"query":{"type":"string","description":"사업자등록번호(123-45-67890) 또는 상호명"}},"required":["query"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_company","arguments":{"query":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"request_join_company","description":"특정 회사에 소속(입사) 가입을 신청합니다. \"ABC물산에 가입 신청해줘\", \"사업자번호 123-45-67890 회사에 입사 신청\" 같은 명령에 사용. 신청하면 그 회사 관리자가 승인해야 소속됩니다. 회사 미소속(신규 가입자)도 사용 가능.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"company":{"type":"string","description":"회사 ID, 사업자번호, 또는 상호명 (search_company 로 먼저 확인 권장)"},"department":{"type":"string","description":"희망 부서 (선택)"},"position":{"type":"string","description":"직책 (선택)"},"message":{"type":"string","description":"신청 메시지 (선택)"}},"required":["company"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"request_join_company","arguments":{"company":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_join_requests","description":"우리 회사에 들어온 가입(입사) 신청 목록을 조회합니다. \"가입 신청 누가 했어?\", \"입사 승인 대기자\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_join_requests","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"submit_resignation","description":"퇴직원(사직서)을 제출합니다. \"퇴직원 제출해줘, 마지막 근무일은 6월 30일\" 같은 명령에 사용. 관리자가 승인하면 퇴사 처리됩니다.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"last_day":{"type":"string","description":"희망 마지막 근무일 YYYY-MM-DD (필수)"},"reason":{"type":"string","description":"퇴직 사유 (선택, 예: \"개인 사정\", \"이직\")"}},"required":["last_day"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"submit_resignation","arguments":{"last_day":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"withdraw_resignation","description":"제출한 퇴직원을 철회합니다. \"퇴직원 취소해줘\" 에 사용. 아직 승인되지 않은 퇴직원만 철회 가능.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"withdraw_resignation","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_resignation_requests","description":"우리 회사에 제출된 퇴직원 목록을 조회합니다. \"퇴직원 들어온 거 있어?\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending","approved","rejected","all"],"description":"상태 필터 (기본 pending)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_resignation_requests","arguments":{"status":"pending"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"add_employee","description":"직원을 회사에 직접 등록합니다. \"박영희 010-1234-5678 영업팀 대리로 등록해줘\" 같은 명령에 사용. 이미 인사책 회원이면 즉시 소속 연결, 아니면 계정을 만들어 연결합니다 (직원이 나중에 카카오/네이버 로그인 시 같은 전화번호로 본인 계정 인증). 인사 권한 필요.","permission":"employee.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"직원 이름 (필수)"},"phone":{"type":"string","description":"휴대폰 번호 010-XXXX-XXXX (필수 — 계정 매칭 키)"},"email":{"type":"string","description":"이메일 (선택)"},"department":{"type":"string","description":"부서 (선택)"},"position":{"type":"string","description":"직책 (선택)"},"joined_at":{"type":"string","description":"입사일 YYYY-MM-DD (선택 — 비우면 입사일 미입력으로 남습니다. 등록일을 넣지 않습니다)"},"rehire_choice":{"type":"string","enum":["inherit","new"],"description":"이 회사 퇴사자 재입사일 때만 — inherit=근속 이어받기(직전 입사일부터) · new=신규(오늘부터). 이력이 있는데 비우면 도구가 되묻는다(기본값 없음). 재입사면 입사일은 이 값이 정한다"}},"required":["name","phone"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"add_employee","arguments":{"name":"string","phone":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"export_attendance_csv","description":"근태(출퇴근) 데이터를 CSV로 내보냅니다. \"이번달 근태 다운로드\", \"출퇴근 기록 엑셀로 줘\" 같은 명령에 사용. 결과 CSV를 파일로 저장하면 됩니다. 부서장 이상.","permission":"attendance.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM (생략 시 이번달)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"export_attendance_csv","arguments":{"month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"export_payroll_csv","description":"급여명세서 데이터를 CSV로 내보냅니다. \"이번달 급여 다운로드\", \"급여대장 엑셀\" 같은 명령에 사용. 인사 권한 필요.","permission":"payroll.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"pay_period":{"type":"string","description":"YYYY-MM (생략 시 이번달)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"export_payroll_csv","arguments":{"pay_period":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"export_employees_csv","description":"직원 명단을 CSV로 내보냅니다. \"직원 명단 다운로드\", \"직원 리스트 엑셀로\" 같은 명령에 사용. 인사 권한 필요.","permission":"employee.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"department":{"type":"string","description":"부서 필터 (선택)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"export_employees_csv","arguments":{"department":"영업팀"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"grant_advisor_access","description":"외부 노무사/세무사에게 우리 회사 데이터 접근 권한을 부여합니다. 노무사가 알려준 토큰 prefix(ic_pat_xxxx)로 연결. \"최노무사한테 우리 회사 권한 줘\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"advisor_token_prefix":{"type":"string","description":"노무사 PAT 의 prefix (예: ic_pat_a3f9). 노무사가 본인 토큰 앞부분을 알려줌"},"advisor_role":{"type":"string","enum":["hr_manager","owner"],"description":"노무사에게 줄 권한 (기본 hr_manager)"},"label":{"type":"string","description":"노무사용 회사 별칭 (선택)"}},"required":["advisor_token_prefix"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"grant_advisor_access","arguments":{"advisor_token_prefix":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"list_advisor_access","description":"우리 회사 데이터에 접근 권한이 걸린 외부 노무사/세무사 링크 목록을 봅니다(회수할 링크 번호 확인용). \"노무사 권한 누구한테 줬어?\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"include_revoked":{"type":"boolean","description":"회수된 링크도 함께 볼지(기본 false)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_advisor_access","arguments":{"include_revoked":true}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"revoke_advisor_access","description":"외부 노무사/세무사의 우리 회사 접근 권한을 회수합니다. list_advisor_access 의 link_id 로 지정. \"최노무사 권한 빼줘\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"link_id":{"type":"number","description":"회수할 링크 번호 (list_advisor_access 로 확인)"}},"required":["link_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"revoke_advisor_access","arguments":{"link_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_advisor_companies","description":"(노무사 전용) 내가 접근 가능한 고객사 목록을 조회합니다. \"내 고객사 뭐있어?\", \"관리하는 회사 목록\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_advisor_companies","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"advisor_company_briefing","description":"(노무사 전용) 특정 고객사의 오늘 상황을 브리핑합니다. \"A사 오늘 어때?\", \"ABC물산 52시간 위반 있어?\" 같은 질문에 사용. query_advisor_companies 의 enterprise_id 로 호출.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"enterprise_id":{"type":"number","description":"고객사 ID (query_advisor_companies 로 확인)"}},"required":["enterprise_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"advisor_company_briefing","arguments":{"enterprise_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"create_department","description":"새 부서/본부/팀을 조직도에 추가합니다. \"사업본부 밑에 해외영업팀 만들어\", \"마케팅 본부 신설\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"부서명 (예: \"해외영업팀\")"},"parent":{"type":"string","description":"상위 부서 이름/ID (생략 시 최상위). 예: \"사업본부\""},"kind":{"type":"string","enum":["group","division","department","team","executive_office"],"description":"종류: group(그룹)/division(본부)/department(부서)/team(팀)/executive_office(임원실). 생략 시 이름으로 추정"}},"required":["name"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_department","arguments":{"name":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"rename_department","description":"부서 이름을 변경합니다. \"마케팅팀을 그로스팀으로 바꿔\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"department":{"type":"string","description":"현재 부서 이름/ID"},"new_name":{"type":"string","description":"새 이름"}},"required":["department","new_name"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"rename_department","arguments":{"department":"영업팀","new_name":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"move_department","description":"부서를 다른 상위 부서 밑으로 이동합니다. \"인사팀을 경영지원본부 밑으로 옮겨\", \"영업팀 최상위로\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"department":{"type":"string","description":"이동할 부서 이름/ID"},"new_parent":{"type":"string","description":"새 상위 부서 이름/ID (최상위로 빼려면 \"root\" 또는 \"최상위\")"}},"required":["department","new_parent"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"move_department","arguments":{"department":"영업팀","new_parent":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"archive_department","description":"부서를 폐지(보관)합니다. \"영업팀 없애줘\" 같은 명령에 사용. 하위 부서가 있으면 먼저 정리해야 합니다. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"department":{"type":"string","description":"폐지할 부서 이름/ID"}},"required":["department"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"archive_department","arguments":{"department":"영업팀"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"assign_department_head","description":"부서장을 임명합니다. \"이주영을 영업부서장으로\", \"박철수를 경영지원본부장으로\" 같은 명령에 사용. 공동 부서장(\"김OO도 영업부서장으로\", \"두 명이 공동 부서장\")은 mode:\"add\". 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"department":{"type":"string","description":"부서 이름/ID"},"worker":{"type":"string","description":"부서장 직원 이름/ID"},"mode":{"type":"string","enum":["replace","add"],"description":"replace(기본): 기존 부서장을 교체합니다. add: 기존 부서장을 유지한 채 공동 부서장으로 추가합니다 — '~도 팀장으로', '공동 대표' 요청에만 사용."},"reason":{"type":"string","description":"변경 사유 (선택). 위임받은 관리자의 결재 기안 사유로 기록됩니다."}},"required":["department","worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"assign_department_head","arguments":{"department":"영업팀","worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"assign_worker_to_department","description":"직원을 특정 부서에 배치(이동)합니다. \"박철수 인사팀으로 배치\", \"김영희 영업팀으로 옮겨\" 같은 명령에 사용. 인사 권한 필요. (한 직원은 한 부서 — 매트릭스 조직 미지원)","permission":"employee.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름/ID"},"department":{"type":"string","description":"배치할 부서 이름/ID"}},"required":["worker","department"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"assign_worker_to_department","arguments":{"worker":"홍길동","department":"영업팀"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_my_kpi_goals","description":"본인의 성과목표(KPI/OKR)와 진척률을 조회합니다. \"내 목표 뭐 있어?\", \"이번 분기 KPI 진척률\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"cycle":{"type":"string","description":"주기 라벨 (예: \"2026-Q1\". 생략 시 진행중 전체)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_kpi_goals","arguments":{"cycle":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"update_kpi_progress","description":"본인 성과목표의 진척률/현재지표/자기평가를 업데이트합니다. \"신규고객 목표 70%로 갱신\", \"자기평가 4점\" 같은 명령에 사용.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"goal_id":{"type":"number","description":"목표 ID (query_my_kpi_goals 로 조회)"},"progress_pct":{"type":"number","description":"진척률 0-100 (선택)"},"current_metric":{"type":"string","description":"현재 지표 자유 텍스트 (선택)"},"self_rating":{"type":"number","description":"자기평가 1-5 (선택)"},"self_comment":{"type":"string","description":"자기평가 코멘트 (선택)"}},"required":["goal_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"update_kpi_progress","arguments":{"goal_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"create_kpi_goal","description":"팀원에게 성과목표(KPI/OKR)를 부여합니다. \"이주영한테 2026-Q3 신규고객 50사 목표 줘\" 같은 명령에 사용. 부서장은 웹 부서장 화면과 같은 부서 관리 권한으로 본인 부서원만(본인 제외) · 성과 관리 권한 관리자는 회사 전체.","permission":"admin.write","required_role":"dept_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"대상 직원 이름 또는 worker_id"},"title":{"type":"string","description":"목표 제목 (예: \"신규 고객 50사 확보\")"},"cycle_label":{"type":"string","description":"주기 라벨 (예: \"2026-Q3\", \"2026-H2\", \"2026\")"},"cycle_start":{"type":"string","description":"시작일 YYYY-MM-DD (생략 시 오늘)"},"cycle_end":{"type":"string","description":"종료일 YYYY-MM-DD"},"target_metric":{"type":"string","description":"목표 지표 (예: \"신규 고객 수: 50사\")"},"weight":{"type":"number","description":"가중치 1-100 (기본 100)"},"description":{"type":"string","description":"상세 설명 (선택)"}},"required":["worker","title","cycle_label"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_kpi_goal","arguments":{"worker":"홍길동","title":"공지 제목","cycle_label":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"review_kpi_goal","description":"성과목표를 평가(리뷰)합니다 — 관리자 점수 + 코멘트. \"이주영 Q2 목표 4점, 잘했음\" 같은 명령에 사용. 웹 관리자 「성과관리」와 같은 성과 관리 권한이 필요하며 본인 목표·중단된 목표는 평가할 수 없습니다.","permission":"admin.write","required_role":"dept_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"goal_id":{"type":"number","description":"목표 ID"},"manager_rating":{"type":"number","description":"매니저 평가 1-5"},"manager_comment":{"type":"string","description":"평가 코멘트"}},"required":["goal_id","manager_rating"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"review_kpi_goal","arguments":{"goal_id":1,"manager_rating":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_team_kpi_goals","description":"본인 팀(또는 특정 직원)의 성과목표 현황을 조회합니다. \"우리팀 이번 분기 목표 현황\", \"팀 KPI 진척률\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"cycle":{"type":"string","description":"주기 라벨 (선택)"},"worker":{"type":"string","description":"특정 직원 이름/ID (선택 — 생략 시 팀 전체)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_team_kpi_goals","arguments":{"cycle":"string","worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_shift_templates","description":"회사 시프트(근무조) 템플릿 목록. \"우리 회사 근무조 뭐 있어?\", \"교대 시간대 알려줘\" 같은 질문에 사용.","permission":"attendance.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_shift_templates","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"create_shift_template","description":"시프트(근무조) 템플릿을 만듭니다. \"주간조 09시~18시 만들어\", \"야간조 22시~06시 추가\" 같은 명령에 사용. 인사 권한 필요.","permission":"attendance.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"근무조 이름 (예: \"주간\", \"야간\", \"오전파트\")"},"start_time":{"type":"string","description":"시작 HH:MM"},"end_time":{"type":"string","description":"종료 HH:MM"},"break_minutes":{"type":"number","description":"휴게시간(분, 기본 60)"},"group_kind":{"type":"string","enum":["직원용","파트용"],"description":"팔레트 구분. 생략하면 양쪽 모두에 보입니다."},"break_start_time":{"type":"string","description":"휴게 시작 HH:MM (종료와 ★함께★ 보내야 합니다)"},"break_end_time":{"type":"string","description":"휴게 종료 HH:MM. 분을 따로 안 보내면 이 시각에서 무급 휴게를 파생합니다."},"end_day_offset":{"type":"number","enum":[0,1],"description":"종료가 다음날인가. 생략하면 시각으로 추정(종료<=시작이면 다음날)."},"duty_kind":{"type":"string","enum":["당직","대기"],"description":"당직·대기 표식 — ★표시만★ 이고 급여 분기는 없습니다."}},"required":["name","start_time","end_time"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_shift_template","arguments":{"name":"string","start_time":"string","end_time":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"assign_shift","description":"직원에게 특정 날짜 시프트를 배정합니다. \"이주영 내일 야간조 배정\", \"8월 1일 김철수 휴무\" 같은 명령에 사용. 워커당 하루 1개(재배정 시 덮어쓰기). 부서장은 본인 팀원만.","permission":"attendance.write","required_role":"dept_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"work_date":{"type":"string","description":"근무일 YYYY-MM-DD"},"shift_template_id":{"type":"number","description":"시프트 템플릿 ID (query_shift_templates). 직접 시간 지정 시 생략"},"start_time":{"type":"string","description":"직접 시작 HH:MM (템플릿 미사용 시)"},"end_time":{"type":"string","description":"직접 종료 HH:MM"},"status":{"type":"string","enum":["scheduled","off","holiday","sick_leave"],"description":"상태 (기본 scheduled, off=휴무)"}},"required":["worker","work_date"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"assign_shift","arguments":{"worker":"홍길동","work_date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_team_shifts","description":"본인 팀의 기간별 근무 스케줄. \"이번주 우리팀 시프트\", \"8월 1일 누가 야간이야?\" 같은 질문에 사용. 부서장 이상.","permission":"attendance.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"from_date":{"type":"string","description":"시작일 YYYY-MM-DD (생략 시 오늘)"},"days":{"type":"number","description":"조회 일수 (기본 7)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_team_shifts","arguments":{"from_date":"2026-06-13","days":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_corporate_vehicles","description":"법인 차량 목록. \"우리 회사 법인차 뭐 있어?\", \"차량 목록\" 같은 질문에 사용.","permission":"resource.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_corporate_vehicles","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"register_corporate_vehicle","description":"법인 차량을 등록합니다. \"법인차 12가1234 아반떼 등록\" 같은 명령에 사용. 인사 권한 필요.","permission":"resource.reserve","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"plate_number":{"type":"string","description":"차량번호 (예: \"12가1234\")"},"vehicle_model":{"type":"string","description":"차종 (예: \"아반떼 CN7\")"},"vehicle_type":{"type":"string","enum":["passenger","suv","van","truck","motorcycle","other"],"description":"차량 구분 (기본 passenger)"},"department":{"type":"string","description":"사용 부서 (선택)"}},"required":["plate_number"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"register_corporate_vehicle","arguments":{"plate_number":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"log_vehicle_trip","description":"차량 운행일지를 기록합니다. \"법인차 1번 본사→강남 거래처 30km 운행\" 같은 명령에 사용. 누적 주행거리가 자동 합산됩니다.","permission":"resource.reserve","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"vehicle_id":{"type":"number","description":"차량 ID (query_corporate_vehicles)"},"departure":{"type":"string","description":"출발지 (예: \"본사\")"},"destination":{"type":"string","description":"도착지 (예: \"강남 거래처\")"},"distance_km":{"type":"number","description":"주행거리 km (odometer 대신 직접 입력 가능)"},"start_odometer":{"type":"number","description":"출발 누적거리 km (distance_km 가 없으면 도착과 함께 필수)"},"end_odometer":{"type":"number","description":"도착 누적거리 km (distance_km 가 없으면 출발과 함께 필수)"},"purpose":{"type":"string","enum":["business","commute","sales","delivery","maintenance","other"],"description":"운행 목적 (기본 business)"},"log_date":{"type":"string","description":"운행일 YYYY-MM-DD (생략 시 오늘)"}},"required":["vehicle_id","departure","destination"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"log_vehicle_trip","arguments":{"vehicle_id":1,"departure":"string","destination":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_vehicle_logs","description":"차량 운행일지 조회 (차량 지정 또는 최근). \"법인차 1번 운행기록\", \"이번달 운행일지\" 같은 질문에 사용. 부서장 이상.","permission":"resource.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"vehicle_id":{"type":"number","description":"차량 ID (선택)"},"limit":{"type":"number","description":"개수 (기본 20)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_vehicle_logs","arguments":{"vehicle_id":1,"limit":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_corporate_cards","description":"법인 카드 목록. \"법인카드 뭐 있어?\" 같은 질문에 사용. 인사 권한 필요.","permission":"expense.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_corporate_cards","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"register_corporate_card","description":"법인 카드를 등록합니다. \"신한카드 끝자리 5678 영업팀카드 등록\" 같은 명령에 사용. 인사 권한 필요.","permission":"expense.create","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"card_company":{"type":"string","description":"카드사 (예: \"신한카드\")"},"card_number_masked":{"type":"string","description":"마스킹 카드번호 (예: \"1234-****-****-5678\")"},"card_alias":{"type":"string","description":"별칭 (예: \"영업팀 1번 카드\")"},"card_type":{"type":"string","enum":["credit","debit","prepaid","virtual"],"description":"카드 종류 (기본 credit)"},"department":{"type":"string","description":"사용 부서 (선택)"}},"required":["card_company","card_number_masked"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"register_corporate_card","arguments":{"card_company":"string","card_number_masked":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"log_card_usage","description":"법인카드 사용내역을 기록합니다. \"법인카드 2번 스타벅스 12000원\", \"어제 거래처 점심 5만원 카드\" 같은 명령에 사용. 누적 사용액이 자동 합산됩니다.","permission":"expense.create","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"card_id":{"type":"number","description":"카드 ID (query_corporate_cards)"},"amount":{"type":"number","description":"금액 (원)"},"merchant_name":{"type":"string","description":"가맹점명"},"used_at":{"type":"string","description":"사용일시 YYYY-MM-DD 또는 YYYY-MM-DD HH:MM (생략 시 지금)"},"category":{"type":"string","description":"비용 카테고리 (선택)"},"description":{"type":"string","description":"메모 (선택)"}},"required":["card_id","amount","merchant_name"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"log_card_usage","arguments":{"card_id":1,"amount":1,"merchant_name":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_card_usages","description":"법인카드 사용내역 조회 (카드 지정 또는 최근). \"법인카드 2번 사용내역\", \"이번달 법인카드 지출\" 같은 질문에 사용. 인사 권한 필요.","permission":"expense.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"card_id":{"type":"number","description":"카드 ID (선택)"},"limit":{"type":"number","description":"개수 (기본 20)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_card_usages","arguments":{"card_id":1,"limit":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_leave_policy","description":"회사 연차/휴가 정책 (기본 부여일수, 회계연도 시작, 반차/반반차 지원 등). \"우리 회사 연차 정책 어떻게 돼?\", \"연차 며칠부터 시작?\" 같은 질문에 사용. 인사 권한 필요.","permission":"leave.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_leave_policy","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_hr_permissions","description":"특정 직원의 인사 권한 설정 현황 (회사/부서 관리, 조회 권한, 카테고리 권한). \"이주영 권한 뭐 있어?\", \"박철수 인사카드 볼 수 있어?\" 같은 질문에 사용. 대표(owner) 전용.","permission":"employee.read","required_role":"owner","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_hr_permissions","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_worksites","description":"회사 사업장(본사/지점/공장/매장/물류/해외법인/대리점) 목록과 인원·GPS·지역을 조회합니다. \"우리 회사 사업장 어디어디 있어?\", \"지점 목록\", \"사업장별 인원\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_worksites","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"create_worksite","description":"사업장(본사/지점/공장/매장/해외법인/대리점 등)을 추가합니다. \"강남지점 만들어\", \"부산공장 등록\", \"베트남법인 사업장 추가\" 같은 명령에 사용. GPS 좌표·반경을 주면 그 사업장의 출퇴근 인증 범위가 됩니다. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"사업장명 (예: \"강남지점\")"},"site_type":{"type":"string","enum":["hq","branch","factory","store","warehouse","overseas","agency","office"],"description":"hq=본사, branch=지점, factory=공장, store=매장, warehouse=물류, overseas=해외법인, agency=대리점, office=일반(기본)"},"address":{"type":"string","description":"주소 (선택)"},"lat":{"type":"number","description":"위도 (출퇴근 GPS, 선택)"},"lng":{"type":"number","description":"경도 (선택)"},"radius_m":{"type":"number","description":"허용 반경 m (기본 200)"},"region":{"type":"string","description":"지역명 (예: \"수도권\",\"영남\" — 지역매니저 묶음용, 선택)"},"timezone":{"type":"string","description":"타임존 (해외 예: \"Asia/Ho_Chi_Minh\", 기본 Asia/Seoul)"},"country":{"type":"string","description":"국가코드 (기본 KR)"},"biz_reg_no":{"type":"string","description":"사업장 사업자등록번호 (5인미만 법적용 단위, 선택)"}},"required":["name"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_worksite","arguments":{"name":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"update_worksite","description":"사업장 정보(GPS/종류/지역/타임존/반경/활성)를 수정합니다. \"강남지점 반경 200미터로\", \"부산공장 GPS 갱신\", \"제주점 폐쇄\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worksite":{"type":"string","description":"사업장 이름 또는 ID"},"name":{"type":"string"},"site_type":{"type":"string","enum":["hq","branch","factory","store","warehouse","overseas","agency","office"]},"address":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"radius_m":{"type":"number"},"region":{"type":"string"},"timezone":{"type":"string"},"biz_reg_no":{"type":"string"},"active":{"type":"boolean","description":"false 면 비활성(폐쇄) 처리"}},"required":["worksite"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"update_worksite","arguments":{"worksite":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"assign_worker_to_worksite","description":"직원을 특정 사업장(지점/공장/매장)에 배치합니다. \"이주영 강남지점으로\", \"박철수 부산공장 배치\" 같은 명령에 사용. 발령 이력이 남습니다. 인사 권한 필요.","permission":"employee.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"affiliation_id":{"type":"number","description":"겸직 중 변경할 정확한 활성 소속 ID (생략 시 주속)"},"worksite":{"type":"string","description":"사업장 이름 또는 ID"},"effective_date":{"type":"string","description":"효력일 YYYY-MM-DD (생략 시 오늘)"}},"required":["worker","worksite"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"assign_worker_to_worksite","arguments":{"worker":"홍길동","worksite":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"transfer_worker","description":"인사발령 — 부서/사업장/직책을 한 번에 변경하고 발령 이력을 남깁니다 (기존 이력 덮어쓰지 않음). \"이주영 영업2팀 부서장으로 승진발령\", \"김철수 부산지점 발령\", \"한미녀 인사팀으로 전보\" 같은 명령에 사용. 인사 권한 필요.","permission":"employee.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"affiliation_id":{"type":"number","description":"겸직 중 발령할 정확한 활성 소속 ID (생략 시 주속)"},"to_department":{"type":"string","description":"발령 부서명 (선택)"},"to_worksite":{"type":"string","description":"발령 사업장 이름/ID (선택)"},"to_position":{"type":"string","description":"발령 직책 (선택)"},"change_type":{"type":"string","enum":["transfer","promotion","demotion","dept_change","office_change","title_change","secondment"],"description":"발령 종류 (기본 transfer)"},"effective_date":{"type":"string","description":"효력일 YYYY-MM-DD (생략 시 오늘)"},"reason":{"type":"string","description":"발령 사유 (선택)"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"transfer_worker","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_assignment_history","description":"직원의 인사발령 이력(입사/전보/승진/사업장이동/휴직/복직)을 시간순으로 조회합니다. \"이주영 발령 이력\", \"박철수 인사 변동 내역\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string"},"limit":{"type":"number","description":"개수 (기본 20)"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_assignment_history","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_worksite_headcount","description":"사업장별 재직 인원 현황 + 미배치 인원. \"지점별 인원 몇 명?\", \"사업장별 헤드카운트\", \"강남지점 몇 명?\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_worksite_headcount","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"put_worker_on_leave","description":"직원을 휴직/산재/파견/정직 등 상태로 전환합니다. \"이주영 육아휴직 처리 3개월\", \"박철수 산재 휴직\", \"김부장 베트남 파견\" 같은 명령에 사용. 재직(퇴사 아님)을 유지하면서 상태만 표시 — 헤드카운트·평균임금 근거 보존. 인사 권한 필요.","permission":"leave.request","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"state":{"type":"string","enum":["on_leave","parental_leave","sick_leave","injured","seconded","suspended","military"],"description":"on_leave=일반휴직, parental_leave=육아휴직, sick_leave=병가휴직, injured=산재, seconded=파견, suspended=정직, military=병역"},"from_date":{"type":"string","description":"시작일 YYYY-MM-DD (생략 시 오늘)"},"to_date":{"type":"string","description":"복직(종료) 예정일 YYYY-MM-DD (선택)"},"note":{"type":"string","description":"사유/비고 (선택)"}},"required":["worker","state"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"put_worker_on_leave","arguments":{"worker":"홍길동","state":"on_leave"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"return_worker_from_leave","description":"휴직/파견 중인 직원을 복직 처리합니다. \"이주영 복직\", \"박철수 산재 복귀\" 같은 명령에 사용. 인사 권한 필요.","permission":"leave.request","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string"},"return_date":{"type":"string","description":"복직일 YYYY-MM-DD (생략 시 오늘)"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"return_worker_from_leave","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_workers_on_leave","description":"현재 휴직/산재/파견/정직 중인 직원 목록. \"지금 휴직자 누구야?\", \"육아휴직 중인 사람\", \"파견 나간 직원\" 같은 질문에 사용. 부서장 이상(부서장은 본인 부서).","permission":"leave.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"state":{"type":"string","enum":["on_leave","parental_leave","sick_leave","injured","seconded","suspended","military"],"description":"특정 상태만 필터 (선택)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_workers_on_leave","arguments":{"state":"on_leave"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"add_concurrent_assignment","description":"겸직/매트릭스 배정 — 직원에게 주소속 외 추가 소속(부서/사업장/프로젝트)을 부여합니다. \"이주영을 신사업TF에도 겸직\", \"박철수 영업팀+마케팅팀 동시소속\" 같은 명령에 사용. 주소속은 유지되고 부소속이 추가됩니다. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"department":{"type":"string","description":"겸직 부서명"},"worksite":{"type":"string","description":"겸직 사업장 이름/ID (선택)"},"position":{"type":"string","description":"겸직 직책 (선택)"},"assignment_type":{"type":"string","enum":["concurrent","project","secondment","dispatch","temporary"],"description":"concurrent=겸직(기본), project=프로젝트, secondment=파견, dispatch=파견근무, temporary=임시"}},"required":["worker","department"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"add_concurrent_assignment","arguments":{"worker":"홍길동","department":"영업팀"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_worker_assignments","description":"한 직원의 모든 소속(주소속 + 겸직/매트릭스 부소속)을 조회합니다. \"이주영 어디어디 소속이야?\", \"박철수 겸직 현황\" 같은 질문에 사용. 부서장 이상.","permission":"employee.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_worker_assignments","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"end_concurrent_assignment","description":"겸직/매트릭스 부소속을 종료합니다. \"이주영 신사업TF 겸직 해제\" 같은 명령에 사용. query_worker_assignments 의 assignment_id 로 호출(주소속은 해제 불가). 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"assignment_id":{"type":"number","description":"query_worker_assignments 의 부소속 affiliation id"}},"required":["assignment_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"end_concurrent_assignment","arguments":{"assignment_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_projects","description":"회사 프로젝트 목록(상태·기간·PM·예산). \"진행중인 프로젝트 뭐 있어?\", \"프로젝트 현황\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["all","active","paused","closed","archived"],"description":"상태 필터 (기본 active)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_projects","arguments":{"status":"all"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"create_project","description":"프로젝트를 생성합니다. \"OO고객사 차세대시스템 프로젝트 만들어 PRJ-2026-007 코드로\" 같은 명령에 사용. 웹 「경비 → 프로젝트」와 같은 경비 관리 권한이 필요합니다.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"프로젝트명"},"code":{"type":"string","description":"고유 코드 (예: \"PRJ-2026-007\", 생략 시 자동)"},"client_name":{"type":"string","description":"고객사/거래처 (선택)"},"pm_name":{"type":"string","description":"PM 이름 (선택)"},"start_date":{"type":"string","description":"시작일 YYYY-MM-DD (선택)"},"end_date":{"type":"string","description":"종료예정일 (선택)"},"budget_total":{"type":"number","description":"총 예산 원 (선택)"}},"required":["name"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_project","arguments":{"name":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"update_project","description":"프로젝트 상태/기간/예산을 수정합니다. \"차세대 프로젝트 종료처리\", \"OO프로젝트 예산 5천만원으로\" 같은 명령에 사용. 웹 「경비 → 프로젝트」와 같은 경비 관리 권한이 필요합니다.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"project":{"type":"string","description":"프로젝트 이름/코드/ID"},"status":{"type":"string","enum":["active","paused","closed","archived"]},"end_date":{"type":"string"},"budget_total":{"type":"number"},"pm_name":{"type":"string"},"memo":{"type":"string"}},"required":["project"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"update_project","arguments":{"project":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"assign_project_member","description":"직원을 프로젝트에 투입합니다(투입률 %). \"이주영 차세대프로젝트 50% 투입 PL로\", \"박철수 OO프로젝트 전담\" 같은 명령에 사용. 부서장 이상.","permission":"admin.write","required_role":"dept_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름/ID"},"project":{"type":"string","description":"프로젝트 이름/코드/ID"},"allocation_pct":{"type":"number","description":"투입률 % (1~100, 기본 100)"},"role_in_project":{"type":"string","description":"프로젝트 역할 (PM/PL/개발 등, 선택)"},"start_date":{"type":"string","description":"투입 시작일 (선택)"},"end_date":{"type":"string","description":"투입 종료일 (선택)"}},"required":["worker","project"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"assign_project_member","arguments":{"worker":"홍길동","project":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"release_project_member","description":"프로젝트 투입을 종료(철수)합니다. \"이주영 차세대프로젝트에서 빼줘\" 같은 명령에 사용. query_project_members 의 member_id 로 호출. 부서장 이상.","permission":"admin.write","required_role":"dept_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"member_id":{"type":"number"}},"required":["member_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"release_project_member","arguments":{"member_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_project_members","description":"프로젝트 투입 인력과 투입률. \"차세대프로젝트 누가 투입됐어?\", \"OO프로젝트 인력\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"project":{"type":"string"}},"required":["project"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_project_members","arguments":{"project":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_my_projects","description":"본인이 투입된 프로젝트 목록. \"내가 어떤 프로젝트에 있어?\", \"내 투입 현황\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_projects","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_worker_allocation","description":"특정 직원의 프로젝트 투입률 합계(과투입 점검 — 합계 100% 초과 경고). \"이주영 투입률 괜찮아?\", \"박철수 몇 프로젝트 뛰어?\" 같은 질문에 사용. 부서장 이상.","permission":"employee.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_worker_allocation","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"register_external_party","description":"비직원 협력관계(가맹점주/대리점/위탁/파견사/프리랜서/협력사)를 등록합니다. \"강남가맹점 점주 김사장 등록\", \"OO파견사 등록\" 같은 명령에 사용. 근로자(직원)가 아닌 외부 관계를 별도 관리 — 근로계약/4대보험 전제 없음. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"상호/이름 (예: \"강남점 김철수\", \"OO인력파견\")"},"party_type":{"type":"string","enum":["franchisee","agency","contractor","dispatch_agency","freelancer","vendor","partner","other"],"description":"franchisee=가맹점주, agency=대리점, contractor=도급/위탁, dispatch_agency=파견사, freelancer=프리랜서, vendor=거래처, partner=협력사"},"contact_name":{"type":"string"},"contact_phone":{"type":"string"},"contact_email":{"type":"string"},"biz_reg_no":{"type":"string","description":"사업자등록번호 (선택)"},"worksite":{"type":"string","description":"연결 사업장 이름/ID (가맹점=사업장 등, 선택)"},"contract_start":{"type":"string","description":"계약 시작 YYYY-MM-DD (선택)"},"contract_end":{"type":"string","description":"계약 종료 (선택)"}},"required":["name","party_type"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"register_external_party","arguments":{"name":"string","party_type":"franchisee"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_external_parties","description":"비직원 협력관계 목록. \"우리 가맹점 몇 개야?\", \"대리점 목록\", \"거래 파견사\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"party_type":{"type":"string","enum":["franchisee","agency","contractor","dispatch_agency","freelancer","vendor","partner","other"],"description":"종류 필터 (선택)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_external_parties","arguments":{"party_type":"franchisee"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"update_external_party","description":"비직원 관계 정보/상태를 수정합니다. \"강남가맹점 계약종료 처리\", \"OO파견사 연락처 변경\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"party_id":{"type":"number"},"status":{"type":"string","enum":["active","suspended","terminated"]},"contact_name":{"type":"string"},"contact_phone":{"type":"string"},"contract_end":{"type":"string"},"note":{"type":"string"}},"required":["party_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"update_external_party","arguments":{"party_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"link_party_to_worksite","description":"비직원(가맹점주 등)을 특정 사업장에 연결합니다. \"강남점주를 강남지점에 연결\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"party_id":{"type":"number"},"worksite":{"type":"string","description":"사업장 이름/ID"}},"required":["party_id","worksite"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"link_party_to_worksite","arguments":{"party_id":1,"worksite":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"record_insurance_event","description":"4대보험 취득/상실/변경 신고를 기록합니다. \"이주영 입사 4대보험 취득\", \"박철수 퇴사 자격상실 신고\" 같은 명령에 사용. 일용직 반복 입퇴사·산재 가입 추적. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름/ID"},"insurance_type":{"type":"string","enum":["pension","health","employment","accident","all"],"description":"pension=국민연금, health=건강, employment=고용, accident=산재, all=4대일괄"},"event_type":{"type":"string","enum":["acquire","lose","change"],"description":"acquire=취득, lose=상실, change=변경"},"event_date":{"type":"string","description":"사유 발생일 YYYY-MM-DD (생략 시 오늘)"},"monthly_wage":{"type":"number","description":"신고 보수월액 원 (선택)"},"reason":{"type":"string","description":"사유 (선택)"}},"required":["worker","insurance_type","event_type"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"record_insurance_event","arguments":{"worker":"홍길동","insurance_type":"pension","event_type":"acquire"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_insurance_events","description":"4대보험 신고 이력 조회. \"이번달 자격취득 신고 누구?\", \"이주영 4대보험 이력\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"특정 직원 (선택)"},"limit":{"type":"number"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_insurance_events","arguments":{"worker":"홍길동","limit":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_insurance_status","description":"전 직원 4대보험 가입 현황(국민연금/건강/고용/산재). \"4대보험 미가입자 있어?\", \"보험 가입 현황\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_insurance_status","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"generate_worker_roster","description":"근로자명부(근기법 제41조 법정서식)를 생성합니다 — 성명·성별·생년월일·주소·종사업무·입사일·고용형태. 주민등록번호와 연락처는 명부 법정 기재사항이 아니라 포함하지 않습니다. \"근로자명부 뽑아줘\", \"근로감독 대비 명부\" 같은 명령에 사용. 인사 권한 필요.","permission":"employee.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"generate_worker_roster","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"generate_wage_ledger","description":"임금대장(근기법 제48조 법정서식)을 생성합니다 — 직원별 기본급·수당·공제·실수령. \"지난달 임금대장\", \"2026-05 임금대장 뽑아줘\" 같은 명령에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM (생략 시 지난달)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"generate_wage_ledger","arguments":{"month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"estimate_pay","description":"직원의 월 급여를 출퇴근 기록 기반으로 자동 추정합니다 — 기본급 + 연장/야간/휴일 가산수당(근기법 제56조) + 휴게 자동공제(제54조) + 4대보험 공제. \"이주영 이번달 급여 얼마야?\", \"박철수 5월 야근수당 계산\" 같은 질문에 사용. 읽기 전용(저장 안 함). 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름/ID"},"month":{"type":"string","description":"YYYY-MM (생략 시 이번달)"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"estimate_pay","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"generate_payslip","description":"직원 급여명세서를 자동 계산해 생성/갱신합니다(상태 draft). \"이주영 5월 급여명세 만들어\" 같은 명령에 사용. 확정/지급된 명세는 보호됩니다. 인사 권한 필요.","permission":"payroll.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string"},"month":{"type":"string","description":"YYYY-MM (생략 시 지난달)"}},"required":["worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"generate_payslip","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"finalize_payslip","description":"급여명세서를 확정 처리합니다(draft→finalized). \"이주영 5월 명세 확정\" 같은 명령에 사용. 인사 권한 필요.","permission":"payroll.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string"},"month":{"type":"string"}},"required":["worker","month"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"finalize_payslip","arguments":{"worker":"홍길동","month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"bulk_generate_payslips","description":"전 직원 월 급여명세서를 일괄 자동 생성합니다(draft). \"이번달 급여명세 전부 만들어\", \"5월 급여 일괄 계산\" 같은 명령에 사용. 확정/지급된 건 건너뜀. 인사 권한 필요.","permission":"payroll.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM (생략 시 지난달)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"bulk_generate_payslips","arguments":{"month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"generate_rotation","description":"순환 교대표를 자동 생성합니다. 직원들에게 패턴(예: [\"주간\",\"야간\",\"휴무\"])을 돌려가며 일괄 배정 — 한 달치 교대표를 한 번에. \"간호1팀 5명 주간-야간-휴무 패턴으로 이번달 교대표 짜줘\" 같은 명령에 사용. 부서장 이상.","permission":"admin.write","required_role":"dept_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"workers":{"type":"array","items":{"type":"string"},"description":"대상 직원 이름/ID 배열 (순서대로 패턴 오프셋 적용)"},"pattern":{"type":"array","items":{"type":"string"},"description":"반복 패턴 — 시프트 템플릿 이름 또는 \"휴무\". 예: [\"주간\",\"야간\",\"휴무\"]"},"from_date":{"type":"string","description":"시작일 YYYY-MM-DD (생략 시 오늘)"},"days":{"type":"number","description":"생성할 일수 (예: 30)"}},"required":["workers","pattern","days"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"generate_rotation","arguments":{"workers":"홍길동","pattern":[],"days":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"request_shift_swap","description":"근무(시프트) 교환을 신청합니다. \"나 8월 3일 야간인데 김철수랑 8월 5일이랑 바꾸고 싶어\" 같은 명령에 사용. 상대/날짜 지정. 승인되면 두 근무가 교환됩니다.","permission":"attendance.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"my_date":{"type":"string","description":"내 근무일 YYYY-MM-DD"},"target_worker":{"type":"string","description":"교환 상대 이름/ID"},"target_date":{"type":"string","description":"상대 근무일 YYYY-MM-DD"},"reason":{"type":"string","description":"사유 (선택)"}},"required":["my_date","target_worker","target_date"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"request_shift_swap","arguments":{"my_date":"2026-06-13","target_worker":"홍길동","target_date":"2026-06-13"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_shift_swaps","description":"교대 교환 신청 목록(대기/완료). \"교환 신청 뭐 있어?\", \"내 교대 교환 상태\" 같은 질문에 사용.","permission":"attendance.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["all","pending","approved","rejected"],"description":"상태 필터 (기본 pending)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_shift_swaps","arguments":{"status":"all"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"open_review_cycle","description":"인사평가 사이클(시즌)을 엽니다. \"2026 상반기 인사평가 시작 — 자기평가+매니저평가\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"평가명 (예: \"2026 상반기 인사평가\")"},"period_label":{"type":"string","description":"기간 라벨 (예: \"2026-H1\")"},"review_types":{"type":"string","description":"포함 리뷰 종류 쉼표구분 (self,peer,manager,upward — 기본 \"self,manager\")"},"start_date":{"type":"string"},"end_date":{"type":"string"}},"required":["name"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"open_review_cycle","arguments":{"name":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_review_cycles","description":"평가 사이클 목록/현황. \"진행중인 평가 있어?\", \"이번 평가 시즌 현황\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_review_cycles","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"submit_self_review","description":"본인 자기평가를 제출합니다. \"자기평가 4점, 강점은 협업 약점은 일정관리\" 같은 명령에 사용.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"cycle":{"type":"string","description":"평가 사이클 이름/ID (생략 시 진행중)"},"rating":{"type":"number","description":"자기평가 1-5"},"strengths":{"type":"string"},"improvements":{"type":"string"},"comment":{"type":"string"}},"required":["rating"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"submit_self_review","arguments":{"rating":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"submit_review","description":"나에게 배정된 팀원/동료 평가를 제출합니다(매니저 또는 피어). \"이주영 매니저평가 4점\", \"박철수 피어리뷰\" 같은 명령에 사용. 부서장 이상 · 평가 라운드에서 배정된 항목만 제출할 수 있습니다.","permission":"admin.write","required_role":"dept_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"subject_worker":{"type":"string","description":"평가 대상 직원"},"cycle":{"type":"string"},"review_type":{"type":"string","enum":["manager","peer","upward"],"description":"기본 manager"},"rating":{"type":"number","description":"1-5"},"strengths":{"type":"string"},"improvements":{"type":"string"},"comment":{"type":"string"}},"required":["subject_worker","rating"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"submit_review","arguments":{"subject_worker":"홍길동","rating":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_review_results","description":"특정 직원의 평가 결과(자기/매니저/피어 종합). \"이주영 평가 결과 보여줘\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"subject_worker":{"type":"string"},"cycle":{"type":"string"}},"required":["subject_worker"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_review_results","arguments":{"subject_worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_review_progress","description":"평가 사이클 진행률(자기평가 제출 현황 등). \"이번 평가 몇 명 제출했어?\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"cycle":{"type":"string"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_review_progress","arguments":{"cycle":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"close_review_cycle","description":"평가 사이클을 종료합니다. \"상반기 평가 마감\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"cycle":{"type":"string"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"close_review_cycle","arguments":{"cycle":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"create_onboarding_template","description":"온보딩 체크리스트 템플릿을 만듭니다. \"신입 개발자 온보딩 템플릿 — 노트북지급/계정생성/보안교육/멘토배정\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"템플릿명 (예: \"신입 개발자 온보딩\")"},"target_dept":{"type":"string","description":"대상 부서 (선택)"},"items":{"type":"array","description":"온보딩 항목 배열","items":{"type":"object","properties":{"title":{"type":"string"},"category":{"type":"string","description":"IT/인사/교육/계정 등"},"day_offset":{"type":"number","description":"입사일 기준 마감 D+n (기본 0)"}}}}},"required":["name","items"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_onboarding_template","arguments":{"name":"string","items":[]}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_onboarding_templates","description":"온보딩 템플릿 목록. \"온보딩 템플릿 뭐 있어?\" 같은 질문에 사용. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_onboarding_templates","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"start_onboarding","description":"신규 입사자에게 온보딩 템플릿을 적용해 체크리스트를 생성합니다. \"이주영 신입개발자 온보딩 시작\" 같은 명령에 사용. 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"신규 입사자 이름/ID"},"template":{"type":"string","description":"템플릿 이름/ID"}},"required":["worker","template"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"start_onboarding","arguments":{"worker":"홍길동","template":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_onboarding_tasks","description":"직원의 온보딩 진행 항목. \"이주영 온보딩 어디까지 됐어?\", \"내 온보딩 체크리스트\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"(부서장용) 대상 직원 — 생략 시 본인"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_onboarding_tasks","arguments":{"worker":"홍길동"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"complete_onboarding_task","description":"온보딩 항목을 완료 처리합니다. \"노트북 지급 완료\" 같은 명령에 사용. query_onboarding_tasks 의 task_id 로 호출.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"task_id":{"type":"number"},"status":{"type":"string","enum":["done","doing","skipped","todo"],"description":"기본 done"}},"required":["task_id"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"complete_onboarding_task","arguments":{"task_id":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_onboarding_status","description":"전사 온보딩 진행 현황(진행중인 신규입사자 + 완료율). \"온보딩 진행중인 사람 누구야?\" 같은 질문에 사용. 인사 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_onboarding_status","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"request_remote_work","description":"외근을 신청합니다. \"오늘 외근\", \"내일 고객사 외근 신청\" 같은 명령에 사용. 사업장 밖에서 일하는 날을 승인받아 기록.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"work_mode":{"type":"string","enum":["field"],"description":"field=외근 (외근만 받는다)"},"start_date":{"type":"string","description":"시작일 YYYY-MM-DD"},"end_date":{"type":"string","description":"종료일 (생략 시 당일)"},"reason":{"type":"string","description":"사유 (선택)"},"location":{"type":"string","description":"근무 장소 (예: \"고객사\" — 선택)"}},"required":["start_date","work_mode"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"request_remote_work","arguments":{"start_date":"2026-06-13","work_mode":"field"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_remote_work","description":"외근 현황. \"오늘 외근 누구야?\", \"이번주 외근자\", \"외근 신청 대기\" 같은 질문에 사용. 부서장은 본인 부서. 부서장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"date":{"type":"string","description":"특정 날짜 YYYY-MM-DD (그날 외근자)"},"status":{"type":"string","enum":["pending","approved","all"],"description":"상태 필터"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_remote_work","arguments":{"date":"2026-06-13","status":"pending"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_my_remote_work","description":"본인 외근 신청 내역. \"내 외근 신청 어떻게 됐어?\" 같은 질문에 사용.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_remote_work","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"create_job_grade","description":"직급/직무등급을 정의합니다. \"사원-대리-과장-차장-부장 직급 만들어\", \"G1~G5 레벨 체계\" 같은 명령에 사용. level 은 서열(낮을수록 하위). 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"직급명 (예: \"대리\", \"G3\")"},"level":{"type":"number","description":"서열 (1=최하위, 숫자 클수록 상위)"},"track":{"type":"string","enum":["management","professional","support"],"description":"직군 (선택)"},"min_salary":{"type":"number","description":"하한 급여 (선택)"},"max_salary":{"type":"number","description":"상한 급여 (선택)"}},"required":["name","level"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_job_grade","arguments":{"name":"string","level":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_job_grades","description":"회사 직급/직무등급 체계 + 직급별 인원. \"우리 직급 체계 어떻게 돼?\", \"직급별 몇 명?\" 같은 질문에 사용. 담당자·권한 관리 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_job_grades","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"assign_job_grade","description":"직원에게 직급을 부여/변경합니다. \"이주영 과장으로\", \"박철수 G4 배정\" 같은 명령에 사용. (승진 발령은 transfer_worker(promotion) 와 함께 쓰면 직책+직급 동시 반영). 인사 권한 필요.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string"},"grade":{"type":"string","description":"직급 이름/ID"}},"required":["worker","grade"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"assign_job_grade","arguments":{"worker":"홍길동","grade":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_grade_distribution","description":"직급별 인원 분포(피라미드 점검). \"직급 분포 보여줘\", \"과장급 이상 몇 명?\" 같은 질문에 사용. 담당자·권한 관리 권한 필요.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_grade_distribution","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"set_hr_permission","description":"직원에게 인사 권한을 부여하거나 해제. \"이주영 부서관리 권한 줘\"(부서장 임명), \"박철수 전사조회 권한 줘\", \"김영희 인사카드 조회 빼줘\" 같은 명령. 부서관리 권한을 켜면 부서장 포털(자기 부서 출퇴근/연차 결재) 접근 가능. 대표(owner) 전용.","permission":"employee.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"permission":{"type":"string","description":"권한 종류: perm_company_admin(회사관리자)/perm_dept_admin(부서관리·부서장)/view_company(전사조회)/view_dept(부서조회)/hr_card_manage(인사카드관리)/hr_card_view(인사카드조회)/cat_hr/cat_expense/cat_contract/cat_approval/cat_community"},"enabled":{"type":"boolean","description":"true=부여, false=해제"}},"required":["worker","permission","enabled"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"set_hr_permission","arguments":{"worker":"홍길동","permission":"string","enabled":true}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"grant_mcp_role","description":"직원의 AI비서(MCP) 권한 등급을 변경. \"이주영을 인사 권한으로 올려줘\", \"박철수를 대표 권한으로\", \"김영희 일반 직원으로 내려줘\". 등급: owner(대표)>hr_manager(인사 권한)>dept_manager(부서장)>employee(직원), auto=기본값. 대표(owner) 전용.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"role":{"type":"string","enum":["auto","owner","hr_manager","dept_manager","employee"],"description":"MCP 권한 등급 (auto=기본값으로 초기화)"}},"required":["worker","role"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"grant_mcp_role","arguments":{"worker":"홍길동","role":"auto"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"toggle_mcp_enabled","description":"직원의 AI비서(MCP) 사용 자체를 허용/차단. \"박철수 MCP 못 쓰게 꺼줘\", \"이주영 AI비서 다시 켜줘\". 끄면 그 직원의 MCP 토큰 인증이 즉시 거부됨. 대표(owner) 전용.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"직원 이름 또는 worker_id"},"enabled":{"type":"boolean","description":"true=MCP 사용 허용, false=차단"}},"required":["worker","enabled"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"toggle_mcp_enabled","arguments":{"worker":"홍길동","enabled":true}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"submit_company_review","description":"재직했거나 재직 중인 회사의 리뷰(별점+장단점)를 남깁니다. \"전 회사 리뷰 남길래\" 에 사용. 실제 소속 이력이 있는 회사만 가능하며 회사당 1개(재작성 시 갱신). 익명으로 공개됩니다.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"company":{"type":"string","description":"회사 이름 또는 ID"},"rating":{"type":"number","description":"별점 1~5"},"title":{"type":"string","description":"한 줄 평 (선택)"},"pros":{"type":"string","description":"장점 (선택)"},"cons":{"type":"string","description":"단점 (선택)"}},"required":["company","rating"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"submit_company_review","arguments":{"company":"string","rating":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"query_company_reviews","description":"특정 회사의 리뷰(별점 평균 + 익명 장단점)를 조회합니다. \"그 회사 평판 어때?\", \"리뷰 보여줘\" 에 사용. 회사 미소속도 사용 가능.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"company":{"type":"string","description":"회사 이름 또는 ID"}},"required":["company"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_company_reviews","arguments":{"company":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"submit_expense","description":"경비(지출결의)를 제출합니다. 사용자가 영수증 사진을 보여주면 사진에서 금액·날짜·사용처·품목을 직접 읽어 items 배열로 정리해 이 도구로 제출하세요 (영수증 여러 장이면 items 여러 개). 이미지는 저장되지 않고 텍스트만 기록됩니다. \"이 영수증 경비 처리해줘\", \"어제 회식비 8만원 올려줘\" 같은 명령에 사용.","permission":"expense.create","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"title":{"type":"string","description":"결의서 제목 (생략 시 자동 생성, 예: \"6월 영업 경비\")"},"items":{"type":"array","description":"경비 항목들 (영수증 1장 = 1항목)","items":{"type":"object","properties":{"amount":{"type":"number","description":"금액 (원, 필수)"},"date":{"type":"string","description":"사용일 YYYY-MM-DD (영수증의 날짜, 생략 시 오늘)"},"vendor":{"type":"string","description":"사용처/가맹점명 (영수증 상호)"},"description":{"type":"string","description":"사용 내역 (품목/목적 — 영수증 품목을 요약)"},"category":{"type":"string","description":"비용 항목명 (예: \"식대\", \"교통비\" — 회사 카테고리에 자동 매칭)"},"payment_method":{"type":"string","enum":["card_corp","card_personal","cash","bank_transfer","advance","other"],"description":"결제 수단 (기본 card_personal)"},"receipt_no":{"type":"string","description":"영수증/카드 승인번호 (있으면)"}},"required":["amount"]}},"note":{"type":"string","description":"결의서 비고 (선택)"},"approval_scope":{"type":"string","enum":["manager","ceo"],"description":"최종 결재 범위. manager=조직장까지, ceo=대표이사까지 (생략 시 ceo)"}},"required":["items"]},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"submit_expense","arguments":{"items":[]}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_my_expenses","description":"내가 제출한 경비(지출결의) 내역과 승인 상태를 조회합니다. \"내 경비 처리됐어?\", \"이번달 경비 얼마 올렸지?\" 같은 질문에 사용.","permission":"expense.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["all","draft","submitted","reviewing","approved","rejected","paid"],"description":"상태 필터 (기본 all)"},"month":{"type":"string","description":"YYYY-MM (선택)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_my_expenses","arguments":{"status":"all","month":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"query_company_info","description":"우리 회사 기본정보와 근태/정책 설정 현황을 조회합니다. 수정 전에 현재 값을 확인할 때 사용. \"우리 회사 정보 보여줘\", \"지금 연차 정책 어떻게 돼 있어?\" 같은 질문에. 대표(owner) 전용.","permission":"company.read","required_role":"owner","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_company_info","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false},{"name":"update_company_info","description":"회사 기본정보를 수정합니다. \"우리 회사 상호를 인사책으로 바꿔\", \"대표자 이름 김보람으로\", \"회사 주소/업종/대표전화 수정\" 같은 명령에. 바꿀 항목만 넘기면 나머지는 그대로 유지. 대표(owner) 전용.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"회사 상호(이름)"},"ceo":{"type":"string","description":"회사 프로필에 표시할 대표자명. 법적 대표 역할·직원 이름·조직장은 별도로 지정"},"biz_no":{"type":"string","description":"사업자등록번호 (예: 123-45-67890)"},"corp_number":{"type":"string","description":"법인등록번호 (법인 사업자만)"},"biz_type":{"type":"string","enum":["individual","corporate"],"description":"사업자 구분: individual(개인)/corporate(법인)"},"address":{"type":"string","description":"사업장 주소"},"industry":{"type":"string","description":"업종"},"phone":{"type":"string","description":"대표 전화"},"region":{"type":"string","description":"지역 (예: 서울, 경기)"},"manager_name":{"type":"string","description":"실무 담당자 성함"},"manager_contact":{"type":"string","description":"실무 담당자 연락처"},"manager_email":{"type":"string","description":"관리자 이메일"},"manager_phone":{"type":"string","description":"관리자 전화번호"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"update_company_info","arguments":{"name":"string","ceo":"string"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"update_attendance_policy","description":"출퇴근(근태) 정책을 수정합니다. \"GPS 반경 100미터로\", \"출퇴근 GPS 검증을 soft로 완화\", \"외근 자동전환 꺼줘\", \"회사 Wi-Fi 이름 설정\" 같은 명령에. 대표(owner) 전용. 대상을 골라 거는 기능이 없습니다 — GPS 판정·외근 자동전환은 회사 전체에, Wi-Fi 이름·반경은 첫 번째 active 사업장에 적용됩니다. 사업장·부서·개인별로 다른 근무정책을 거는 것은 관리자 화면(회사 근무 방침)에서 합니다.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"gps_mode":{"type":"string","enum":["strict","soft","off"],"description":"GPS 검증 강도: strict(엄격)/soft(완화)/off(미사용)"},"office_radius_m":{"type":"integer","description":"사무실 출퇴근 인정 반경(미터). 20~5000"},"wifi_ssids":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":32},"description":"첫 번째 active 사업장에서 허용할 Wi-Fi 이름(SSID) 목록. 비우려면 []"},"field_work_enabled":{"type":"boolean","description":"사무실 밖 출근 시도 시 외근 자동전환 사용 여부"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"update_attendance_policy","arguments":{"gps_mode":"strict","office_radius_m":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"update_leave_policy","description":"연차/휴가 정책을 수정합니다. \"연차 기본 15일로\", \"3년차부터 2년마다 +1일, 상한 25일\", \"반차 허용\", \"무급휴가 켜줘\", \"주 4일 근무로\" 같은 명령에. 바꿀 항목만 넘기면 나머지 유지. 대표(owner) 전용.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"base_annual_days":{"type":"integer","description":"1~3년차 기본 연차일수 (0~366)"},"extra_per_2years":{"type":"integer","description":"3년차 이상 2년마다 가산일 (0~30)"},"max_annual_days":{"type":"integer","description":"연차 상한 (0~366)"},"min_days_advance":{"type":"integer","description":"최소 며칠 전 신청 (0=당일 가능, 0~90). 끄지 않으면 기한 전 신청이 실제로 거부됩니다."},"allow_sick_leave":{"type":"boolean","description":"병가 허용. false 면 병가 신청이 거부됩니다."},"allow_family_event":{"type":"boolean","description":"경조사 허용. false 면 경조사 신청이 거부됩니다."},"allow_unpaid":{"type":"boolean","description":"무급휴가 허용. false 면 무급휴가 신청이 거부됩니다."},"half_day_supported":{"type":"boolean","description":"반차 지원. false 면 오전/오후 반차 신청이 거부됩니다."},"carryover_method":{"type":"string","enum":["expire","pay","next_year"],"description":"이월 방식: expire(소멸)/pay(수당)/next_year(이월)"},"accrual_basis":{"type":"string","enum":["fiscal","hire_date"],"description":"부여 기준: fiscal(회계연도)/hire_date(입사일)"},"decimal_handling":{"type":"string","enum":["half_round","half_floor","ceil1","round1","truncate1"],"description":"비례연차(월차·연차 병행 모드의 입사 이듬해 연차) 소수점 처리: half_round=0.5일 반올림(기본) · half_floor=0.5일 내림 · ceil1=0.5일 올림 · round1=정수 반올림 · truncate1=정수 내림."},"under_one_year_method":{"type":"string","enum":["monthly","yearly"],"description":"1년 미만 부여: monthly(매월 1일씩, 최대 11일) / yearly(1년을 채우기 전에는 부여 없음)"},"daily_work_hours":{"type":"integer","description":"일 소정 근로시간 (1~24)"},"working_days":{"type":"array","items":{"type":"string"},"description":"근무 요일 (예: [\"mon\",\"tue\",\"wed\",\"thu\",\"fri\"])"},"notes":{"type":"string","description":"정책 메모"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"update_leave_policy","arguments":{"base_annual_days":1,"extra_per_2years":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"update_wage_policy","description":"임금(수당 가산율)·야근 정책을 수정합니다. \"연장근로 1.5배, 야간 0.5 가산\", \"휴일근로 2배로\", \"야근 시작 시각 19시로\", \"외근은 승인된 것만 야근 합산\" 같은 명령에. 가산율은 한국 노동법 최저 미만이면 거부되고, 변경은 임금감사로그에 5년 보존 기록됩니다. 대표(owner) 전용.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"overtime_rate":{"type":"number","description":"연장근로 가산율 (최소 1.5 또는 가산만 0.5)"},"night_rate":{"type":"number","description":"야간근로(22~06시) 가산율 (최소 0.5)"},"holiday_rate":{"type":"number","description":"휴일근로 8h 이내 가산율 (최소 1.5 또는 0.5)"},"holiday_over_rate":{"type":"number","description":"휴일근로 8h 초과 가산율 (최소 2.0 또는 1.0)"},"external_overtime_policy":{"type":"string","enum":["always_count","reviewed_only","never_count"],"description":"외근 야근 합산: always_count/reviewed_only(승인분만)/never_count"},"overtime_start_clock":{"type":"string","description":"야근(연장) 시작 시각 HH:MM (예: 18:00)"},"dinner_break_minutes":{"type":"integer","description":"저녁 휴게 분 (0~240)"},"daily_work_hours":{"type":"integer","description":"일 소정 근로시간 (1~24) — 야근 기준"},"reason":{"type":"string","description":"변경 사유 (임금감사로그에 기록, 권장)"}}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"update_wage_policy","arguments":{"overtime_rate":1,"night_rate":1}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"list_my_capabilities","description":"현재 내 권한으로 쓸 수 있는 MCP 기능을 안내합니다. \"뭐 할 수 있어?\", \"무슨 기능 있어?\", \"도움말\", \"사용법\" 같은 질문에 사용. 처음 연결한 사용자가 가장 먼저 물어보는 질문.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{}},"output_schema":{"type":"object","description":"MCP tools/call JSON-RPC result wrapper. The content text contains tool-specific JSON or Korean text.","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"isError":{"type":"boolean"}},"required":["content","isError"]},"example":{"request":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_my_capabilities","arguments":{}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":false}]}