rootr-cli 0.9.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +230 -5
- package/bin/rootr.js +864 -3
- package/lib/client.js +341 -5
- package/lib/config.js +5 -0
- package/lib/mcp-tools/databases.js +334 -4
- package/lib/mcp-tools/documents.js +10 -4
- package/lib/mcp-tools/feedback.js +97 -0
- package/lib/mcp-tools/forms.js +62 -7
- package/lib/mcp-tools/misc.js +84 -1
- package/lib/mcp-tools/presentations.js +5 -1
- package/lib/mcp-tools/public.js +148 -0
- package/lib/mcp-tools/signed.js +495 -0
- package/lib/mcp-tools/workspaces.js +117 -13
- package/lib/mcp.js +47 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -202,6 +202,69 @@ rootr config # 등록된 키 목록 확인
|
|
|
202
202
|
업그레이드 링크가 담긴 안내가 나옵니다. 응답 헤더로도 확인할 수 있습니다
|
|
203
203
|
(`X-RateLimit-Remaining`, `X-RateLimit-Reset`, `X-RateLimit-Window`).
|
|
204
204
|
|
|
205
|
+
### 서명문서 · 연구노트 (sign)
|
|
206
|
+
|
|
207
|
+
서명문서는 마크다운 문서인데 **올리는 순간 본문이 얼고**, 결재라인에 적힌 사람들이
|
|
208
|
+
차례로 서명합니다. 서명마다 공인시점확인(TSA)과 해시 체이닝이 붙어 위·변조를
|
|
209
|
+
증명할 수 있고, 서명된 문서는 삭제되지 않습니다(30년 보존).
|
|
210
|
+
전자결재와 국가R&D 전자연구노트가 같은 기능 하나입니다.
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# 만들기 — 본문·결재라인까지 한 번에. 연구노트는 점검자만 정하면 두 단계가 자동
|
|
214
|
+
rootr sign new "/연구노트/2026-08-25 실험기록" --file note.md --reviewer <연구책임자 userId>
|
|
215
|
+
|
|
216
|
+
# 결재라인을 직접 짜려면 (배열 순서 = 서명 순서)
|
|
217
|
+
cat > line.json <<'EOF'
|
|
218
|
+
[ { "label": "기재자", "members": [{ "userId": "u1", "role": "AUTHOR" }] },
|
|
219
|
+
{ "label": "부서장", "rule": "ANY", "members": [{ "userId": "u2" }, { "userId": "u3" }] } ]
|
|
220
|
+
EOF
|
|
221
|
+
rootr sign line /연구노트/2026-08-25\ 실험기록 --file line.json
|
|
222
|
+
|
|
223
|
+
# 올리기: 확인 코드를 메일로 받고 → 그 6자리를 넘긴다
|
|
224
|
+
rootr sign code /연구노트/2026-08-25\ 실험기록
|
|
225
|
+
rootr sign submit /연구노트/2026-08-25\ 실험기록 --code 123456
|
|
226
|
+
|
|
227
|
+
# 다음 사람: 내 차례인 것만 보고 → 서명 (또는 사유를 달아 반려)
|
|
228
|
+
rootr sign list --pending
|
|
229
|
+
rootr sign code <id> && rootr sign approve <id> --code 123456
|
|
230
|
+
rootr sign reject <id> --comment "근거 자료가 빠졌습니다" --code 123456
|
|
231
|
+
|
|
232
|
+
# 여러 건 한 번에 (코드 하나로 최대 100건)
|
|
233
|
+
rootr sign code --bulk
|
|
234
|
+
rootr sign bulk <id1> <id2> <id3> --code 123456
|
|
235
|
+
|
|
236
|
+
# 증명
|
|
237
|
+
rootr sign verify <id> # 본문·서명·시점확인·원장이 성한지
|
|
238
|
+
rootr sign ledger # 워크스페이스 원장 전체 재계산
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**확인 코드는 CLI가 대신 만들어 줄 수 없습니다.** 코드는 서명하는 사람 메일로만
|
|
242
|
+
가고, 서버가 개인키를 보관하는 구조에서 그게 "본인이 눌렀다"의 유일한 증거입니다.
|
|
243
|
+
10분 유효, 5회 틀리면 죽고, 30초 안에 다시 요청하면 거절됩니다.
|
|
244
|
+
|
|
245
|
+
서명된 문서는 고치는 게 아니라 **개정본**을 냅니다(`rootr sign revise <id> --note "…"`).
|
|
246
|
+
원본은 `SUPERSEDED`로 남습니다 — 지침이 "고친 흔적과 원본이 모두 보여야 한다"를
|
|
247
|
+
요구하기 때문입니다.
|
|
248
|
+
|
|
249
|
+
### 제보 보내기 (feedback)
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
rootr feedback "행을 추가하려는데 rootr_add_row가 칸 이름을 못 찾는다고 합니다. 칸 id로 바꾸니 됐습니다." --kind friction
|
|
253
|
+
rootr feedback --file report.md --kind bug --email me@example.com
|
|
254
|
+
cat error.log | rootr feedback --kind bug
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
오류·불편·제안을 Rootr 팀에 보냅니다. **로그인도, 워크스페이스도, API 키도 필요
|
|
258
|
+
없습니다** — 키가 틀려서 아무것도 못 하는 상태에서도 보내집니다(그 제보가 우리가
|
|
259
|
+
제일 받고 싶은 제보입니다). 사용량 한도에도 걸리지 않고, 크레딧도 쓰지 않습니다.
|
|
260
|
+
|
|
261
|
+
`--kind`는 `bug`(안 되는 것) · `friction`(되지만 불편·헷갈림) · `idea`(있으면 좋겠다) ·
|
|
262
|
+
`praise` · `other` 중 하나이며, 생략하면 `other`입니다. `--title`을 안 주면 본문 첫
|
|
263
|
+
줄이 제목이 됩니다. 답을 받고 싶을 때만 `--email`을 주세요.
|
|
264
|
+
|
|
265
|
+
같은 사람이 10분 안에 같은 내용을 또 보내면 한 건으로 합칩니다 — 실패 재시도
|
|
266
|
+
안에서 반복 호출해도 목록이 더러워지지 않습니다.
|
|
267
|
+
|
|
205
268
|
### RCA 질의응답 (ask)
|
|
206
269
|
|
|
207
270
|
```bash
|
|
@@ -214,7 +277,7 @@ rootr ask "왜 결제 실패가 늘었지?" --workspace ws_123
|
|
|
214
277
|
|
|
215
278
|
## MCP 서버로 사용하기
|
|
216
279
|
|
|
217
|
-
`rootr mcp`는 stdio로 MCP(Model Context Protocol) 서버를 구동합니다. 제공 도구
|
|
280
|
+
`rootr mcp`는 stdio로 MCP(Model Context Protocol) 서버를 구동합니다. 제공 도구 151종:
|
|
218
281
|
|
|
219
282
|
노드를 가리키는 인자(`target`, `databaseId`, `spreadsheetId`, `formId`, `crmId`, `trackerId`,
|
|
220
283
|
`recordingId`, `presentationId`, `whiteboardId`, `logId`, `parentId` 등)는 **노드 id와 경로를 모두**
|
|
@@ -233,6 +296,10 @@ rootr ask "왜 결제 실패가 늘었지?" --workspace ws_123
|
|
|
233
296
|
| `rootr_edit` | 정확한 텍스트 스니펫 치환 |
|
|
234
297
|
| `rootr_write` | 문서 전체 교체(파괴적) 또는 신규 생성 |
|
|
235
298
|
| `rootr_search` | 워크스페이스 검색 |
|
|
299
|
+
| `rootr_comment_document` | 문서에 댓글 달기 |
|
|
300
|
+
| `rootr_list_document_comments` | 문서에 달린 댓글 목록 |
|
|
301
|
+
| `rootr_duplicate_node` | 노드 통째로 복제(하위까지) |
|
|
302
|
+
| `rootr_move_node` | 노드 옮기기 / 이름 바꾸기 |
|
|
236
303
|
|
|
237
304
|
에이전트에게는 가능하면 `rootr_append`/`rootr_edit`을 우선 사용하고,
|
|
238
305
|
`rootr_write`는 정말 전체를 다시 쓸 때만 (가능하면 `ifMatch`와 함께) 쓰도록
|
|
@@ -253,9 +320,14 @@ rootr ask "왜 결제 실패가 늘었지?" --workspace ws_123
|
|
|
253
320
|
| 도구 | 필요 스코프 | 설명 |
|
|
254
321
|
|---|---|---|
|
|
255
322
|
| `rootr_workspaces` | 계정 키 또는 워크스페이스 키 | 내 워크스페이스 목록 |
|
|
256
|
-
| `rootr_scaffold_plan` | 워크스페이스 불필요 |
|
|
257
|
-
| `
|
|
258
|
-
| `
|
|
323
|
+
| `rootr_scaffold_plan` | 워크스페이스 불필요 | 짓기 1단계 — 물어볼 것·설계 규칙·건축 자재 목록을 받는다 |
|
|
324
|
+
| `rootr_scaffold_review` | 워크스페이스 불필요 | 짓기 2단계 — **만들기 전에** 설계를 검사받는다(점수·고칠 곳). 컴파일러처럼 고쳐 가며 짓는다 |
|
|
325
|
+
| `rootr_create_workspace` | **계정 키(PAT) + workspaces:create** | 짓기 3단계 — 계획된 트리로 새 워크스페이스 생성(검사 결과도 같이 돌려준다) |
|
|
326
|
+
| `rootr_scaffold_apply` | docs:write | 짓기 3단계 — 기존 워크스페이스에 트리 적용(검사 결과도 같이 돌려준다) |
|
|
327
|
+
|
|
328
|
+
스캐폴딩은 **plan → 물어보기 → 설계 → review → 고치기 → apply** 한 바퀴입니다.
|
|
329
|
+
`review` 를 건너뛰면 "얇은 마크다운 파일 묶음"이 됩니다. CLI 로도 같은 세 단계를 쓸 수 있습니다:
|
|
330
|
+
`rootr scaffold plan "..."` / `rootr scaffold review --file tree.json` / `rootr scaffold apply --file tree.json`.
|
|
259
331
|
|
|
260
332
|
#### LOG 데이터스토어 (docs:read/docs:write)
|
|
261
333
|
|
|
@@ -300,7 +372,17 @@ rootr ask "왜 결제 실패가 늘었지?" --workspace ws_123
|
|
|
300
372
|
| `rootr_list_rows` | 행만 조회(스키마 제외, `includeBody` 지원) |
|
|
301
373
|
| `rootr_add_row` | 행 추가 (`values`는 열 이름 또는 id로 지정, `body`로 상세 내용까지) |
|
|
302
374
|
| `rootr_update_row` | 행 수정 (칸반 카드 이동 = select 열 값 변경, `body`로 상세 내용 교체) |
|
|
375
|
+
| `rootr_bulk_create_rows` | 행 여러 개를 한 번에 추가 |
|
|
376
|
+
| `rootr_bulk_update_rows` | 여러 행을 **같은 값**으로 한 번에 수정 |
|
|
377
|
+
| `rootr_bulk_update_rows_each` | 여러 행을 **행마다 다른 값**으로 한 번에 수정 |
|
|
303
378
|
| `rootr_delete_row` | 행 삭제 |
|
|
379
|
+
| `rootr_bulk_delete_rows` | 행 여러 개를 한 번에 삭제 |
|
|
380
|
+
| `rootr_create_view` | 보기 추가 — 테이블/보드/캘린더/타임라인/갤러리 |
|
|
381
|
+
| `rootr_update_view` | 보기 수정 — 열 숨기기·이름·그룹·필터·정렬·열 너비 |
|
|
382
|
+
| `rootr_delete_view` | 보기 삭제 |
|
|
383
|
+
| `rootr_create_row_page` | 행에 상세 페이지 붙이기(문서 또는 서명문서) |
|
|
384
|
+
| `rootr_set_row_page_type` | 앞으로 만드는 행이 무엇으로 열릴지 정하기 |
|
|
385
|
+
| `rootr_unlink_row_page` | 행과 상세 페이지의 연결 끊기 |
|
|
304
386
|
| `rootr_add_column` | **열 추가** — 기존 열·행은 그대로 |
|
|
305
387
|
| `rootr_update_column` | 열 이름 변경 / select 선택지 교체 |
|
|
306
388
|
| `rootr_delete_column` | 열 삭제(파괴적) |
|
|
@@ -352,11 +434,152 @@ rootr ask "왜 결제 실패가 늘었지?" --workspace ws_123
|
|
|
352
434
|
- `title` 열은 추가로 만들 수도, 삭제할 수도 없습니다.
|
|
353
435
|
- 삭제한 열의 값은 행 안에 남아 있지만 화면에는 나오지 않습니다 — 사용자 확인 후 호출하세요.
|
|
354
436
|
|
|
437
|
+
#### 폼(FORM) — 받아 적는 창구 (docs:read/docs:write)
|
|
438
|
+
|
|
439
|
+
| 도구 | 설명 |
|
|
440
|
+
|---|---|
|
|
441
|
+
| `rootr_create_form` | 폼 만들기 — 질문 정의·응답 모을 표(`targetDatabaseId`)까지 한 번에 |
|
|
442
|
+
| `rootr_read_form` | 질문 정의와 설정 읽기 — **고치기 전에 먼저** |
|
|
443
|
+
| `rootr_update_form` | 질문·설정 수정(`config`는 아래 설명 참고) |
|
|
444
|
+
| `rootr_create_form_collector` | 응답 모을 표·스프레드시트를 **만들어서** 연결(표는 질문 그대로 칸 생성) |
|
|
445
|
+
| `rootr_list_form_responses` | 들어온 응답 목록 |
|
|
446
|
+
| `rootr_submit_form_response` | 응답 한 건 제출(사람 대신 넣어 줄 때) |
|
|
447
|
+
| `rootr_update_form_response` | 이미 들어온 응답 고치기(폼 검사 규칙 다시 통과) |
|
|
448
|
+
| `rootr_delete_form_response` | 응답 한 건 삭제 |
|
|
449
|
+
| `rootr_create_form_share_link` | 폼 전용 공유 링크 발급(`/f/<토큰>`) |
|
|
450
|
+
| `rootr_list_form_share_links` | 발급된 공유 링크 목록 |
|
|
451
|
+
|
|
452
|
+
폼을 밖에 여는 정상 경로는 **`rootr_publish_node`** 입니다 — 발행하면 `/p/<슬러그>`
|
|
453
|
+
주소가 나오고 **응답 받기도 같이 켜집니다**. `config.publicSubmit`을 손으로 만질 일은
|
|
454
|
+
거의 없고, 그만 받고 싶으면 `closesAt`·`maxResponses`를 걸거나 발행을 내리세요.
|
|
455
|
+
`config.theme`은 `clean`·`paper`·`noir`·`ocean`·`sunset`·`mint`·`bento`·`brutal`·
|
|
456
|
+
`vivid`·`dark` 10종이며, `cover`/`logo`는 이미지 **주소**라 `rootr_upload_attachment`로
|
|
457
|
+
먼저 올리고 받은 url을 넣습니다(비워 두면 기본 커버가 붙습니다).
|
|
458
|
+
|
|
459
|
+
#### 웹에 공개 발행 (docs:write)
|
|
460
|
+
|
|
461
|
+
| 도구 | 설명 |
|
|
462
|
+
|---|---|
|
|
463
|
+
| `rootr_publish_node` | **아무 노드나** 공개 — 문서·표·폼·시트·화이트보드·덱, 하위까지 |
|
|
464
|
+
| `rootr_set_node_public` | 이미 공개한 것의 설정 변경(하위 포함 여부·검색 노출·만료) |
|
|
465
|
+
| `rootr_node_public_status` | 지금 공개돼 있는지, 주소는 무엇인지 |
|
|
466
|
+
| `rootr_publish_document` | 문서 전용 발행(구형 — 새로 짤 때는 `rootr_publish_node`) |
|
|
467
|
+
| `rootr_set_document_public` | 문서 전용 공개 설정 변경 |
|
|
468
|
+
| `rootr_document_public_status` | 문서 전용 공개 상태 |
|
|
469
|
+
|
|
470
|
+
#### 스프레드시트 (docs:read/docs:write)
|
|
471
|
+
|
|
472
|
+
| 도구 | 설명 |
|
|
473
|
+
|---|---|
|
|
474
|
+
| `rootr_create_spreadsheet` | 스프레드시트 만들기(시트 여러 장 가능) |
|
|
475
|
+
| `rootr_read_spreadsheet` | 시트·셀·수식 읽기 |
|
|
476
|
+
| `rootr_patch_spreadsheet_cells` | **(권장)** 셀 값·수식만 콕 집어 쓰기 |
|
|
477
|
+
| `rootr_update_spreadsheet` | 설정·아이콘 변경, 또는 시트 전체 교체(파괴적) |
|
|
478
|
+
| `rootr_create_sheet` | 시트(탭) 추가 |
|
|
479
|
+
| `rootr_update_sheet` | 시트 한 장 이름 변경·크기 조정 |
|
|
480
|
+
| `rootr_delete_sheet` | 시트(탭) 삭제 |
|
|
481
|
+
|
|
482
|
+
#### 화이트보드 (docs:read/docs:write)
|
|
483
|
+
|
|
484
|
+
| 도구 | 설명 |
|
|
485
|
+
|---|---|
|
|
486
|
+
| `rootr_create_whiteboard` | 화이트보드 만들기 |
|
|
487
|
+
| `rootr_read_whiteboard` | 도형·연결선 읽기 |
|
|
488
|
+
| `rootr_update_whiteboard` | 장면 교체 또는 병합(merge), 설정·아이콘 |
|
|
489
|
+
|
|
490
|
+
#### 녹음 · 회의록 (docs:read/docs:write)
|
|
491
|
+
|
|
492
|
+
| 도구 | 설명 |
|
|
493
|
+
|---|---|
|
|
494
|
+
| `rootr_create_recording` | 녹음 노드 만들기 |
|
|
495
|
+
| `rootr_upload_recording_audio` | 오디오 올리기(올리면 받아쓰기가 시작됩니다) |
|
|
496
|
+
| `rootr_transcribe_recording` | 받아쓰기 실행/재실행 |
|
|
497
|
+
| `rootr_read_recording` | 받아쓴 글·화자 구간 읽기 |
|
|
498
|
+
| `rootr_rename_recording_speakers` | 화자 이름 바꾸기(화자1 → 김대표) |
|
|
499
|
+
| `rootr_summarize_recording` | 요약·회의록 만들기 |
|
|
500
|
+
| `rootr_download_recording_audio` | 원본 오디오 내려받기 |
|
|
501
|
+
|
|
502
|
+
#### CRM (docs:read/docs:write)
|
|
503
|
+
|
|
504
|
+
| 도구 | 설명 |
|
|
505
|
+
|---|---|
|
|
506
|
+
| `rootr_crm_create` | CRM 노드 만들기(파이프라인·칸 정의) |
|
|
507
|
+
| `rootr_crm_get` | 파이프라인·칸·건수 보기 |
|
|
508
|
+
| `rootr_crm_update` | 파이프라인·칸·설정 수정 |
|
|
509
|
+
| `rootr_crm_list_companies` / `rootr_crm_get_company` | 회사 목록 / 상세(연락처·딜·활동·할 일) |
|
|
510
|
+
| `rootr_crm_upsert_company` | 회사 추가·수정·삭제 |
|
|
511
|
+
| `rootr_crm_list_contacts` / `rootr_crm_get_contact` | 연락처 목록 / 상세 |
|
|
512
|
+
| `rootr_crm_upsert_contact` | 연락처 추가·수정·삭제 |
|
|
513
|
+
| `rootr_crm_list_deals` / `rootr_crm_get_deal` | 딜 목록 / 상세 |
|
|
514
|
+
| `rootr_crm_upsert_deal` | 딜 추가·수정·삭제 |
|
|
515
|
+
| `rootr_crm_move_deal` | 딜을 다음 칸으로 옮기기(칸반 카드 이동) |
|
|
516
|
+
| `rootr_crm_log_activity` / `rootr_crm_list_activities` | 활동 기록 남기기 / 타임라인 조회 |
|
|
517
|
+
| `rootr_crm_upsert_task` / `rootr_crm_list_tasks` | 후속 할 일 만들기·수정 / 목록 |
|
|
518
|
+
| `rootr_crm_import` | 여러 건 한 번에 가져오기 |
|
|
519
|
+
|
|
520
|
+
#### 템플릿 (docs:read/docs:write)
|
|
521
|
+
|
|
522
|
+
| 도구 | 설명 |
|
|
523
|
+
|---|---|
|
|
524
|
+
| `rootr_list_templates` | 문서·표 템플릿 목록 |
|
|
525
|
+
| `rootr_apply_template` | 템플릿으로 노드 만들기 |
|
|
526
|
+
| `rootr_save_as_template` | 지금 노드를(또는 즉석 정의를) 템플릿으로 저장 |
|
|
527
|
+
| `rootr_update_template` | 템플릿 수정 |
|
|
528
|
+
|
|
529
|
+
#### 제보 (인증 불필요)
|
|
530
|
+
|
|
531
|
+
| 도구 | 설명 |
|
|
532
|
+
|---|---|
|
|
533
|
+
| `rootr_send_feedback` | 오류·불편·제안 보내기 — 키가 없거나 틀려도 들어갑니다 |
|
|
534
|
+
|
|
535
|
+
**에이전트에게**: 이 도구는 시켜야 부르는 도구가 아닙니다. 일하다가 예상 못 한
|
|
536
|
+
오류를 만나거나, 도구가 설명과 다르게 동작하거나, 우회를 하게 되거나, 사용자가
|
|
537
|
+
"이거 안 된다/헷갈린다"고 말하면 **묻지 말고 그 자리에서 한 번 보내고** 하던 일을
|
|
538
|
+
계속하세요. 도구 설명에도 같은 말이 적혀 있습니다. 같은 문제로 두 번 보내지 마세요
|
|
539
|
+
(10분 내 같은 내용은 자동으로 합쳐집니다).
|
|
540
|
+
|
|
541
|
+
#### 읽음 확인 (docs:read/docs:write)
|
|
542
|
+
|
|
543
|
+
| 도구 | 설명 |
|
|
544
|
+
|---|---|
|
|
545
|
+
| `rootr_set_read_requirement` | 이 문서를 반드시 읽게 하기(대상·기한) |
|
|
546
|
+
| `rootr_read_requirement` | 누가 읽었고 누가 안 읽었는지 |
|
|
547
|
+
| `rootr_clear_read_requirement` | 읽음 요구 해제 |
|
|
548
|
+
|
|
549
|
+
#### 서명문서 · 연구노트 (docs:read/docs:write)
|
|
550
|
+
|
|
551
|
+
| 도구 | 설명 |
|
|
552
|
+
|---|---|
|
|
553
|
+
| `rootr_create_signed_document` | 서명문서 만들기 — 본문·모드·결재라인까지 한 번에 |
|
|
554
|
+
| `rootr_read_signed_document` | 결재라인 진행·서명 목록·내 차례인지(`canSign`) |
|
|
555
|
+
| `rootr_set_approval_line` | 결재라인 다시 짜기 (올리기 전에만) |
|
|
556
|
+
| `rootr_apply_research_note_preset` | 연구노트로 전환 + 기재자→점검자 두 단계 자동 |
|
|
557
|
+
| `rootr_request_signing_code` | 확인 코드를 서명자 메일로 발송 (서명 전 필수) |
|
|
558
|
+
| `rootr_submit_signed_document` | 올리기 — 본문이 얼고 기안자가 첫 서명 |
|
|
559
|
+
| `rootr_sign_document` | 내 차례에 서명 |
|
|
560
|
+
| `rootr_reject_signed_document` | 반려 (사유 필수) |
|
|
561
|
+
| `rootr_reopen_signed_document` | 아무도 서명 안 한 초안 다시 열기 |
|
|
562
|
+
| `rootr_revise_signed_document` | 개정본 만들기 (원본은 남는다) |
|
|
563
|
+
| `rootr_verify_signed_document` | 위변조 검증 — 본문·서명·시점확인·원장 |
|
|
564
|
+
| `rootr_list_signed_documents` | 목록 (`pendingMine`: 내 차례인 것만) |
|
|
565
|
+
| `rootr_bulk_sign_documents` | 코드 하나로 최대 100건 묶음 서명 |
|
|
566
|
+
| `rootr_verify_ledger` | 워크스페이스 원장(해시 체인) 전체 재계산 |
|
|
567
|
+
|
|
568
|
+
에이전트가 대신 눌러 줄 수 없는 자리가 하나 있습니다 — **서명**. 확인 코드는
|
|
569
|
+
사람 메일로만 가므로 흐름은 항상 `rootr_request_signing_code` → 사람에게 6자리를
|
|
570
|
+
물어봄 → `rootr_sign_document` 입니다. 코드를 지어내면 403이고, 5회 틀리면 코드가
|
|
571
|
+
죽습니다.
|
|
572
|
+
|
|
573
|
+
표의 행마다 서명문서를 붙이려면 `rootr_create_database`에 `rowPageType: "SIGNED"`를
|
|
574
|
+
주세요 — 그 표는 행을 열 때마다 서명문서(연구노트)가 만들어집니다(실험 기록 대장,
|
|
575
|
+
점검 대장).
|
|
576
|
+
|
|
355
577
|
#### 문서 버전 / 삭제
|
|
356
578
|
|
|
357
579
|
| 도구 | 설명 |
|
|
358
580
|
|---|---|
|
|
359
581
|
| `rootr_document_versions` | 문서 버전 히스토리 조회 |
|
|
582
|
+
| `rootr_update_node` | 아무 노드나 이름·아이콘 변경 / 옮기기 |
|
|
360
583
|
| `rootr_delete_node` | 노드를 휴지통으로 이동(복구 가능) |
|
|
361
584
|
|
|
362
585
|
#### 프레젠테이션
|
|
@@ -364,7 +587,9 @@ rootr ask "왜 결제 실패가 늘었지?" --workspace ws_123
|
|
|
364
587
|
프레젠테이션(PRESENTATION)은 전용 MCP 도구(`rootr_create_presentation`,
|
|
365
588
|
`rootr_read_presentation`, `rootr_append_presentation_slides`,
|
|
366
589
|
`rootr_update_presentation_slide`, `rootr_reorder_presentation_slides`,
|
|
367
|
-
`rootr_update_presentation`)로 저작합니다.
|
|
590
|
+
`rootr_update_presentation`)로 저작합니다. 슬라이드에 넣을 그림은
|
|
591
|
+
`rootr_generate_image`(문장으로 이미지 생성)와 `rootr_remove_image_background`(배경 지우기)로
|
|
592
|
+
만들 수 있습니다 — 둘 다 AI 크레딧을 씁니다. 아래처럼 **같은 API 키로 REST를 직접
|
|
368
593
|
호출**해도 됩니다 (`x-api-key` 헤더, `docs:write`):
|
|
369
594
|
|
|
370
595
|
```bash
|