{"service":{"name":"인사책","name_en":"Insacheck","description":"한국 SMB를 위한 영구 무료 HR SaaS — 출퇴근부터 휴가·결재·경비까지 한 화면","ai_native_standard_version":"v1"},"server":{"name":"insacheck-mcp","version":"0.2.0"},"mcp":{"url":"https://insacheck.com/api/mcp","legacy_url":"https://insacheck.com/mcp","protocol_version":"2024-11-05","legacy_catalog_url":"https://insacheck.com/mcp/tools.json"},"registry_version":"v1","generated_at":"2026-06-13T14:30:45.446Z","tool_count":221,"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":"approve_leave","description":"대기 중인 휴가 신청을 승인합니다. \"이주영 휴가 승인해줘\" 같은 명령에 사용하세요.","permission":"leave.approve","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"leave_id":{"type":"number","description":"휴가 신청 ID (query_leaves_pending 으로 먼저 조회)"},"comment":{"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":"approve_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":"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","sick","family_event","unpaid","maternity","paternity","public","other"],"description":"휴가 종류 (annual=연차, half_morning=오전반차, half_afternoon=오후반차, quarter=반반차, sick=병가, family_event=경조사, unpaid=무급, maternity=출산휴가, paternity=배우자출산휴가, public=공가, other=기타. 기본 annual)"},"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":"이미 승인된 휴가를 철회(취소)합니다. \"승인된 휴가 안 갈래, 취소해줘\" 같은 명령에 사용. 사용일수가 잔여로 복구됩니다.","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":"reject_leave","description":"대기중인 휴가 신청을 반려합니다. \"박민수 휴가 반려해\" 같은 명령에 사용. (승인은 approve_leave)","permission":"leave.request","required_role":"hr_manager","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":"reject_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":false},{"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":"approve_team_pending_leaves_all","description":"본인 팀의 대기중 휴가를 모두 일괄 승인합니다. \"우리팀 휴가 신청 다 승인해\" 같은 명령에 사용. 팀장 이상.","permission":"leave.approve","required_role":"dept_manager","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":"approve_team_pending_leaves_all","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":"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_job_posting","description":"채용 공고를 작성해 전사 공개 채용보드에 올립니다. \"백엔드 개발자 채용 공고 올려줘 — 연봉 4천, 강남, 재택 가능\" 같은 명령에 사용. 업종/복지/태그/마감일/전형단계까지 한 번에 등록 가능하며, 회사 사업장 주소·좌표가 자동 연결되어 구직자 지역 검색에 노출됩니다. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"title":{"type":"string","description":"공고 제목 (예: \"백엔드 개발자 모집\")"},"department":{"type":"string","description":"부서 (예: \"개발\")"},"employment_type":{"type":"string","enum":["regular","contract","intern","part_time"],"description":"고용형태 (기본 regular)"},"location":{"type":"string","description":"근무지 요약 (예: \"서울 강남\")"},"region":{"type":"string","description":"지역 검색용 표기 (예: \"서울 강남구\" — 생략 시 location/사업장에서 유추)"},"office":{"type":"string","description":"근무 사업장 이름 (등록된 사업장이면 주소·GPS 좌표 자동 연결, 선택)"},"description":{"type":"string","description":"직무 설명"},"requirements":{"type":"string","description":"자격 요건"},"benefits":{"type":"string","description":"복리후생 (예: \"4대보험, 점심 제공, 자율 출퇴근\")"},"salary_range":{"type":"string","description":"급여 범위 (예: \"4000~5000만원\")"},"industry":{"type":"string","description":"업종 (생략 시 회사 업종 자동)"},"tags":{"type":"string","description":"검색 태그, 쉼표 구분 (예: \"재택가능,주4.5일,스톡옵션\")"},"work_hours":{"type":"string","description":"근무시간 (예: \"09:00-18:00 유연근무\")"},"remote_allowed":{"type":"boolean","description":"재택 가능 여부 (기본 false)"},"deadline":{"type":"string","description":"지원 마감일 YYYY-MM-DD (생략 시 상시채용)"},"process_steps":{"type":"string","description":"전형 단계 (예: \"서류 > 1차면접 > 2차면접\" — 생략 시 기본 전형)"},"headcount":{"type":"number","description":"모집 인원 (기본 1)"},"is_public":{"type":"boolean","description":"전사 공개 채용보드 노출 (기본 true — false 면 사내 관리용)"},"publish":{"type":"boolean","description":"true 면 즉시 게시(open), false 면 draft (기본 true)"}},"required":["title"]},"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_posting","arguments":{"title":"공지 제목"}}},"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_postings","description":"채용 공고 목록을 조회합니다. \"현재 채용중인 포지션?\", \"올라간 공고 보여줘\" 같은 질문에 사용. 팀장 이상.","permission":"company.read","required_role":"dept_manager","required_scope":"read","input_schema":{"type":"object","properties":{"status":{"type":"string","enum":["all","draft","open","closed","filled"],"description":"상태 필터 (기본 open)"}}},"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_postings","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":"update_job_posting","description":"채용 공고를 수정하거나 마감/충원완료 처리합니다. \"백엔드 공고 마감해\" 같은 명령에 사용. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"job_id":{"type":"number","description":"공고 ID"},"status":{"type":"string","enum":["draft","open","closed","filled"],"description":"새 상태"},"title":{"type":"string","description":"제목 변경 (선택)"},"headcount":{"type":"number","description":"인원 변경 (선택)"}},"required":["job_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_job_posting","arguments":{"job_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_applicants","description":"지원자 목록을 조회합니다. \"백엔드 공고 지원자 누구?\", \"면접 단계 지원자\" 같은 질문에 사용. 인사팀장 이상.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"job_id":{"type":"number","description":"특정 공고의 지원자만 (선택)"},"stage":{"type":"string","enum":["all","applied","screening","interview1","interview2","interview3","offer","hired","rejected"],"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_applicants","arguments":{"job_id":1,"stage":"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":"move_applicant_stage","description":"지원자의 전형 단계를 이동합니다. \"이지원 면접2 단계로\", \"박철수 합격 처리\" 같은 명령에 사용. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"applicant_id":{"type":"number","description":"지원자 ID"},"stage":{"type":"string","enum":["applied","screening","interview1","interview2","interview3","offer","hired","rejected"],"description":"이동할 단계"},"note":{"type":"string","description":"메모 (선택)"}},"required":["applicant_id","stage"]},"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_applicant_stage","arguments":{"applicant_id":1,"stage":"applied"}}},"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_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","enum":["employment","fixed_term","part_time","freelance"],"description":"계약 유형 (기본 employment)"},"start_date":{"type":"string","description":"계약 시작일 YYYY-MM-DD"},"end_date":{"type":"string","description":"계약 종료일 (정규직은 생략)"},"base_salary":{"type":"number","description":"기본급 (원)"},"salary_unit":{"type":"string","enum":["monthly","annual","hourly","daily"],"description":"급여 단위 (기본 monthly)"},"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":"경비 청구를 작성·제출합니다. \"택시비 3만원 경비 신청\", \"어제 점심 회식비 정산\" 같은 명령에 사용.","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":"approve_expense_claim","description":"제출된 경비 청구를 승인합니다. \"이주영 경비 승인해\" 같은 명령에 사용. 인사팀장 이상.","permission":"expense.approve","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"claim_id":{"type":"number","description":"청구 ID"}},"required":["claim_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":"approve_expense_claim","arguments":{"claim_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_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":"approve_seal_request","description":"인감 사용 신청을 승인합니다. \"인감 신청 5번 승인\" 같은 명령에 사용. 인사팀장 이상.","permission":"approval.approve","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":"approve_seal_request","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":"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":"approve_business_trip","description":"출장 신청을 승인합니다. \"이주영 출장 승인\" 같은 명령에 사용. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"trip_id":{"type":"number","description":"출장 신청 ID"}},"required":["trip_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":"approve_business_trip","arguments":{"trip_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":"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":"approve_certificate","description":"제증명 신청을 승인합니다 (발급 직전 단계). \"재직증명서 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":"approve_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":"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.read","required_role":"employee","required_scope":"read","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":false},{"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":"approve_item","description":"결재 항목을 승인합니다. query_my_approval_inbox 의 item_type+item_id 로 호출. \"휴가 142번 승인\", \"제증명 5번 승인\" 같은 명령에 사용. 결재선(다단계)이 설정된 건은 지정 결재자가 자기 차례를 승인하면 다음 결재자에게 자동 통보되고, 마지막 단계 승인 시 최종 승인됩니다. 인사팀장/대표는 직권으로 남은 단계 일괄 승인. 결재선 없는 건은 기존대로 (팀장=본인 부서 휴가/연장, 인사팀장 이상=전 종류).","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"item_type":{"type":"string","enum":["leave","expense","trip","seal","overtime","certificate","condolence","join_request"],"description":"항목 종류"},"item_id":{"type":"number","description":"항목 ID"},"note":{"type":"string","description":"결재 의견 (선택)"}},"required":["item_type","item_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":"approve_item","arguments":{"item_type":"leave","item_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":"reject_item","description":"결재 항목을 반려합니다. \"경비 5번 반려\" 같은 명령에 사용. 결재선 건은 지정 결재자 본인 차례에 반려 가능 (반려 시 남은 단계는 자동 중단), 그 외는 기존 권한 규칙.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"item_type":{"type":"string","enum":["leave","expense","trip","seal","overtime","certificate","condolence","join_request"],"description":"항목 종류"},"item_id":{"type":"number","description":"항목 ID"},"reason":{"type":"string","description":"반려 사유"}},"required":["item_type","item_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":"reject_item","arguments":{"item_type":"leave","item_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":"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":"특정 부서에만 적용 (선택 — 생략 시 전 부서)"},"amount_min":{"type":"number","description":"금액 하한 원 (경비 등, 선택)"},"amount_max":{"type":"number","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":"특정 회사에 소속(입사) 가입을 신청합니다. \"비씨모빌리티에 가입 신청해줘\", \"사업자번호 250-81-03824 회사에 입사 신청\" 같은 명령에 사용. 신청하면 그 회사 관리자가 승인해야 소속됩니다. 회사 미소속(신규 가입자)도 사용 가능.","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":"approve_join_request","description":"직원의 회사 가입(입사) 신청을 승인합니다. \"김철수 가입 승인\", \"입사 신청 다 승인해\" 같은 명령에 사용. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"affiliation_id":{"type":"number","description":"신청 ID (query_join_requests 로 조회)"},"department":{"type":"string","description":"배정 부서 (선택)"},"position":{"type":"string","description":"배정 직책 (선택)"}},"required":["affiliation_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":"approve_join_request","arguments":{"affiliation_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":"reject_join_request","description":"직원의 가입 신청을 반려합니다. \"그 가입 신청 반려\" 같은 명령에 사용. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"affiliation_id":{"type":"number","description":"신청 ID"},"reason":{"type":"string","description":"반려 사유"}},"required":["affiliation_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":"reject_join_request","arguments":{"affiliation_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":"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":"approve_resignation","description":"직원의 퇴직원을 승인하고 퇴사 처리합니다. \"김철수 퇴직원 승인\" 같은 명령에 사용. 마지막 근무일 기준으로 소속이 종료됩니다. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"request_id":{"type":"number","description":"퇴직원 ID (query_resignation_requests 로 확인)"},"note":{"type":"string","description":"처리 메모 (선택)"}},"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":"approve_resignation","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":"reject_resignation","description":"직원의 퇴직원을 반려합니다 (면담 후 재고 등). \"그 퇴직원 반려\" 에 사용. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"request_id":{"type":"number","description":"퇴직원 ID"},"note":{"type":"string","description":"반려 사유/메모 (선택)"}},"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":"reject_resignation","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":"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 (기본 오늘)"}},"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","dept_manager"],"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":"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사 오늘 어때?\", \"비씨모빌리티 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":"부서장을 임명합니다. \"이주영을 영업팀장으로\", \"박철수를 경영지원본부장으로\" 같은 명령에 사용. 인사팀장 이상.","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"}},"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":"log_one_on_one_note","description":"1:1 미팅 노트를 기록합니다. 직원은 본인 노트, 팀장은 worker 지정 시 팀원 면담(매니저) 노트를 남깁니다. \"오늘 팀장님과 1on1 — 성장방향 논의\" 같은 명령에 사용.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"notes":{"type":"string","description":"면담 노트 (자유 텍스트)"},"meeting_date":{"type":"string","description":"미팅 날짜 YYYY-MM-DD (생략 시 오늘)"},"action_items":{"type":"string","description":"액션 아이템 (선택)"},"worker":{"type":"string","description":"(팀장용) 면담 대상 직원 이름/ID — 지정 시 매니저 노트로 기록"},"shared":{"type":"boolean","description":"상대방과 공유 여부 (기본 false)"}},"required":["notes"]},"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_one_on_one_note","arguments":{"notes":"예시 메모"}}},"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_one_on_one_notes","description":"1:1 미팅 노트 목록을 조회합니다. \"내 1on1 기록 보여줘\" 같은 질문에 사용. 팀장은 worker 지정으로 팀원 노트 조회 가능.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"(팀장용) 대상 직원 이름/ID (선택)"},"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_one_on_one_notes","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_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)"}},"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 (선택)"},"end_odometer":{"type":"number","description":"도착 누적거리 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_condolence_policies","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_condolence_policies","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_condolence","description":"경조금/경조휴가를 신청합니다. \"다음달 결혼해서 경조금 신청\", \"부친상 경조금이랑 휴가 신청\" 같은 명령에 사용. 금액은 회사 정책에서 자동 산정(미지정 시).","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"event_type":{"type":"string","enum":["marriage_self","marriage_parent","marriage_child","birth","funeral_self_parent","funeral_grandparent","funeral_spouse","funeral_child","funeral_sibling","sickness","other"],"description":"경조 사유 (marriage_self=본인결혼, birth=출산, funeral_self_parent=부모상 등)"},"event_date":{"type":"string","description":"경조 발생일 YYYY-MM-DD"},"recipient_relation":{"type":"string","description":"대상자 관계 (예: \"부친\", \"장남\") — 선택"},"amount_requested":{"type":"number","description":"신청 금액 (생략 시 정책 금액 자동)"},"leave_days":{"type":"number","description":"신청 휴가 일수 (생략 시 정책 일수 자동)"},"note":{"type":"string","description":"비고 (장지/병원 등) — 선택"}},"required":["event_type","event_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_condolence","arguments":{"event_type":"marriage_self","event_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_condolence_requests","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_condolence_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":"approve_condolence","description":"경조금 신청을 승인합니다 (지급 금액 확정 가능). \"이주영 경조금 50만원으로 승인\" 같은 명령에 사용. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"request_id":{"type":"number","description":"경조금 신청 ID"},"amount_paid":{"type":"number","description":"확정 지급액 (생략 시 신청액)"}},"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":"approve_condolence","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_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 (기본 100)"},"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"},"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"},"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":"create_enterprise_group","description":"여러 법인/지사/가맹점을 묶는 그룹(지주사·프랜차이즈 본부)을 만들고 현재 회사를 본사로 등록합니다. \"우리 그룹 만들어 — 한국본사/베트남법인/미국법인\", \"본스치킨 본부 그룹 생성\" 같은 명령에 사용. 생성된 group_id 를 계열사/가맹점에 공유하면 link_enterprise_to_group 으로 연결합니다. 대표(owner) 전용.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"그룹/본부명 (예: \"대성정밀그룹\")"},"group_type":{"type":"string","enum":["holding","franchise","chain","other"],"description":"holding=지주/계열, franchise=프랜차이즈본부, chain=체인, other"}},"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_enterprise_group","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":"link_enterprise_to_group","description":"현재 회사를 기존 그룹에 계열사/지사/가맹점으로 연결합니다. \"우리 회사를 그룹 3번에 자회사로 연결\" 같은 명령에 사용. 대표(owner) 전용.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"group_id":{"type":"number","description":"연결할 그룹 ID (본사에서 create_enterprise_group 으로 받은 값)"},"group_role":{"type":"string","enum":["headquarters","subsidiary","branch_corp","franchisee","agency"],"description":"그룹 내 역할 (subsidiary=자회사, branch_corp=지사법인, franchisee=가맹점, agency=대리점)"}},"required":["group_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":"link_enterprise_to_group","arguments":{"group_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_group_overview","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_group_overview","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":"grant_manager_scope","description":"직원에게 중간관리 권한(여러 사업장/지역/부서 감독)을 부여합니다. \"이주영을 영남 지역매니저로 — 5개 지점 조회\", \"박철수 강남지점 슈퍼바이저 승인권한\" 같은 명령에 사용. 기존 팀장(단일부서) 역할로 안 되는 지역/다사업장 관리자를 표현. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"worker":{"type":"string","description":"매니저 직원 이름/ID"},"scope_type":{"type":"string","enum":["office","department","region","project","group"],"description":"office=특정 사업장, region=지역(예 \"영남\"), department=부서, project=프로젝트, group=그룹전체"},"scope_value":{"type":"string","description":"office면 사업장 이름/ID, region이면 지역명, department면 부서명"},"can_approve":{"type":"boolean","description":"승인 권한 부여 여부 (기본 false=조회만)"}},"required":["worker","scope_type","scope_value"]},"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_manager_scope","arguments":{"worker":"홍길동","scope_type":"office","scope_value":"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_manager_scopes","description":"중간관리 권한 부여 현황 조회 (특정 직원 또는 전체). \"이주영 관리 권한 뭐 있어?\", \"지역매니저 누구누구야?\" 같은 질문에 사용. 인사팀장 이상.","permission":"company.read","required_role":"hr_manager","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_manager_scopes","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":"revoke_manager_scope","description":"중간관리 권한을 회수합니다. query_manager_scopes 의 scope_id 로 호출. 대표(owner) 전용.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"scope_id":{"type":"number"}},"required":["scope_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_manager_scope","arguments":{"scope_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":"dept_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":"dept_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":"approve_shift_swap","description":"근무 교환 신청을 승인하고 두 시프트를 실제로 맞교환합니다. \"교대 교환 3번 승인\" 같은 명령에 사용. 팀장 이상.","permission":"attendance.write","required_role":"dept_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"swap_id":{"type":"number"},"reject":{"type":"boolean","description":"true 면 반려"},"reason":{"type":"string"}},"required":["swap_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":"approve_shift_swap","arguments":{"swap_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_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":"재택/외근 근무를 신청합니다. \"내일 재택근무 신청\", \"다음주 월~수 재택\", \"오늘 외근\" 같은 명령에 사용. GPS 출퇴근이 어려운 날을 기록.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"work_mode":{"type":"string","enum":["remote","field","hybrid"],"description":"remote=재택, field=외근, hybrid=혼합 (기본 remote)"},"start_date":{"type":"string","description":"시작일 YYYY-MM-DD"},"end_date":{"type":"string","description":"종료일 (생략 시 당일)"},"reason":{"type":"string","description":"사유 (선택)"},"location":{"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_remote_work","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":true},{"name":"approve_remote_work","description":"재택/외근 신청을 승인/반려합니다. \"재택 신청 5번 승인\" 같은 명령에 사용. 팀장 이상.","permission":"admin.write","required_role":"dept_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"request_id":{"type":"number"},"reject":{"type":"boolean"},"reason":{"type":"string"}},"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":"approve_remote_work","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_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":"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_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":"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_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":"query_menu_visibility","description":"우리 회사 관리자 사이드바에서 어떤 기능(메뉴)이 켜져 있고 꺼져 있는지 조회. \"지금 무슨 메뉴 켜져 있어?\", \"경비 메뉴 켜져 있나?\" 같은 질문에 사용. 끄기 전 영향 확인용(데이터 있는 메뉴는 꺼도 자동 표시됨). 인사팀장 이상.","permission":"admin.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_menu_visibility","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_menu_visibility","description":"관리자 사이드바에서 특정 기능(메뉴)을 켜거나 끔. \"경비 메뉴 꺼줘\", \"급여 메뉴 켜줘\", \"차량 안 써, 메뉴 숨겨줘\" 같은 명령. ⚠️ 메뉴 표시만 바뀌고 데이터·기록·접근 URL 은 그대로 보존됨(삭제 아님). 대표(owner) 전용.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"section":{"type":"string","description":"기능 이름. 영문키 또는 한글: people(직원)/time(근태)/leave(휴가·출장)/pay(급여)/approval(결재)/notice(공지)/seal(인감)/expense(경비)/card(법인카드)/vehicle(차량)/reservation(자원예약)"},"visible":{"type":"boolean","description":"true=메뉴 켜기, false=메뉴 끄기(숨김)"}},"required":["section","visible"]},"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_menu_visibility","arguments":{"section":"string","visible":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":"apply_menu_preset","description":"회사 유형 프리셋으로 메뉴를 한번에 정리. \"우리 소규모 사무실이야 메뉴 정리해줘\", \"제조업 프리셋 적용해줘\" 같은 명령. 프리셋: office_small(소규모사무직)/manufacturing(제조생산)/service(서비스매장)/startup(스타트업)/full(전체). ⚠️ 토글 가능한 모든 메뉴를 프리셋대로 덮어씀(기존 설정 교체). 데이터는 보존. 대표(owner) 전용.","permission":"admin.write","required_role":"owner","required_scope":"read_write","input_schema":{"type":"object","properties":{"preset":{"type":"string","enum":["office_small","manufacturing","service","startup","full"],"description":"적용할 회사 유형 프리셋"}},"required":["preset"]},"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":"apply_menu_preset","arguments":{"preset":"office_small"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"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":"search_job_postings","description":"전체 회사의 공개 채용공고를 검색합니다. \"송파 근처 채용공고 찾아줘\", \"연봉 4천 이상 IT 회사\", \"재택 가능한 자리 있어?\" 같은 질문에 사용. 지역/업종/고용형태/키워드/거리 필터 지원. 회사 미소속(구직자/퇴사자)도 사용 가능.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"keyword":{"type":"string","description":"검색어 (제목/직무/태그/연봉 텍스트에서 검색, 선택)"},"region":{"type":"string","description":"지역 (예: \"서울 송파\", \"경기\"). 공고의 지역/근무지 텍스트 매칭"},"industry":{"type":"string","description":"업종 (예: \"IT\", \"제조\", \"물류\")"},"employment_type":{"type":"string","enum":["regular","contract","parttime","part_time","intern"],"description":"고용형태 (선택)"},"remote_only":{"type":"boolean","description":"true 면 재택 가능 공고만"},"near_lat":{"type":"number","description":"내 위치 위도 — near_lng 와 함께 주면 거리순 정렬"},"near_lng":{"type":"number","description":"내 위치 경도"},"radius_km":{"type":"number","description":"검색 반경 km (기본 15, near_lat/lng 필요)"},"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":"search_job_postings","arguments":{"keyword":"string","region":"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":"get_job_posting","description":"채용공고 1건의 상세 내용(직무/자격요건/복리후생/연봉/근무지/전형단계)과 회사 리뷰 요약을 조회합니다. \"그 공고 자세히 보여줘\" 에 사용. 회사 미소속도 사용 가능.","permission":"company.read","required_role":"employee","required_scope":"read","input_schema":{"type":"object","properties":{"job_id":{"type":"number","description":"공고 ID (search_job_postings 결과의 job_id)"}},"required":["job_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":"get_job_posting","arguments":{"job_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":"apply_to_job","description":"채용공고에 지원합니다. \"그 공고에 지원해줘\" 같은 명령에 사용. 이름/연락처는 내 계정 정보가 자동 사용되고, 경력 요약과 지원 동기를 텍스트로 첨부합니다. 회사 미소속(구직자/퇴사자)도 사용 가능.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"job_id":{"type":"number","description":"공고 ID"},"cover_letter":{"type":"string","description":"지원 동기/자기소개 (자유 텍스트, 권장)"},"experience_text":{"type":"string","description":"경력 요약 (예: \"5년차 백엔드, Node.js/결제 도메인\")"},"portfolio_url":{"type":"string","description":"포트폴리오 링크 (github/notion 등, 선택)"}},"required":["job_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":"apply_to_job","arguments":{"job_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_applications","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_applications","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":"withdraw_application","description":"내가 넣은 지원을 철회합니다. \"그 회사 지원 취소해줘\" 에 사용.","permission":"admin.write","required_role":"employee","required_scope":"read_write","input_schema":{"type":"object","properties":{"applicant_id":{"type":"number","description":"지원 ID (query_my_applications 로 확인)"}},"required":["applicant_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_application","arguments":{"applicant_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":"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":"summarize_applicants","description":"지원자들의 경력/지원동기 원문을 모아 반환합니다. 호출 후 반환 데이터를 읽고 지원자 수·특징·강약점을 직접 정리/비교해 사용자에게 브리핑하세요. \"지원자 정리해줘\", \"누가 제일 적합해?\" 같은 요청에 사용. 인사팀장 이상.","permission":"company.read","required_role":"hr_manager","required_scope":"read","input_schema":{"type":"object","properties":{"job_id":{"type":"number","description":"특정 공고만 (선택)"},"stage":{"type":"string","enum":["all","applied","screening","interview1","interview2","interview3","offer","hired","rejected"],"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":"summarize_applicants","arguments":{"job_id":1,"stage":"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":"decide_applicant","description":"지원자의 전형 단계를 결정하고 지원자에게 자동 통보(앱 푸시+알림)합니다. \"1번 지원자 서류 합격, 1차 면접으로\", \"김지원 불합격 처리\" 같은 명령에 사용. 플랫폼 회원 지원자는 즉시 푸시를 받습니다. 인사팀장 이상. (SMS/카톡 발송은 지원하지 않음 — 앱 푸시로 통보)","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"applicant_id":{"type":"number","description":"지원자 ID"},"stage":{"type":"string","enum":["applied","screening","interview1","interview2","interview3","offer","hired","rejected"],"description":"결정 단계 (interview1=서류합격, interview2=1차합격, offer=면접합격, hired=최종합격, rejected=불합격)"},"note":{"type":"string","description":"내부 메모 (선택)"},"reject_reason":{"type":"string","description":"불합격 사유 (rejected 시 내부 기록용, 선택)"},"notify":{"type":"boolean","description":"지원자 통보 여부 (기본 true)"}},"required":["applicant_id","stage"]},"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":"decide_applicant","arguments":{"applicant_id":1,"stage":"applied"}}},"response":{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{ \"...\": \"tool-specific result\" }"}],"isError":false}}},"version":"v1","status":"active","requires_confirmation":true},{"name":"hire_applicant","description":"지원자를 최종 합격 처리하고, 플랫폼 회원이면 우리 회사 소속(입사)까지 자동 연결합니다. \"박철수 최종합격, 입사 처리해줘\" 같은 명령에 사용. 부서/직책을 함께 지정 가능. 인사팀장 이상.","permission":"admin.write","required_role":"hr_manager","required_scope":"read_write","input_schema":{"type":"object","properties":{"applicant_id":{"type":"number","description":"지원자 ID"},"department":{"type":"string","description":"배정 부서 (선택)"},"position":{"type":"string","description":"직책 (선택)"},"start_date":{"type":"string","description":"입사일 YYYY-MM-DD (기본 오늘)"}},"required":["applicant_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":"hire_applicant","arguments":{"applicant_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":"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":"결의서 비고 (선택)"}},"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":"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}]}