@modootoday/datalab-extension-mcp 1.9.3 → 1.10.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.en.md CHANGED
@@ -61,7 +61,7 @@ One command finds **every** AI app on your computer and connects them automatica
61
61
  2. **Paste this command and press Enter.** The saved command names an exact bootstrap version. At startup and while idle, the connector checks the canonical release and promotes itself to the current secure, compatible version. Diagnostic environments can opt out with `--no-self-update`.
62
62
 
63
63
  ```
64
- npx -y @modootoday/datalab-extension-mcp@1.9.3 install
64
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 install
65
65
  ```
66
66
 
67
67
  Lines of English scrolling by is normal. This only downloads and runs the connector — it touches nothing else.
@@ -151,10 +151,10 @@ diagnosis, Place reputation, Pumasi, photo/video production, and automatic tool
151
151
  discovery. Press Enter to keep the recommended set.
152
152
 
153
153
  ```
154
- npx -y @modootoday/datalab-extension-mcp@1.9.3 skills list
155
- npx -y @modootoday/datalab-extension-mcp@1.9.3 skills status
156
- npx -y @modootoday/datalab-extension-mcp@1.9.3 skills attach <name>
157
- npx -y @modootoday/datalab-extension-mcp@1.9.3 skills detach <name>
154
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 skills list
155
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 skills status
156
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 skills attach <name>
157
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 skills detach <name>
158
158
  ```
159
159
 
160
160
  - `list` shows everything in this version, name and description.
@@ -240,7 +240,7 @@ _(The DataLab Tools panel is closed in Chrome. Open Chrome, keep the panel open,
240
240
 
241
241
  Exactly what it says. Open Chrome, keep the DataLab Tools side panel open, and it works immediately.
242
242
 
243
- ### I only see 11 tools
243
+ ### I only see 9 tools
244
244
 
245
245
  That's expected — **it's deliberate.**
246
246
 
@@ -254,7 +254,7 @@ Nothing is out of reach because of it. Ask for something that isn't in the list
254
254
  Local fuzzy matching covers spacing, inflection, and minor typos. The only cost is
255
255
  that extra step: **the first call to a given tool can be a second or two slower.**
256
256
 
257
- If the AI says a feature doesn't exist, tell it: **"check your tool catalog and
257
+ If the AI says a feature doesn't exist, tell it: **"search the hidden tools and
258
258
  answer again."**
259
259
 
260
260
  ### The card is green but your AI app can't find the tools
@@ -273,7 +273,7 @@ Start it again after a full quit and it picks the tools up. If they still aren't
273
273
  - **When the connection disappears** — run the very command you used at the start once more; it safely re-registers. (Some AI apps clean up their settings file and drop the connection.)
274
274
 
275
275
  ```
276
- npx -y @modootoday/datalab-extension-mcp@1.9.3 install
276
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 install
277
277
  ```
278
278
 
279
279
  - **`'npx' is not recognized...`** — Node.js isn't installed. The "No Node.js?" one-liner in Step 2 is the simplest fix.
@@ -303,7 +303,7 @@ Start it again after a full quit and it picks the tools up. If they still aren't
303
303
  1. Run this in a terminal (it removes the entries registered in your AI apps).
304
304
 
305
305
  ```
306
- npx -y @modootoday/datalab-extension-mcp@1.9.3 uninstall
306
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 uninstall
307
307
  ```
308
308
 
309
309
  2. Turn **MCP 연결** off in the extension settings. The panel is the bridge, so with it off a leftover config line can look nothing up.
package/README.md CHANGED
@@ -55,7 +55,7 @@ Claude 같은 AI 앱을 데이터랩툴즈에 연결해 주는 작은 무료 프
55
55
  2. **아래 명령을 붙여넣고 Enter를 눌러요.** 저장되는 명령은 정확한 시작 버전을 적습니다. 연결 프로그램은 시작할 때와 유휴 상태에서 정본 릴리스를 확인해 현재의 안전하고 호환되는 버전으로 승격합니다. 진단 환경에서는 `--no-self-update`로 승격을 끌 수 있어요.
56
56
 
57
57
  ```
58
- npx -y @modootoday/datalab-extension-mcp@1.9.3 install
58
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 install
59
59
  ```
60
60
 
61
61
  영어 글자가 여러 줄 올라오는 건 정상이에요. 이 명령은 연결 프로그램을 다운로드해 실행할 뿐, 다른 건 건드리지 않아요.
@@ -137,10 +137,10 @@ Claude 같은 AI 앱을 데이터랩툴즈에 연결해 주는 작은 무료 프
137
137
  도움말을 번호로 여러 개 고를 수 있어요. Enter를 누르면 추천 구성만 설치됩니다.
138
138
 
139
139
  ```
140
- npx -y @modootoday/datalab-extension-mcp@1.9.3 skills list
141
- npx -y @modootoday/datalab-extension-mcp@1.9.3 skills status
142
- npx -y @modootoday/datalab-extension-mcp@1.9.3 skills attach <이름>
143
- npx -y @modootoday/datalab-extension-mcp@1.9.3 skills detach <이름>
140
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 skills list
141
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 skills status
142
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 skills attach <이름>
143
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 skills detach <이름>
144
144
  ```
145
145
 
146
146
  - `list` 는 이 버전에 들어 있는 전부를 이름과 설명으로 보여 줘요.
@@ -210,7 +210,7 @@ MCP 를 켜 두었지만 **네이버 페이지가 한 곳도 열려 있지 않
210
210
 
211
211
  말 그대로예요. Chrome을 열고 데이터랩툴즈 사이드 패널을 열어 두면 바로 동작해요.
212
212
 
213
- ### 도구가 11개밖에 안 보여요
213
+ ### 도구가 9개밖에 안 보여요
214
214
 
215
215
  정상이에요. **일부러 그렇게 보냅니다.**
216
216
 
@@ -222,7 +222,7 @@ MCP 를 켜 두었지만 **네이버 페이지가 한 곳도 열려 있지 않
222
222
  보내 후보와 인자 형식을 받은 뒤 실행합니다. 조사 변화·띄어쓰기·가벼운 오타도 로컬 유사도
223
223
  검색으로 보완합니다. 처음 부르는 도구는 이 조회 때문에 답이 1~2초 늦을 수 있어요.
224
224
 
225
- AI가 "그런 기능은 없다" 고 답하면, **"도구 목록을 확인해 보고 다시 답해줘"** 라고 한 번
225
+ AI가 "그런 기능은 없다" 고 답하면, **"숨은 도구를 찾아보고 다시 답해줘"** 라고 한 번
226
226
  말해 주세요.
227
227
 
228
228
  ### 카드는 초록색인데 AI 앱이 도구를 못 찾을 때
@@ -241,7 +241,7 @@ AI가 "그런 기능은 없다" 고 답하면, **"도구 목록을 확인해 보
241
241
  - **연결이 사라졌을 때** — 처음 실행했던 그 명령을 한 번 더 실행하면 안전하게 다시 등록돼요. (일부 AI 앱이 설정 파일을 정리하며 연결을 지우기도 해요.)
242
242
 
243
243
  ```
244
- npx -y @modootoday/datalab-extension-mcp@1.9.3 install
244
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 install
245
245
  ```
246
246
 
247
247
  - **`'npx'을(는) 내부 또는 외부 명령...`** — Node.js가 없는 거예요. 위 2단계의 "Node.js가 없다면" 한 줄 설치가 가장 간단해요.
@@ -271,7 +271,7 @@ AI가 "그런 기능은 없다" 고 답하면, **"도구 목록을 확인해 보
271
271
  1. 터미널에서 아래 명령을 실행해요(AI 앱에 등록된 설정을 지워 줘요).
272
272
 
273
273
  ```
274
- npx -y @modootoday/datalab-extension-mcp@1.9.3 uninstall
274
+ npx -y @modootoday/datalab-extension-mcp@1.10.0 uninstall
275
275
  ```
276
276
 
277
277
  2. 확장 설정에서 **MCP 연결을 꺼요.** 패널이 브릿지라, 꺼 두면 어딘가 설정 줄이 남아 있어도 AI 앱이 아무것도 조회할 수 없어요.
@@ -2,7 +2,7 @@ import {
2
2
  __export
3
3
  } from "./chunk-MLKGABMK.js";
4
4
 
5
- // ../mcp-server/dist/chunk-TL23JBYI.js
5
+ // ../mcp-server/dist/chunk-TMP6PY3G.js
6
6
  import { createHash } from "crypto";
7
7
  import { createHash as createHash2, randomUUID } from "crypto";
8
8
  import { mkdir, readFile, readdir, rm, writeFile } from "fs/promises";
@@ -19322,312 +19322,7 @@ function projectTools(descriptors) {
19322
19322
  }
19323
19323
  return { tools, rejected };
19324
19324
  }
19325
- var BLOG_BRIEF = [
19326
- "my_daily_brief",
19327
- "my_blog_summary",
19328
- "my_realtime",
19329
- "my_traffic_series",
19330
- "my_top_content",
19331
- "my_soaring",
19332
- "my_publish_calendar",
19333
- "daily_trend",
19334
- "my_moments"
19335
- ];
19336
- var BLOG_INSIGHTS = [
19337
- "my_content_audience",
19338
- "my_inflow",
19339
- "my_audience",
19340
- "my_inflow_domain",
19341
- "my_country",
19342
- "my_device",
19343
- "my_dwell",
19344
- "my_followers",
19345
- "my_revisit",
19346
- "my_revenue",
19347
- "my_impression_click",
19348
- "my_impression_ranks",
19349
- "my_channels",
19350
- "my_revenue_ranks",
19351
- "my_revenue_efficiency",
19352
- "my_content_info",
19353
- "my_content_read",
19354
- "my_content_detail",
19355
- "my_content_inflow"
19356
- ];
19357
- var RESEARCH = [
19358
- // Caught by serp-watch's "search_" prefix, but this group's own steps open
19359
- // by calling it. A step naming a tool the group does not contain sends the
19360
- // caller to a catalog page it is not on.
19361
- "search_keywords",
19362
- "local_regions",
19363
- "local_job_categories",
19364
- "local_region_trend",
19365
- "local_area_category_rank",
19366
- "content_volume",
19367
- "autocomplete_keywords",
19368
- "qra_keywords",
19369
- "kin_question_demand",
19370
- "web_read",
19371
- "run_research",
19372
- // Planning tools: they need a model but call none here, returning prompt
19373
- // material instead. Grouped by job — all three design a post not yet written.
19374
- "outline_suggest",
19375
- "seo_aeo_geo_spec",
19376
- "content_calendar",
19377
- // The last step of that job: turn the design into an actual draft.
19378
- "write_draft",
19379
- // Names which of the above comes next given what the caller just measured —
19380
- // the part of the job that cannot be written down ahead of time.
19381
- "write_pipeline_step"
19382
- ];
19383
- var EDITOR_CONTROL = [
19384
- // The tool that opens a tab belongs in the group that requires one: a
19385
- // model choosing this group was just told it needs a tab, and the way out
19386
- // has to be visible at the wall, not in some other group.
19387
- "editor_open_window",
19388
- "editor_reduce_windows",
19389
- "editor_read",
19390
- "editor_read_structure",
19391
- "editor_undo",
19392
- "editor_replace",
19393
- "editor_insert_draft",
19394
- // Lands a draft from any window state without ever overwriting — refuses and
19395
- // names the tool to use instead when the body is occupied.
19396
- "editor_place_draft",
19397
- "editor_set_title",
19398
- // The whole plan in one call, for a run nobody is watching. Same group as the
19399
- // steps it contains — a model that reached for those should see this too.
19400
- "editor_apply_manifest",
19401
- // Both act on the open draft: title_optimize proposes titles for it, and
19402
- // internal_links reads it.
19403
- "title_optimize",
19404
- "internal_links",
19405
- "editor_insert_image",
19406
- "seo_scorecard"
19407
- ];
19408
- var BY_PREFIX = [
19409
- { slug: "serp-watch", prefixes: ["search_", "serp_"] },
19410
- { slug: "benchmark", prefixes: ["blog_", "cafe_", "influencer_"] },
19411
- { slug: "place", prefixes: ["place_"] },
19412
- { slug: "shopping", prefixes: ["shopping_"] },
19413
- { slug: "ad-bidding", prefixes: ["ad_"] },
19414
- { slug: "store-settlement", prefixes: ["commerce_"] },
19415
- { slug: "comment-stats", prefixes: ["comment_"] },
19416
- { slug: "photo-editor", prefixes: ["photo_"] },
19417
- { slug: "video-editor", prefixes: ["video_"] },
19418
- { slug: "keyword-research", prefixes: ["keyword_"] },
19419
- { slug: "pumasi", prefixes: ["pumasi_"] },
19420
- { slug: "browser-tabs", prefixes: ["tab_"] }
19421
- ];
19422
- var GALLERY = ["gallery_image_add"];
19423
- var EXPLICIT = [
19424
- { slug: "connection", tools: ["datalab_browsers"] },
19425
- { slug: "gallery", tools: GALLERY },
19426
- { slug: "blog-brief", tools: BLOG_BRIEF },
19427
- { slug: "blog-insights", tools: BLOG_INSIGHTS },
19428
- { slug: "keyword-research", tools: RESEARCH },
19429
- { slug: "editor-control", tools: EDITOR_CONTROL },
19430
- // Named like the group but caught by none of its prefixes, so it is listed
19431
- // explicitly — a similar name is not a membership rule.
19432
- { slug: "benchmark", tools: ["benchmark_gap"] }
19433
- ];
19434
- var META = [
19435
- {
19436
- slug: "connection",
19437
- label: "\uC5F0\uACB0 \uBE0C\uB77C\uC6B0\uC800",
19438
- summary: "\uC5EC\uB7EC \uBE0C\uB77C\uC6B0\uC800\xB7\uD504\uB85C\uD544 \uC911 \uB3C4\uAD6C\uB97C \uC2E4\uD589\uD560 \uACF3\uC744 \uACE0\uB978\uB2E4",
19439
- aliases: ["\uBE0C\uB77C\uC6B0\uC800 \uC120\uD0DD", "\uD504\uB85C\uD544 \uC120\uD0DD", "\uD06C\uB86C \uC5F0\uACB0", "\uC6E8\uC77C \uC5F0\uACB0"],
19440
- dataScope: "local"
19441
- },
19442
- {
19443
- slug: "blog-brief",
19444
- label: "\uC624\uB298\uC758 \uBE14\uB85C\uADF8 \uBE0C\uB9AC\uD551",
19445
- summary: "\uB0B4 \uBE14\uB85C\uADF8\uAC00 \uC9C0\uAE08 \uC5B4\uB5A4\uC9C0 \u2014 \uBC29\uBB38\xB7\uC870\uD68C\xB7\uC778\uAE30\uAE00\xB7\uC2E4\uC2DC\uAC04",
19446
- aliases: ["\uB0B4 \uBE14\uB85C\uADF8 \uC131\uACFC", "\uBC29\uBB38\uC790", "\uC870\uD68C\uC218", "\uC778\uAE30\uAE00", "\uC2E4\uC2DC\uAC04 \uD1B5\uACC4"],
19447
- dataScope: "own"
19448
- },
19449
- {
19450
- slug: "blog-insights",
19451
- label: "\uBE14\uB85C\uADF8 \uC2EC\uCE35 \uBD84\uC11D",
19452
- summary: "\uC65C \uADF8\uB7F0\uC9C0 \u2014 \uC720\uC785 \uACBD\uB85C\xB7\uC131\uBCC4\uC5F0\uB839\xB7\uCCB4\uB958\xB7\uC218\uC775\xB7\uAE00\uBCC4 \uC0C1\uC138",
19453
- aliases: ["\uBE14\uB85C\uADF8 \uC720\uC785", "\uB3C5\uC790 \uBD84\uC11D", "\uCCB4\uB958\uC2DC\uAC04", "\uC7AC\uBC29\uBB38", "\uBE14\uB85C\uADF8 \uC218\uC775"],
19454
- dataScope: "own"
19455
- },
19456
- {
19457
- slug: "keyword-research",
19458
- label: "\uD0A4\uC6CC\uB4DC\xB7\uAE00\uAC10 \uB9AC\uC11C\uCE58",
19459
- summary: "\uBB34\uC5C7\uC744 \uC4F8\uC9C0 \u2014 \uD0A4\uC6CC\uB4DC \uC218\uC694\xB7\uC5F0\uAD00\uC5B4\xB7\uC790\uB3D9\uC644\uC131\xB7\uBC1C\uD589\uB7C9\xB7\uC9C0\uC2DDiN \uC9C8\uBB38\xB7\uC9C0\uC5ED \uD2B8\uB80C\uB4DC",
19460
- aliases: ["\uD0A4\uC6CC\uB4DC \uC870\uC0AC", "\uAC80\uC0C9\uB7C9", "\uC5F0\uAD00\uC5B4", "\uAE00\uAC10", "\uCF58\uD150\uCE20 \uC544\uC774\uB514\uC5B4"],
19461
- dataScope: "mixed",
19462
- steps: [
19463
- "search_keywords \uB85C \uC218\uC694\uB97C \uBCF8\uB2E4",
19464
- "content_volume \uC73C\uB85C \uC774\uBBF8 \uC5BC\uB9C8\uB098 \uC4F0\uC600\uB294\uC9C0 \uBCF8\uB2E4 \u2014 \uC218\uC694\uB9CC \uBCF4\uACE0 \uACE0\uB974\uBA74 \uD3EC\uD654\uB41C \uD0A4\uC6CC\uB4DC\uB97C \uACE0\uB978\uB2E4",
19465
- "keyword_opportunity \uB85C \uB458\uC744 \uACAC\uC918 \uBE48\uD2C8\uC744 \uCC3E\uB294\uB2E4"
19466
- ]
19467
- },
19468
- {
19469
- slug: "serp-watch",
19470
- label: "\uB124\uC774\uBC84 \uAC80\uC0C9\uACB0\uACFC \uD655\uC778",
19471
- summary: "\uC774 \uAC80\uC0C9\uC5B4\uC5D0 \uC9C0\uAE08 \uB124\uC774\uBC84\uAC00 \uBB34\uC5C7\uC744 \uB744\uC6B0\uB294\uC9C0",
19472
- aliases: ["\uB124\uC774\uBC84 \uAC80\uC0C9\uACB0\uACFC", "\uC0C1\uC704 \uB178\uCD9C", "\uAC80\uC0C9 \uC21C\uC704", "SERP"],
19473
- dataScope: "public"
19474
- },
19475
- {
19476
- // The summary says whose page it is, because this is the one group whose
19477
- // tools act somewhere the member does not own.
19478
- slug: "pumasi",
19479
- label: "\uD488\uC557\uC774 \u2014 \uB2E4\uB978 \uC0AC\uB78C\uC758 \uAE00",
19480
- summary: "\uB2E4\uB978 \uC0AC\uB78C\uC758 \uBE14\uB85C\uADF8\uC5D0\uC11C \uB313\uAE00\uCE78\xB7\uC774\uC6C3\uCD94\uAC00 \uCC3D\uC744 \uC5F4\uACE0 \uB0B4 \uACF5\uAC10 \uC0C1\uD0DC\uB97C \uC77D\uB294\uB2E4",
19481
- aliases: ["\uD488\uC557\uC774", "\uACF5\uAC10 \uC0C1\uD0DC", "\uB313\uAE00 \uC791\uC131", "\uC774\uC6C3 \uC2E0\uCCAD", "\uC11C\uB85C\uC774\uC6C3"],
19482
- dataScope: "mixed"
19483
- },
19484
- {
19485
- // Not a subject and not somebody's page: the member's own browser. Here so
19486
- // a caller that needs to point another tool at a particular tab can find
19487
- // the way to do it, rather than opening a second tab of the same page.
19488
- slug: "browser-tabs",
19489
- label: "\uB0B4 \uBE0C\uB77C\uC6B0\uC800 \uD0ED",
19490
- summary: "\uC9C0\uAE08 \uC5F4\uB824 \uC788\uB294 \uD0ED\uC744 \uBCF4\uACE0, \uC5F4\uACE0, \uC55E\uC73C\uB85C \uAC00\uC838\uC624\uACE0, \uB2EB\uB294\uB2E4",
19491
- aliases: ["\uBE0C\uB77C\uC6B0\uC800 \uD0ED", "\uD0ED \uC5F4\uAE30", "\uD0ED \uB2EB\uAE30", "\uD0ED \uC804\uD658"],
19492
- dataScope: "local",
19493
- // The two named here are how this group's surface is created and reduced,
19494
- // and a guard holds them equal to the surface policy - one place would go
19495
- // stale on its own otherwise.
19496
- openerTool: "tab_open",
19497
- reducerTool: "tab_close"
19498
- },
19499
- {
19500
- slug: "benchmark",
19501
- label: "\uACBD\uC7C1\uC790 \uBCA4\uCE58\uB9C8\uD0B9",
19502
- summary: "\uB2E4\uB978 \uBE14\uB85C\uADF8\xB7\uCE74\uD398\xB7\uC778\uD50C\uB8E8\uC5B8\uC11C\uAC00 \uBB34\uC5C7\uC744 \uD558\uB294\uC9C0",
19503
- aliases: ["\uACBD\uC7C1 \uBE14\uB85C\uADF8", "\uACBD\uC7C1\uC790 \uBD84\uC11D", "\uBCA4\uCE58\uB9C8\uD0B9", "\uC778\uD50C\uB8E8\uC5B8\uC11C \uBD84\uC11D"],
19504
- dataScope: "public"
19505
- },
19506
- {
19507
- slug: "place",
19508
- label: "\uB124\uC774\uBC84 \uD50C\uB808\uC774\uC2A4 \uAD00\uB9AC",
19509
- summary: "\uB0B4 \uB9E4\uC7A5 \uC815\uBCF4\xB7\uB9AC\uBDF0\xB7\uC608\uC57D\xB7\uCFE0\uD3F0\xB7\uB300\uAE30",
19510
- aliases: ["\uC6B0\uB9AC \uB9E4\uC7A5", "\uD50C\uB808\uC774\uC2A4 \uB9AC\uBDF0", "\uC608\uC57D", "\uCFE0\uD3F0", "\uB9E4\uC7A5 \uD3C9\uD310"],
19511
- dataScope: "own"
19512
- },
19513
- {
19514
- slug: "shopping",
19515
- label: "\uC1FC\uD551 \uC778\uC0AC\uC774\uD2B8",
19516
- summary: "\uC774 \uC0C1\uD488\uC774 \uC5B8\uC81C \uB204\uAD6C\uC5D0\uAC8C \uD314\uB9AC\uB294\uC9C0",
19517
- aliases: ["\uC1FC\uD551 \uD2B8\uB80C\uB4DC", "\uC0C1\uD488 \uC218\uC694", "\uCE74\uD14C\uACE0\uB9AC \uD310\uB9E4", "\uAD6C\uB9E4 \uC5F0\uB839"],
19518
- dataScope: "public"
19519
- },
19520
- {
19521
- slug: "ad-bidding",
19522
- label: "\uAC80\uC0C9\uAD11\uACE0 \uC785\uCC30",
19523
- // The calls themselves cost nothing, hence the read tier, but they return
19524
- // data only when the user's search-ad account credentials are present.
19525
- summary: "\uC785\uCC30\uAC00\uC640 \uC608\uC0C1 \uC131\uACFC \u2014 \uBB34\uB8CC, \uAC80\uC0C9\uAD11\uACE0 \uACC4\uC815 \uC790\uACA9\uC99D\uBA85 \uD544\uC694",
19526
- aliases: ["\uAC80\uC0C9\uAD11\uACE0", "\uAD11\uACE0 \uC785\uCC30", "\uC785\uCC30\uAC00", "\uAD11\uACE0 \uC131\uACFC", "\uAD11\uACE0\uBE44"],
19527
- dataScope: "own"
19528
- },
19529
- {
19530
- slug: "store-settlement",
19531
- label: "\uC2A4\uD1A0\uC5B4 \uC815\uC0B0\xB7\uB9E4\uCD9C",
19532
- // The seller's own money. Nothing here writes, and the payout account the
19533
- // settlement response carries is dropped before it reaches a host.
19534
- summary: "\uC815\uC0B0 \uC608\uC815\uC77C\uACFC \uAE08\uC561, \uC77C\uBCC4 \uB9E4\uCD9C \u2014 \uCEE4\uBA38\uC2A4API \uC790\uACA9\uC99D\uBA85 \uD544\uC694",
19535
- aliases: ["\uC2A4\uD1A0\uC5B4 \uC815\uC0B0", "\uC815\uC0B0 \uC608\uC815", "\uB9E4\uCD9C", "\uCEE4\uBA38\uC2A4 \uC8FC\uBB38"],
19536
- dataScope: "own"
19537
- },
19538
- {
19539
- slug: "comment-stats",
19540
- label: "\uB313\uAE00 \uBC18\uC751 \uD1B5\uACC4",
19541
- summary: "\uB274\uC2A4 \uB313\uAE00\uC774 \uC5B8\uC81C \uB204\uAD6C\uC5D0\uAC8C \uB2EC\uB9AC\uB294\uC9C0",
19542
- aliases: ["\uB274\uC2A4 \uB313\uAE00", "\uB313\uAE00 \uBC18\uC751", "\uB313\uAE00 \uC131\uBCC4", "\uB313\uAE00 \uC2DC\uAC04\uB300"],
19543
- dataScope: "public"
19544
- },
19545
- {
19546
- slug: "editor-control",
19547
- label: "\uAE00\uC4F0\uAE30 \uCC3D \uC81C\uC5B4",
19548
- summary: "\uC5F4\uB824 \uC788\uB294 \uB124\uC774\uBC84 \uAE00\uC4F0\uAE30 \uCC3D\uC758 \uC6D0\uACE0\uB97C \uC77D\uACE0 \uACE0\uCE5C\uB2E4",
19549
- aliases: ["\uBE14\uB85C\uADF8 \uAE00\uC4F0\uAE30", "\uC5F4\uB9B0 \uC6D0\uACE0", "\uCD08\uC548 \uC218\uC815", "\uC81C\uBAA9 \uC218\uC815"],
19550
- dataScope: "local",
19551
- needsTab: true,
19552
- openerTool: "editor_open_window",
19553
- reducerTool: "editor_reduce_windows",
19554
- steps: [
19555
- "editor_read \uB85C \uC9C0\uAE08 \uAE00\uC5D0 \uBB34\uC5C7\uC774 \uC788\uB294\uC9C0 \uBA3C\uC800 \uD655\uC778\uD55C\uB2E4 \u2014 \uBE48 \uC904 \uC54C\uACE0 \uB36E\uC5B4\uC4F0\uB294 \uAC83\uC774 \uAC00\uC7A5 \uD754\uD55C \uC0AC\uACE0\uB2E4",
19556
- "\uACE0\uCE60 \uB0B4\uC6A9\uC744 \uB9CC\uB4E0\uB2E4",
19557
- "editor_place_draft \uB85C \uB123\uB294\uB2E4. \uC774\uBBF8 \uB0B4\uC6A9\uC774 \uC788\uC73C\uBA74 \uC9C0\uC6B0\uC9C0 \uC54A\uACE0 \uAC70\uC808\uD558\uBA70 \uB2E4\uC74C \uB3C4\uAD6C\uB97C \uC54C\uB824 \uC900\uB2E4",
19558
- "\uC804\uCCB4\uB97C \uAC08\uC544\uC5CE\uC5B4\uC57C \uD560 \uB54C\uB9CC, \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uBB3C\uC5B4\uBCF8 \uB4A4 editor_replace \uB97C \uC4F4\uB2E4"
19559
- ]
19560
- },
19561
- {
19562
- slug: "photo-editor",
19563
- label: "\uC0AC\uC9C4 \uD3B8\uC9D1\uAE30 \uC870\uC791",
19564
- summary: "\uC0AC\uC9C4 \uD3B8\uC9D1\uAE30 \uCE94\uBC84\uC2A4\uC5D0 \uD14D\uC2A4\uD2B8\xB7\uB3C4\uD615\xB7\uC774\uBBF8\uC9C0\uB97C \uB123\uB294\uB2E4",
19565
- aliases: ["\uC0AC\uC9C4 \uD3B8\uC9D1\uAE30", "\uCE74\uB4DC\uB274\uC2A4", "\uCE94\uBC84\uC2A4", "\uC2AC\uB77C\uC774\uB4DC \uB514\uC790\uC778"],
19566
- dataScope: "local",
19567
- needsTab: true,
19568
- openerTool: "photo_project_new",
19569
- reducerTool: "editor_reduce_windows"
19570
- },
19571
- {
19572
- slug: "video-editor",
19573
- label: "\uC601\uC0C1 \uD3B8\uC9D1\uAE30 \uC870\uC791",
19574
- summary: "\uC601\uC0C1 \uD3B8\uC9D1\uAE30\uC758 \uC7A5\uBA74\xB7\uC790\uB9C9\xB7\uBAA9\uC18C\uB9AC\uB97C \uB9CC\uB4E0\uB2E4",
19575
- aliases: ["\uC601\uC0C1 \uD3B8\uC9D1\uAE30", "\uC20F\uD3FC", "\uB9B4\uC2A4", "\uC7A5\uBA74", "\uC790\uB9C9", "AI \uBAA9\uC18C\uB9AC"],
19576
- dataScope: "local",
19577
- needsTab: true,
19578
- openerTool: "video_project_new",
19579
- reducerTool: "editor_reduce_windows"
19580
- },
19581
- {
19582
- slug: "gallery",
19583
- label: "\uC774\uBBF8\uC9C0 \uAC24\uB7EC\uB9AC",
19584
- summary: "\uB0B4\uAC00 \uB9CC\uB4E0 \uC0AC\uC9C4 \uD30C\uC77C\uC744 \uAC24\uB7EC\uB9AC\uC5D0 \uB123\uC5B4 \uB450 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC4F4\uB2E4 \u2014 \uD3B8\uC9D1\uAE30 \uCC3D\uC774 \uC5C6\uC5B4\uB3C4 \uB41C\uB2E4",
19585
- aliases: ["\uC774\uBBF8\uC9C0 \uAC24\uB7EC\uB9AC", "\uC0AC\uC9C4 \uAC00\uC838\uC624\uAE30", "\uC774\uBBF8\uC9C0 \uBCF4\uAD00"],
19586
- dataScope: "local",
19587
- steps: [
19588
- "gallery_image_add \uB85C \uAC24\uB7EC\uB9AC\uC5D0 \uBA3C\uC800 \uB123\uB294\uB2E4",
19589
- "\uD3B8\uC9D1\uAE30 \uCABD \uB3C4\uAD6C\uB85C \uADF8 ref \uB97C \uAC00\uC838\uB2E4 \uC4F4\uB2E4 \u2014 \uAC24\uB7EC\uB9AC\uB97C \uAC70\uCE58\uBA74 \uD3B8\uC9D1\uAE30 \uCC3D\uC774 \uC5C6\uC5B4\uB3C4 \uBBF8\uB9AC \uC900\uBE44\uD560 \uC218 \uC788\uB2E4"
19590
- ]
19591
- }
19592
- ];
19593
- var FALLBACK_SLUG = "other";
19594
- function slugFor(name) {
19595
- for (const e of EXPLICIT) {
19596
- if (e.tools.includes(name)) return e.slug;
19597
- }
19598
- for (const p of BY_PREFIX) {
19599
- if (p.prefixes.some((x) => name.startsWith(x))) return p.slug;
19600
- }
19601
- return FALLBACK_SLUG;
19602
- }
19603
- function buildToolsets(names) {
19604
- const byslug = /* @__PURE__ */ new Map();
19605
- for (const n of names) {
19606
- const s = slugFor(n);
19607
- (byslug.get(s) ?? byslug.set(s, []).get(s)).push(n);
19608
- }
19609
- const out = [];
19610
- for (const m of META) {
19611
- const tools = byslug.get(m.slug) ?? [];
19612
- if (tools.length > 0) out.push({ ...m, tools });
19613
- byslug.delete(m.slug);
19614
- }
19615
- const leftover = byslug.get(FALLBACK_SLUG) ?? [];
19616
- if (leftover.length > 0) {
19617
- out.push({
19618
- slug: FALLBACK_SLUG,
19619
- label: "\uADF8 \uBC16\uC758 \uB3C4\uAD6C",
19620
- summary: "\uC544\uC9C1 \uBB36\uC74C\uC774 \uC815\uD574\uC9C0\uC9C0 \uC54A\uC740 \uB3C4\uAD6C",
19621
- aliases: ["\uAE30\uD0C0"],
19622
- dataScope: "mixed",
19623
- tools: leftover
19624
- });
19625
- }
19626
- return out;
19627
- }
19628
- var CATALOG_TOOL = "datalab_catalog";
19629
19325
  var FIND_TOOLS_TOOL = "datalab_find_tools";
19630
- var DESCRIBE_TOOL = "datalab_describe";
19631
19326
  var CALL_TOOL = "datalab_call";
19632
19327
  var CONFIRM_STATUS_TOOL = "datalab_confirm_status";
19633
19328
  var SESSION_STATE_TOOL = "datalab_session_state";
@@ -19638,10 +19333,7 @@ function browserProperty() {
19638
19333
  description: `${BROWSERS_TOOL} \uAC00 \uB3CC\uB824\uC900 \uC2E4\uD589 \uB300\uC0C1 \uBE0C\uB77C\uC6B0\uC800 id`
19639
19334
  };
19640
19335
  }
19641
- var DESCRIBE_PAGE_SIZE = 10;
19642
- function discoveryDescriptors(entries) {
19643
- const sets = buildToolsets(entries.map((e) => e.name));
19644
- const names = sets.map((s) => s.slug).join(", ");
19336
+ function discoveryDescriptors() {
19645
19337
  return [
19646
19338
  {
19647
19339
  name: FIND_TOOLS_TOOL,
@@ -19661,53 +19353,9 @@ function discoveryDescriptors(entries) {
19661
19353
  additionalProperties: false
19662
19354
  }
19663
19355
  },
19664
- {
19665
- name: CATALOG_TOOL,
19666
- description: `\uB370\uC774\uD130\uB7A9\uD234\uC988\uAC00 \uD560 \uC218 \uC788\uB294 \uC77C\uC758 \uBAA9\uB85D\uC744 \uB3CC\uB824\uC900\uB2E4. \uB124\uC774\uBC84 \uBE14\uB85C\uADF8\xB7\uD0A4\uC6CC\uB4DC\xB7\uAC80\uC0C9\uACB0\uACFC\xB7\uD50C\uB808\uC774\uC2A4\xB7\uC1FC\uD551\xB7\uAD11\uACE0 \uD1B5\uACC4\uC640 \uAE00\uC4F0\uAE30/\uC0AC\uC9C4/\uC601\uC0C1 \uD3B8\uC9D1\uAE30 \uC81C\uC5B4\uAE4C\uC9C0 ${entries.length}\uAC1C \uB3C4\uAD6C\uAC00 \uC788\uACE0, \uC5EC\uAE30 \uC815\uC758\uB85C \uBCF4\uC774\uB294 \uAC83\uC740 \uADF8\uC911 \uC77C\uBD80\uB2E4. **\uC0AC\uC6A9\uC790\uAC00 \uBB34\uC5C7\uC744 \uBD80\uD0C1\uD558\uB4E0, \uC9C0\uAE08 \uBCF4\uC774\uB294 \uB3C4\uAD6C\uB85C \uC548 \uB418\uBA74 \uBA3C\uC800 \uC774\uAC83\uC744 \uBD88\uB7EC\uB77C** \u2014 \uC5C6\uB2E4\uACE0 \uB2F5\uD558\uAE30 \uC804\uC5D0 \uD655\uC778\uD55C\uB2E4. toolset \uC5C6\uC774 \uBD80\uB974\uBA74 \uBB36\uC74C \uBAA9\uB85D, \uC8FC\uBA74 \uADF8 \uBB36\uC74C\uC758 \uB3C4\uAD6C \uC774\uB984\uACFC \uC124\uBA85. \uBB36\uC74C: ${names}.`,
19667
- annotations: LOOKUP_ANNOTATIONS,
19668
- inputSchema: {
19669
- type: "object",
19670
- properties: {
19671
- toolset: {
19672
- type: "string",
19673
- enum: sets.map((s) => s.slug),
19674
- description: "\uC774 \uBB36\uC74C\uC758 \uB3C4\uAD6C \uBAA9\uB85D\uC744 \uBCF8\uB2E4. \uC0DD\uB7B5\uD558\uBA74 \uBB36\uC74C \uBAA9\uB85D\uB9CC"
19675
- },
19676
- query: {
19677
- type: "string",
19678
- description: "\uCC3E\uB294 \uB9D0(\uC608: '\uBC29\uBB38\uC790', '\uACBD\uC7C1'). \uC774\uB984\uACFC \uC124\uBA85\uC5D0\uC11C \uCC3E\uACE0, \uBB36\uC74C \uC774\uB984\uC774 \uB9DE\uC73C\uBA74 \uADF8 \uBB36\uC74C\uB3C4 \uD568\uAED8 \uB3CC\uB824\uC900\uB2E4"
19679
- },
19680
- withSchemas: {
19681
- type: "boolean",
19682
- description: `\uC778\uC790 \uC2A4\uD0A4\uB9C8\uAE4C\uC9C0 \uD568\uAED8 \uBC1B\uB294\uB2E4 \u2014 \uADF8\uB7EC\uBA74 ${DESCRIBE_TOOL} \uC5C6\uC774 \uBC14\uB85C \uC2E4\uD589\uD560 \uC218 \uC788\uB2E4. toolset \uC774\uB098 query \uC640 \uAC19\uC774 \uC904 \uB54C\uB9CC \uC4F4\uB2E4`
19683
- },
19684
- browser: browserProperty()
19685
- },
19686
- additionalProperties: false
19687
- }
19688
- },
19689
- {
19690
- name: DESCRIBE_TOOL,
19691
- description: `\uB3C4\uAD6C\uC758 \uC778\uC790 \uC2A4\uD0A4\uB9C8\uB97C \uB3CC\uB824\uC900\uB2E4. **${CALL_TOOL} \uB85C \uBD80\uB974\uAE30 \uC804\uC5D0 \uADF8 \uB3C4\uAD6C\uC5D0 \uB300\uD574 \uCD5C\uC18C \uD55C \uBC88\uC740 \uC774\uAC83\uC744 \uD638\uCD9C\uD574\uB77C** \u2014 \uC778\uC790 \uC774\uB984\uACFC \uD544\uC218 \uC5EC\uBD80\uB97C \uC9C0\uC5B4\uB0B4\uBA74 \uAC70\uC808\uB418\uACE0, \uC655\uBCF5\uC774 \uD55C \uBC88 \uB354 \uB4E0\uB2E4. \uC774\uBBF8 \uC2A4\uD0A4\uB9C8\uB97C \uBC1B\uC544 \uB454 \uB3C4\uAD6C\uB294 \uB2E4\uC2DC \uBD80\uB97C \uD544\uC694 \uC5C6\uB2E4.`,
19692
- annotations: LOOKUP_ANNOTATIONS,
19693
- inputSchema: {
19694
- type: "object",
19695
- properties: {
19696
- tools: {
19697
- type: "array",
19698
- items: { type: "string" },
19699
- maxItems: DESCRIBE_PAGE_SIZE,
19700
- description: `\uC2A4\uD0A4\uB9C8\uB97C \uBCFC \uB3C4\uAD6C \uC774\uB984 (\uD55C \uBC88\uC5D0 ${DESCRIBE_PAGE_SIZE}\uAC1C\uAE4C\uC9C0)`
19701
- },
19702
- browser: browserProperty()
19703
- },
19704
- required: ["tools"],
19705
- additionalProperties: false
19706
- }
19707
- },
19708
19356
  {
19709
19357
  name: CALL_TOOL,
19710
- description: `${FIND_TOOLS_TOOL} \uB610\uB294 ${CATALOG_TOOL} \uB85C \uCC3E\uC740 \uB3C4\uAD6C\uB97C \uC2E4\uD589\uD55C\uB2E4. args \uB294 \uAC80\uC0C9 \uACB0\uACFC\uB098 ${DESCRIBE_TOOL} \uAC00 \uC900 \uC2A4\uD0A4\uB9C8\uB97C \uADF8\uB300\uB85C \uB530\uB978\uB2E4 \u2014 \uB9DE\uC9C0 \uC54A\uC73C\uBA74 \uC2E4\uD589\uD558\uC9C0 \uC54A\uACE0 \uBB34\uC5C7\uC774 \uD2C0\uB838\uB294\uC9C0 \uB3CC\uB824\uC900\uB2E4. \uBB38\uC11C\uB97C \uACE0\uCE58\uAC70\uB098 \uC694\uAE08\uC774 \uB4DC\uB294 \uB3C4\uAD6C\uB294 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uD655\uC778\uC744 \uBC1B\uC740 \uB4A4\uC5D0 \uC2E4\uD589\uB41C\uB2E4.`,
19358
+ description: `${FIND_TOOLS_TOOL} \uB85C \uCC3E\uC740 \uB3C4\uAD6C\uB97C \uC2E4\uD589\uD55C\uB2E4. args \uB294 \uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC900 \uC2A4\uD0A4\uB9C8\uB97C \uADF8\uB300\uB85C \uB530\uB978\uB2E4 \u2014 \uB9DE\uC9C0 \uC54A\uC73C\uBA74 \uC2E4\uD589\uD558\uC9C0 \uC54A\uACE0 \uBB34\uC5C7\uC774 \uD2C0\uB838\uB294\uC9C0 \uB3CC\uB824\uC900\uB2E4. \uBB38\uC11C\uB97C \uACE0\uCE58\uAC70\uB098 \uC694\uAE08\uC774 \uB4DC\uB294 \uB3C4\uAD6C\uB294 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uD655\uC778\uC744 \uBC1B\uC740 \uB4A4\uC5D0 \uC2E4\uD589\uB41C\uB2E4.`,
19711
19359
  // Deliberately unannotated: this tool's effect is the delegated tool's
19712
19360
  // effect, so any fixed hint would be half false. Tier is judged at run time.
19713
19361
  inputSchema: {
@@ -19716,7 +19364,7 @@ function discoveryDescriptors(entries) {
19716
19364
  tool: { type: "string", description: "\uC2E4\uD589\uD560 \uB3C4\uAD6C \uC774\uB984" },
19717
19365
  args: {
19718
19366
  type: "object",
19719
- description: `\uADF8 \uB3C4\uAD6C\uC758 \uC778\uC790. ${DESCRIBE_TOOL} \uC758 \uC2A4\uD0A4\uB9C8\uB97C \uB530\uB978\uB2E4`
19367
+ description: `\uADF8 \uB3C4\uAD6C\uC758 \uC778\uC790. ${FIND_TOOLS_TOOL} \uAC00 \uBC18\uD658\uD55C \uC2A4\uD0A4\uB9C8\uB97C \uB530\uB978\uB2E4`
19720
19368
  },
19721
19369
  browser: browserProperty()
19722
19370
  },
@@ -19767,15 +19415,9 @@ function browsersDescriptor() {
19767
19415
  annotations: LOOKUP_ANNOTATIONS
19768
19416
  };
19769
19417
  }
19770
- function allowlistNames() {
19771
- return [.../* @__PURE__ */ new Set([...READ_ONLY_TOOLS, ...Object.keys(TOOL_TIERS)])];
19772
- }
19773
19418
  function staticDiscoveryCatalog() {
19774
- const entries = allowlistNames().map(
19775
- (name) => name === BROWSERS_TOOL ? browsersDescriptor() : { name, description: "", inputSchema: {} }
19776
- );
19777
19419
  return [
19778
- ...discoveryDescriptors(entries),
19420
+ ...discoveryDescriptors(),
19779
19421
  sessionStateDescriptor(),
19780
19422
  browsersDescriptor()
19781
19423
  ].map(
@@ -20980,8 +20622,6 @@ function timingMeta(timing) {
20980
20622
  };
20981
20623
  }
20982
20624
  var ROUTED_FACADES = /* @__PURE__ */ new Set([
20983
- CATALOG_TOOL,
20984
- DESCRIBE_TOOL,
20985
20625
  CALL_TOOL,
20986
20626
  CONFIRM_STATUS_TOOL,
20987
20627
  SESSION_STATE_TOOL
@@ -41462,312 +41102,7 @@ var REASON_POLICY2 = Object.freeze({
41462
41102
  capacity_unavailable: Object.freeze({ retryable: true }),
41463
41103
  uploads_unproven: Object.freeze({ retryable: true })
41464
41104
  });
41465
- var BLOG_BRIEF2 = [
41466
- "my_daily_brief",
41467
- "my_blog_summary",
41468
- "my_realtime",
41469
- "my_traffic_series",
41470
- "my_top_content",
41471
- "my_soaring",
41472
- "my_publish_calendar",
41473
- "daily_trend",
41474
- "my_moments"
41475
- ];
41476
- var BLOG_INSIGHTS2 = [
41477
- "my_content_audience",
41478
- "my_inflow",
41479
- "my_audience",
41480
- "my_inflow_domain",
41481
- "my_country",
41482
- "my_device",
41483
- "my_dwell",
41484
- "my_followers",
41485
- "my_revisit",
41486
- "my_revenue",
41487
- "my_impression_click",
41488
- "my_impression_ranks",
41489
- "my_channels",
41490
- "my_revenue_ranks",
41491
- "my_revenue_efficiency",
41492
- "my_content_info",
41493
- "my_content_read",
41494
- "my_content_detail",
41495
- "my_content_inflow"
41496
- ];
41497
- var RESEARCH2 = [
41498
- // Caught by serp-watch's "search_" prefix, but this group's own steps open
41499
- // by calling it. A step naming a tool the group does not contain sends the
41500
- // caller to a catalog page it is not on.
41501
- "search_keywords",
41502
- "local_regions",
41503
- "local_job_categories",
41504
- "local_region_trend",
41505
- "local_area_category_rank",
41506
- "content_volume",
41507
- "autocomplete_keywords",
41508
- "qra_keywords",
41509
- "kin_question_demand",
41510
- "web_read",
41511
- "run_research",
41512
- // Planning tools: they need a model but call none here, returning prompt
41513
- // material instead. Grouped by job — all three design a post not yet written.
41514
- "outline_suggest",
41515
- "seo_aeo_geo_spec",
41516
- "content_calendar",
41517
- // The last step of that job: turn the design into an actual draft.
41518
- "write_draft",
41519
- // Names which of the above comes next given what the caller just measured —
41520
- // the part of the job that cannot be written down ahead of time.
41521
- "write_pipeline_step"
41522
- ];
41523
- var EDITOR_CONTROL2 = [
41524
- // The tool that opens a tab belongs in the group that requires one: a
41525
- // model choosing this group was just told it needs a tab, and the way out
41526
- // has to be visible at the wall, not in some other group.
41527
- "editor_open_window",
41528
- "editor_reduce_windows",
41529
- "editor_read",
41530
- "editor_read_structure",
41531
- "editor_undo",
41532
- "editor_replace",
41533
- "editor_insert_draft",
41534
- // Lands a draft from any window state without ever overwriting — refuses and
41535
- // names the tool to use instead when the body is occupied.
41536
- "editor_place_draft",
41537
- "editor_set_title",
41538
- // The whole plan in one call, for a run nobody is watching. Same group as the
41539
- // steps it contains — a model that reached for those should see this too.
41540
- "editor_apply_manifest",
41541
- // Both act on the open draft: title_optimize proposes titles for it, and
41542
- // internal_links reads it.
41543
- "title_optimize",
41544
- "internal_links",
41545
- "editor_insert_image",
41546
- "seo_scorecard"
41547
- ];
41548
- var BY_PREFIX2 = [
41549
- { slug: "serp-watch", prefixes: ["search_", "serp_"] },
41550
- { slug: "benchmark", prefixes: ["blog_", "cafe_", "influencer_"] },
41551
- { slug: "place", prefixes: ["place_"] },
41552
- { slug: "shopping", prefixes: ["shopping_"] },
41553
- { slug: "ad-bidding", prefixes: ["ad_"] },
41554
- { slug: "store-settlement", prefixes: ["commerce_"] },
41555
- { slug: "comment-stats", prefixes: ["comment_"] },
41556
- { slug: "photo-editor", prefixes: ["photo_"] },
41557
- { slug: "video-editor", prefixes: ["video_"] },
41558
- { slug: "keyword-research", prefixes: ["keyword_"] },
41559
- { slug: "pumasi", prefixes: ["pumasi_"] },
41560
- { slug: "browser-tabs", prefixes: ["tab_"] }
41561
- ];
41562
- var GALLERY2 = ["gallery_image_add"];
41563
- var EXPLICIT2 = [
41564
- { slug: "connection", tools: ["datalab_browsers"] },
41565
- { slug: "gallery", tools: GALLERY2 },
41566
- { slug: "blog-brief", tools: BLOG_BRIEF2 },
41567
- { slug: "blog-insights", tools: BLOG_INSIGHTS2 },
41568
- { slug: "keyword-research", tools: RESEARCH2 },
41569
- { slug: "editor-control", tools: EDITOR_CONTROL2 },
41570
- // Named like the group but caught by none of its prefixes, so it is listed
41571
- // explicitly — a similar name is not a membership rule.
41572
- { slug: "benchmark", tools: ["benchmark_gap"] }
41573
- ];
41574
- var META2 = [
41575
- {
41576
- slug: "connection",
41577
- label: "\uC5F0\uACB0 \uBE0C\uB77C\uC6B0\uC800",
41578
- summary: "\uC5EC\uB7EC \uBE0C\uB77C\uC6B0\uC800\xB7\uD504\uB85C\uD544 \uC911 \uB3C4\uAD6C\uB97C \uC2E4\uD589\uD560 \uACF3\uC744 \uACE0\uB978\uB2E4",
41579
- aliases: ["\uBE0C\uB77C\uC6B0\uC800 \uC120\uD0DD", "\uD504\uB85C\uD544 \uC120\uD0DD", "\uD06C\uB86C \uC5F0\uACB0", "\uC6E8\uC77C \uC5F0\uACB0"],
41580
- dataScope: "local"
41581
- },
41582
- {
41583
- slug: "blog-brief",
41584
- label: "\uC624\uB298\uC758 \uBE14\uB85C\uADF8 \uBE0C\uB9AC\uD551",
41585
- summary: "\uB0B4 \uBE14\uB85C\uADF8\uAC00 \uC9C0\uAE08 \uC5B4\uB5A4\uC9C0 \u2014 \uBC29\uBB38\xB7\uC870\uD68C\xB7\uC778\uAE30\uAE00\xB7\uC2E4\uC2DC\uAC04",
41586
- aliases: ["\uB0B4 \uBE14\uB85C\uADF8 \uC131\uACFC", "\uBC29\uBB38\uC790", "\uC870\uD68C\uC218", "\uC778\uAE30\uAE00", "\uC2E4\uC2DC\uAC04 \uD1B5\uACC4"],
41587
- dataScope: "own"
41588
- },
41589
- {
41590
- slug: "blog-insights",
41591
- label: "\uBE14\uB85C\uADF8 \uC2EC\uCE35 \uBD84\uC11D",
41592
- summary: "\uC65C \uADF8\uB7F0\uC9C0 \u2014 \uC720\uC785 \uACBD\uB85C\xB7\uC131\uBCC4\uC5F0\uB839\xB7\uCCB4\uB958\xB7\uC218\uC775\xB7\uAE00\uBCC4 \uC0C1\uC138",
41593
- aliases: ["\uBE14\uB85C\uADF8 \uC720\uC785", "\uB3C5\uC790 \uBD84\uC11D", "\uCCB4\uB958\uC2DC\uAC04", "\uC7AC\uBC29\uBB38", "\uBE14\uB85C\uADF8 \uC218\uC775"],
41594
- dataScope: "own"
41595
- },
41596
- {
41597
- slug: "keyword-research",
41598
- label: "\uD0A4\uC6CC\uB4DC\xB7\uAE00\uAC10 \uB9AC\uC11C\uCE58",
41599
- summary: "\uBB34\uC5C7\uC744 \uC4F8\uC9C0 \u2014 \uD0A4\uC6CC\uB4DC \uC218\uC694\xB7\uC5F0\uAD00\uC5B4\xB7\uC790\uB3D9\uC644\uC131\xB7\uBC1C\uD589\uB7C9\xB7\uC9C0\uC2DDiN \uC9C8\uBB38\xB7\uC9C0\uC5ED \uD2B8\uB80C\uB4DC",
41600
- aliases: ["\uD0A4\uC6CC\uB4DC \uC870\uC0AC", "\uAC80\uC0C9\uB7C9", "\uC5F0\uAD00\uC5B4", "\uAE00\uAC10", "\uCF58\uD150\uCE20 \uC544\uC774\uB514\uC5B4"],
41601
- dataScope: "mixed",
41602
- steps: [
41603
- "search_keywords \uB85C \uC218\uC694\uB97C \uBCF8\uB2E4",
41604
- "content_volume \uC73C\uB85C \uC774\uBBF8 \uC5BC\uB9C8\uB098 \uC4F0\uC600\uB294\uC9C0 \uBCF8\uB2E4 \u2014 \uC218\uC694\uB9CC \uBCF4\uACE0 \uACE0\uB974\uBA74 \uD3EC\uD654\uB41C \uD0A4\uC6CC\uB4DC\uB97C \uACE0\uB978\uB2E4",
41605
- "keyword_opportunity \uB85C \uB458\uC744 \uACAC\uC918 \uBE48\uD2C8\uC744 \uCC3E\uB294\uB2E4"
41606
- ]
41607
- },
41608
- {
41609
- slug: "serp-watch",
41610
- label: "\uB124\uC774\uBC84 \uAC80\uC0C9\uACB0\uACFC \uD655\uC778",
41611
- summary: "\uC774 \uAC80\uC0C9\uC5B4\uC5D0 \uC9C0\uAE08 \uB124\uC774\uBC84\uAC00 \uBB34\uC5C7\uC744 \uB744\uC6B0\uB294\uC9C0",
41612
- aliases: ["\uB124\uC774\uBC84 \uAC80\uC0C9\uACB0\uACFC", "\uC0C1\uC704 \uB178\uCD9C", "\uAC80\uC0C9 \uC21C\uC704", "SERP"],
41613
- dataScope: "public"
41614
- },
41615
- {
41616
- // The summary says whose page it is, because this is the one group whose
41617
- // tools act somewhere the member does not own.
41618
- slug: "pumasi",
41619
- label: "\uD488\uC557\uC774 \u2014 \uB2E4\uB978 \uC0AC\uB78C\uC758 \uAE00",
41620
- summary: "\uB2E4\uB978 \uC0AC\uB78C\uC758 \uBE14\uB85C\uADF8\uC5D0\uC11C \uB313\uAE00\uCE78\xB7\uC774\uC6C3\uCD94\uAC00 \uCC3D\uC744 \uC5F4\uACE0 \uB0B4 \uACF5\uAC10 \uC0C1\uD0DC\uB97C \uC77D\uB294\uB2E4",
41621
- aliases: ["\uD488\uC557\uC774", "\uACF5\uAC10 \uC0C1\uD0DC", "\uB313\uAE00 \uC791\uC131", "\uC774\uC6C3 \uC2E0\uCCAD", "\uC11C\uB85C\uC774\uC6C3"],
41622
- dataScope: "mixed"
41623
- },
41624
- {
41625
- // Not a subject and not somebody's page: the member's own browser. Here so
41626
- // a caller that needs to point another tool at a particular tab can find
41627
- // the way to do it, rather than opening a second tab of the same page.
41628
- slug: "browser-tabs",
41629
- label: "\uB0B4 \uBE0C\uB77C\uC6B0\uC800 \uD0ED",
41630
- summary: "\uC9C0\uAE08 \uC5F4\uB824 \uC788\uB294 \uD0ED\uC744 \uBCF4\uACE0, \uC5F4\uACE0, \uC55E\uC73C\uB85C \uAC00\uC838\uC624\uACE0, \uB2EB\uB294\uB2E4",
41631
- aliases: ["\uBE0C\uB77C\uC6B0\uC800 \uD0ED", "\uD0ED \uC5F4\uAE30", "\uD0ED \uB2EB\uAE30", "\uD0ED \uC804\uD658"],
41632
- dataScope: "local",
41633
- // The two named here are how this group's surface is created and reduced,
41634
- // and a guard holds them equal to the surface policy - one place would go
41635
- // stale on its own otherwise.
41636
- openerTool: "tab_open",
41637
- reducerTool: "tab_close"
41638
- },
41639
- {
41640
- slug: "benchmark",
41641
- label: "\uACBD\uC7C1\uC790 \uBCA4\uCE58\uB9C8\uD0B9",
41642
- summary: "\uB2E4\uB978 \uBE14\uB85C\uADF8\xB7\uCE74\uD398\xB7\uC778\uD50C\uB8E8\uC5B8\uC11C\uAC00 \uBB34\uC5C7\uC744 \uD558\uB294\uC9C0",
41643
- aliases: ["\uACBD\uC7C1 \uBE14\uB85C\uADF8", "\uACBD\uC7C1\uC790 \uBD84\uC11D", "\uBCA4\uCE58\uB9C8\uD0B9", "\uC778\uD50C\uB8E8\uC5B8\uC11C \uBD84\uC11D"],
41644
- dataScope: "public"
41645
- },
41646
- {
41647
- slug: "place",
41648
- label: "\uB124\uC774\uBC84 \uD50C\uB808\uC774\uC2A4 \uAD00\uB9AC",
41649
- summary: "\uB0B4 \uB9E4\uC7A5 \uC815\uBCF4\xB7\uB9AC\uBDF0\xB7\uC608\uC57D\xB7\uCFE0\uD3F0\xB7\uB300\uAE30",
41650
- aliases: ["\uC6B0\uB9AC \uB9E4\uC7A5", "\uD50C\uB808\uC774\uC2A4 \uB9AC\uBDF0", "\uC608\uC57D", "\uCFE0\uD3F0", "\uB9E4\uC7A5 \uD3C9\uD310"],
41651
- dataScope: "own"
41652
- },
41653
- {
41654
- slug: "shopping",
41655
- label: "\uC1FC\uD551 \uC778\uC0AC\uC774\uD2B8",
41656
- summary: "\uC774 \uC0C1\uD488\uC774 \uC5B8\uC81C \uB204\uAD6C\uC5D0\uAC8C \uD314\uB9AC\uB294\uC9C0",
41657
- aliases: ["\uC1FC\uD551 \uD2B8\uB80C\uB4DC", "\uC0C1\uD488 \uC218\uC694", "\uCE74\uD14C\uACE0\uB9AC \uD310\uB9E4", "\uAD6C\uB9E4 \uC5F0\uB839"],
41658
- dataScope: "public"
41659
- },
41660
- {
41661
- slug: "ad-bidding",
41662
- label: "\uAC80\uC0C9\uAD11\uACE0 \uC785\uCC30",
41663
- // The calls themselves cost nothing, hence the read tier, but they return
41664
- // data only when the user's search-ad account credentials are present.
41665
- summary: "\uC785\uCC30\uAC00\uC640 \uC608\uC0C1 \uC131\uACFC \u2014 \uBB34\uB8CC, \uAC80\uC0C9\uAD11\uACE0 \uACC4\uC815 \uC790\uACA9\uC99D\uBA85 \uD544\uC694",
41666
- aliases: ["\uAC80\uC0C9\uAD11\uACE0", "\uAD11\uACE0 \uC785\uCC30", "\uC785\uCC30\uAC00", "\uAD11\uACE0 \uC131\uACFC", "\uAD11\uACE0\uBE44"],
41667
- dataScope: "own"
41668
- },
41669
- {
41670
- slug: "store-settlement",
41671
- label: "\uC2A4\uD1A0\uC5B4 \uC815\uC0B0\xB7\uB9E4\uCD9C",
41672
- // The seller's own money. Nothing here writes, and the payout account the
41673
- // settlement response carries is dropped before it reaches a host.
41674
- summary: "\uC815\uC0B0 \uC608\uC815\uC77C\uACFC \uAE08\uC561, \uC77C\uBCC4 \uB9E4\uCD9C \u2014 \uCEE4\uBA38\uC2A4API \uC790\uACA9\uC99D\uBA85 \uD544\uC694",
41675
- aliases: ["\uC2A4\uD1A0\uC5B4 \uC815\uC0B0", "\uC815\uC0B0 \uC608\uC815", "\uB9E4\uCD9C", "\uCEE4\uBA38\uC2A4 \uC8FC\uBB38"],
41676
- dataScope: "own"
41677
- },
41678
- {
41679
- slug: "comment-stats",
41680
- label: "\uB313\uAE00 \uBC18\uC751 \uD1B5\uACC4",
41681
- summary: "\uB274\uC2A4 \uB313\uAE00\uC774 \uC5B8\uC81C \uB204\uAD6C\uC5D0\uAC8C \uB2EC\uB9AC\uB294\uC9C0",
41682
- aliases: ["\uB274\uC2A4 \uB313\uAE00", "\uB313\uAE00 \uBC18\uC751", "\uB313\uAE00 \uC131\uBCC4", "\uB313\uAE00 \uC2DC\uAC04\uB300"],
41683
- dataScope: "public"
41684
- },
41685
- {
41686
- slug: "editor-control",
41687
- label: "\uAE00\uC4F0\uAE30 \uCC3D \uC81C\uC5B4",
41688
- summary: "\uC5F4\uB824 \uC788\uB294 \uB124\uC774\uBC84 \uAE00\uC4F0\uAE30 \uCC3D\uC758 \uC6D0\uACE0\uB97C \uC77D\uACE0 \uACE0\uCE5C\uB2E4",
41689
- aliases: ["\uBE14\uB85C\uADF8 \uAE00\uC4F0\uAE30", "\uC5F4\uB9B0 \uC6D0\uACE0", "\uCD08\uC548 \uC218\uC815", "\uC81C\uBAA9 \uC218\uC815"],
41690
- dataScope: "local",
41691
- needsTab: true,
41692
- openerTool: "editor_open_window",
41693
- reducerTool: "editor_reduce_windows",
41694
- steps: [
41695
- "editor_read \uB85C \uC9C0\uAE08 \uAE00\uC5D0 \uBB34\uC5C7\uC774 \uC788\uB294\uC9C0 \uBA3C\uC800 \uD655\uC778\uD55C\uB2E4 \u2014 \uBE48 \uC904 \uC54C\uACE0 \uB36E\uC5B4\uC4F0\uB294 \uAC83\uC774 \uAC00\uC7A5 \uD754\uD55C \uC0AC\uACE0\uB2E4",
41696
- "\uACE0\uCE60 \uB0B4\uC6A9\uC744 \uB9CC\uB4E0\uB2E4",
41697
- "editor_place_draft \uB85C \uB123\uB294\uB2E4. \uC774\uBBF8 \uB0B4\uC6A9\uC774 \uC788\uC73C\uBA74 \uC9C0\uC6B0\uC9C0 \uC54A\uACE0 \uAC70\uC808\uD558\uBA70 \uB2E4\uC74C \uB3C4\uAD6C\uB97C \uC54C\uB824 \uC900\uB2E4",
41698
- "\uC804\uCCB4\uB97C \uAC08\uC544\uC5CE\uC5B4\uC57C \uD560 \uB54C\uB9CC, \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uBB3C\uC5B4\uBCF8 \uB4A4 editor_replace \uB97C \uC4F4\uB2E4"
41699
- ]
41700
- },
41701
- {
41702
- slug: "photo-editor",
41703
- label: "\uC0AC\uC9C4 \uD3B8\uC9D1\uAE30 \uC870\uC791",
41704
- summary: "\uC0AC\uC9C4 \uD3B8\uC9D1\uAE30 \uCE94\uBC84\uC2A4\uC5D0 \uD14D\uC2A4\uD2B8\xB7\uB3C4\uD615\xB7\uC774\uBBF8\uC9C0\uB97C \uB123\uB294\uB2E4",
41705
- aliases: ["\uC0AC\uC9C4 \uD3B8\uC9D1\uAE30", "\uCE74\uB4DC\uB274\uC2A4", "\uCE94\uBC84\uC2A4", "\uC2AC\uB77C\uC774\uB4DC \uB514\uC790\uC778"],
41706
- dataScope: "local",
41707
- needsTab: true,
41708
- openerTool: "photo_project_new",
41709
- reducerTool: "editor_reduce_windows"
41710
- },
41711
- {
41712
- slug: "video-editor",
41713
- label: "\uC601\uC0C1 \uD3B8\uC9D1\uAE30 \uC870\uC791",
41714
- summary: "\uC601\uC0C1 \uD3B8\uC9D1\uAE30\uC758 \uC7A5\uBA74\xB7\uC790\uB9C9\xB7\uBAA9\uC18C\uB9AC\uB97C \uB9CC\uB4E0\uB2E4",
41715
- aliases: ["\uC601\uC0C1 \uD3B8\uC9D1\uAE30", "\uC20F\uD3FC", "\uB9B4\uC2A4", "\uC7A5\uBA74", "\uC790\uB9C9", "AI \uBAA9\uC18C\uB9AC"],
41716
- dataScope: "local",
41717
- needsTab: true,
41718
- openerTool: "video_project_new",
41719
- reducerTool: "editor_reduce_windows"
41720
- },
41721
- {
41722
- slug: "gallery",
41723
- label: "\uC774\uBBF8\uC9C0 \uAC24\uB7EC\uB9AC",
41724
- summary: "\uB0B4\uAC00 \uB9CC\uB4E0 \uC0AC\uC9C4 \uD30C\uC77C\uC744 \uAC24\uB7EC\uB9AC\uC5D0 \uB123\uC5B4 \uB450 \uD3B8\uC9D1\uAE30\uC5D0\uC11C \uC4F4\uB2E4 \u2014 \uD3B8\uC9D1\uAE30 \uCC3D\uC774 \uC5C6\uC5B4\uB3C4 \uB41C\uB2E4",
41725
- aliases: ["\uC774\uBBF8\uC9C0 \uAC24\uB7EC\uB9AC", "\uC0AC\uC9C4 \uAC00\uC838\uC624\uAE30", "\uC774\uBBF8\uC9C0 \uBCF4\uAD00"],
41726
- dataScope: "local",
41727
- steps: [
41728
- "gallery_image_add \uB85C \uAC24\uB7EC\uB9AC\uC5D0 \uBA3C\uC800 \uB123\uB294\uB2E4",
41729
- "\uD3B8\uC9D1\uAE30 \uCABD \uB3C4\uAD6C\uB85C \uADF8 ref \uB97C \uAC00\uC838\uB2E4 \uC4F4\uB2E4 \u2014 \uAC24\uB7EC\uB9AC\uB97C \uAC70\uCE58\uBA74 \uD3B8\uC9D1\uAE30 \uCC3D\uC774 \uC5C6\uC5B4\uB3C4 \uBBF8\uB9AC \uC900\uBE44\uD560 \uC218 \uC788\uB2E4"
41730
- ]
41731
- }
41732
- ];
41733
- var FALLBACK_SLUG2 = "other";
41734
- function slugFor2(name) {
41735
- for (const e of EXPLICIT2) {
41736
- if (e.tools.includes(name)) return e.slug;
41737
- }
41738
- for (const p of BY_PREFIX2) {
41739
- if (p.prefixes.some((x) => name.startsWith(x))) return p.slug;
41740
- }
41741
- return FALLBACK_SLUG2;
41742
- }
41743
- function buildToolsets2(names) {
41744
- const byslug = /* @__PURE__ */ new Map();
41745
- for (const n of names) {
41746
- const s = slugFor2(n);
41747
- (byslug.get(s) ?? byslug.set(s, []).get(s)).push(n);
41748
- }
41749
- const out = [];
41750
- for (const m of META2) {
41751
- const tools = byslug.get(m.slug) ?? [];
41752
- if (tools.length > 0) out.push({ ...m, tools });
41753
- byslug.delete(m.slug);
41754
- }
41755
- const leftover = byslug.get(FALLBACK_SLUG2) ?? [];
41756
- if (leftover.length > 0) {
41757
- out.push({
41758
- slug: FALLBACK_SLUG2,
41759
- label: "\uADF8 \uBC16\uC758 \uB3C4\uAD6C",
41760
- summary: "\uC544\uC9C1 \uBB36\uC74C\uC774 \uC815\uD574\uC9C0\uC9C0 \uC54A\uC740 \uB3C4\uAD6C",
41761
- aliases: ["\uAE30\uD0C0"],
41762
- dataScope: "mixed",
41763
- tools: leftover
41764
- });
41765
- }
41766
- return out;
41767
- }
41768
- var CATALOG_TOOL2 = "datalab_catalog";
41769
41105
  var FIND_TOOLS_TOOL2 = "datalab_find_tools";
41770
- var DESCRIBE_TOOL2 = "datalab_describe";
41771
41106
  var CALL_TOOL2 = "datalab_call";
41772
41107
  var CONFIRM_STATUS_TOOL2 = "datalab_confirm_status";
41773
41108
  var SESSION_STATE_TOOL2 = "datalab_session_state";
@@ -41778,10 +41113,7 @@ function browserProperty2() {
41778
41113
  description: `${BROWSERS_TOOL2} \uAC00 \uB3CC\uB824\uC900 \uC2E4\uD589 \uB300\uC0C1 \uBE0C\uB77C\uC6B0\uC800 id`
41779
41114
  };
41780
41115
  }
41781
- var DESCRIBE_PAGE_SIZE2 = 10;
41782
- function discoveryDescriptors2(entries) {
41783
- const sets = buildToolsets2(entries.map((e) => e.name));
41784
- const names = sets.map((s) => s.slug).join(", ");
41116
+ function discoveryDescriptors2() {
41785
41117
  return [
41786
41118
  {
41787
41119
  name: FIND_TOOLS_TOOL2,
@@ -41801,53 +41133,9 @@ function discoveryDescriptors2(entries) {
41801
41133
  additionalProperties: false
41802
41134
  }
41803
41135
  },
41804
- {
41805
- name: CATALOG_TOOL2,
41806
- description: `\uB370\uC774\uD130\uB7A9\uD234\uC988\uAC00 \uD560 \uC218 \uC788\uB294 \uC77C\uC758 \uBAA9\uB85D\uC744 \uB3CC\uB824\uC900\uB2E4. \uB124\uC774\uBC84 \uBE14\uB85C\uADF8\xB7\uD0A4\uC6CC\uB4DC\xB7\uAC80\uC0C9\uACB0\uACFC\xB7\uD50C\uB808\uC774\uC2A4\xB7\uC1FC\uD551\xB7\uAD11\uACE0 \uD1B5\uACC4\uC640 \uAE00\uC4F0\uAE30/\uC0AC\uC9C4/\uC601\uC0C1 \uD3B8\uC9D1\uAE30 \uC81C\uC5B4\uAE4C\uC9C0 ${entries.length}\uAC1C \uB3C4\uAD6C\uAC00 \uC788\uACE0, \uC5EC\uAE30 \uC815\uC758\uB85C \uBCF4\uC774\uB294 \uAC83\uC740 \uADF8\uC911 \uC77C\uBD80\uB2E4. **\uC0AC\uC6A9\uC790\uAC00 \uBB34\uC5C7\uC744 \uBD80\uD0C1\uD558\uB4E0, \uC9C0\uAE08 \uBCF4\uC774\uB294 \uB3C4\uAD6C\uB85C \uC548 \uB418\uBA74 \uBA3C\uC800 \uC774\uAC83\uC744 \uBD88\uB7EC\uB77C** \u2014 \uC5C6\uB2E4\uACE0 \uB2F5\uD558\uAE30 \uC804\uC5D0 \uD655\uC778\uD55C\uB2E4. toolset \uC5C6\uC774 \uBD80\uB974\uBA74 \uBB36\uC74C \uBAA9\uB85D, \uC8FC\uBA74 \uADF8 \uBB36\uC74C\uC758 \uB3C4\uAD6C \uC774\uB984\uACFC \uC124\uBA85. \uBB36\uC74C: ${names}.`,
41807
- annotations: LOOKUP_ANNOTATIONS2,
41808
- inputSchema: {
41809
- type: "object",
41810
- properties: {
41811
- toolset: {
41812
- type: "string",
41813
- enum: sets.map((s) => s.slug),
41814
- description: "\uC774 \uBB36\uC74C\uC758 \uB3C4\uAD6C \uBAA9\uB85D\uC744 \uBCF8\uB2E4. \uC0DD\uB7B5\uD558\uBA74 \uBB36\uC74C \uBAA9\uB85D\uB9CC"
41815
- },
41816
- query: {
41817
- type: "string",
41818
- description: "\uCC3E\uB294 \uB9D0(\uC608: '\uBC29\uBB38\uC790', '\uACBD\uC7C1'). \uC774\uB984\uACFC \uC124\uBA85\uC5D0\uC11C \uCC3E\uACE0, \uBB36\uC74C \uC774\uB984\uC774 \uB9DE\uC73C\uBA74 \uADF8 \uBB36\uC74C\uB3C4 \uD568\uAED8 \uB3CC\uB824\uC900\uB2E4"
41819
- },
41820
- withSchemas: {
41821
- type: "boolean",
41822
- description: `\uC778\uC790 \uC2A4\uD0A4\uB9C8\uAE4C\uC9C0 \uD568\uAED8 \uBC1B\uB294\uB2E4 \u2014 \uADF8\uB7EC\uBA74 ${DESCRIBE_TOOL2} \uC5C6\uC774 \uBC14\uB85C \uC2E4\uD589\uD560 \uC218 \uC788\uB2E4. toolset \uC774\uB098 query \uC640 \uAC19\uC774 \uC904 \uB54C\uB9CC \uC4F4\uB2E4`
41823
- },
41824
- browser: browserProperty2()
41825
- },
41826
- additionalProperties: false
41827
- }
41828
- },
41829
- {
41830
- name: DESCRIBE_TOOL2,
41831
- description: `\uB3C4\uAD6C\uC758 \uC778\uC790 \uC2A4\uD0A4\uB9C8\uB97C \uB3CC\uB824\uC900\uB2E4. **${CALL_TOOL2} \uB85C \uBD80\uB974\uAE30 \uC804\uC5D0 \uADF8 \uB3C4\uAD6C\uC5D0 \uB300\uD574 \uCD5C\uC18C \uD55C \uBC88\uC740 \uC774\uAC83\uC744 \uD638\uCD9C\uD574\uB77C** \u2014 \uC778\uC790 \uC774\uB984\uACFC \uD544\uC218 \uC5EC\uBD80\uB97C \uC9C0\uC5B4\uB0B4\uBA74 \uAC70\uC808\uB418\uACE0, \uC655\uBCF5\uC774 \uD55C \uBC88 \uB354 \uB4E0\uB2E4. \uC774\uBBF8 \uC2A4\uD0A4\uB9C8\uB97C \uBC1B\uC544 \uB454 \uB3C4\uAD6C\uB294 \uB2E4\uC2DC \uBD80\uB97C \uD544\uC694 \uC5C6\uB2E4.`,
41832
- annotations: LOOKUP_ANNOTATIONS2,
41833
- inputSchema: {
41834
- type: "object",
41835
- properties: {
41836
- tools: {
41837
- type: "array",
41838
- items: { type: "string" },
41839
- maxItems: DESCRIBE_PAGE_SIZE2,
41840
- description: `\uC2A4\uD0A4\uB9C8\uB97C \uBCFC \uB3C4\uAD6C \uC774\uB984 (\uD55C \uBC88\uC5D0 ${DESCRIBE_PAGE_SIZE2}\uAC1C\uAE4C\uC9C0)`
41841
- },
41842
- browser: browserProperty2()
41843
- },
41844
- required: ["tools"],
41845
- additionalProperties: false
41846
- }
41847
- },
41848
41136
  {
41849
41137
  name: CALL_TOOL2,
41850
- description: `${FIND_TOOLS_TOOL2} \uB610\uB294 ${CATALOG_TOOL2} \uB85C \uCC3E\uC740 \uB3C4\uAD6C\uB97C \uC2E4\uD589\uD55C\uB2E4. args \uB294 \uAC80\uC0C9 \uACB0\uACFC\uB098 ${DESCRIBE_TOOL2} \uAC00 \uC900 \uC2A4\uD0A4\uB9C8\uB97C \uADF8\uB300\uB85C \uB530\uB978\uB2E4 \u2014 \uB9DE\uC9C0 \uC54A\uC73C\uBA74 \uC2E4\uD589\uD558\uC9C0 \uC54A\uACE0 \uBB34\uC5C7\uC774 \uD2C0\uB838\uB294\uC9C0 \uB3CC\uB824\uC900\uB2E4. \uBB38\uC11C\uB97C \uACE0\uCE58\uAC70\uB098 \uC694\uAE08\uC774 \uB4DC\uB294 \uB3C4\uAD6C\uB294 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uD655\uC778\uC744 \uBC1B\uC740 \uB4A4\uC5D0 \uC2E4\uD589\uB41C\uB2E4.`,
41138
+ description: `${FIND_TOOLS_TOOL2} \uB85C \uCC3E\uC740 \uB3C4\uAD6C\uB97C \uC2E4\uD589\uD55C\uB2E4. args \uB294 \uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC900 \uC2A4\uD0A4\uB9C8\uB97C \uADF8\uB300\uB85C \uB530\uB978\uB2E4 \u2014 \uB9DE\uC9C0 \uC54A\uC73C\uBA74 \uC2E4\uD589\uD558\uC9C0 \uC54A\uACE0 \uBB34\uC5C7\uC774 \uD2C0\uB838\uB294\uC9C0 \uB3CC\uB824\uC900\uB2E4. \uBB38\uC11C\uB97C \uACE0\uCE58\uAC70\uB098 \uC694\uAE08\uC774 \uB4DC\uB294 \uB3C4\uAD6C\uB294 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uD655\uC778\uC744 \uBC1B\uC740 \uB4A4\uC5D0 \uC2E4\uD589\uB41C\uB2E4.`,
41851
41139
  // Deliberately unannotated: this tool's effect is the delegated tool's
41852
41140
  // effect, so any fixed hint would be half false. Tier is judged at run time.
41853
41141
  inputSchema: {
@@ -41856,7 +41144,7 @@ function discoveryDescriptors2(entries) {
41856
41144
  tool: { type: "string", description: "\uC2E4\uD589\uD560 \uB3C4\uAD6C \uC774\uB984" },
41857
41145
  args: {
41858
41146
  type: "object",
41859
- description: `\uADF8 \uB3C4\uAD6C\uC758 \uC778\uC790. ${DESCRIBE_TOOL2} \uC758 \uC2A4\uD0A4\uB9C8\uB97C \uB530\uB978\uB2E4`
41147
+ description: `\uADF8 \uB3C4\uAD6C\uC758 \uC778\uC790. ${FIND_TOOLS_TOOL2} \uAC00 \uBC18\uD658\uD55C \uC2A4\uD0A4\uB9C8\uB97C \uB530\uB978\uB2E4`
41860
41148
  },
41861
41149
  browser: browserProperty2()
41862
41150
  },
@@ -41907,15 +41195,9 @@ function browsersDescriptor2() {
41907
41195
  annotations: LOOKUP_ANNOTATIONS2
41908
41196
  };
41909
41197
  }
41910
- function allowlistNames2() {
41911
- return [.../* @__PURE__ */ new Set([...READ_ONLY_TOOLS2, ...Object.keys(TOOL_TIERS2)])];
41912
- }
41913
41198
  function staticDiscoveryCatalog2() {
41914
- const entries = allowlistNames2().map(
41915
- (name) => name === BROWSERS_TOOL2 ? browsersDescriptor2() : { name, description: "", inputSchema: {} }
41916
- );
41917
41199
  return [
41918
- ...discoveryDescriptors2(entries),
41200
+ ...discoveryDescriptors2(),
41919
41201
  sessionStateDescriptor2(),
41920
41202
  browsersDescriptor2()
41921
41203
  ].map(
package/dist/cli.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  dispatchCli,
4
4
  runAdapter,
5
5
  runDaemon
6
- } from "./chunk-Q3IODS5D.js";
6
+ } from "./chunk-2DXMDY7Q.js";
7
7
  import "./chunk-MLKGABMK.js";
8
8
 
9
9
  // src/cli.ts
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  dispatchCli,
4
4
  ensureDaemonRunning,
5
5
  runAdapter
6
- } from "./chunk-Q3IODS5D.js";
6
+ } from "./chunk-2DXMDY7Q.js";
7
7
  import "./chunk-MLKGABMK.js";
8
8
  export {
9
9
  createAdapterServer,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modootoday/datalab-extension-mcp",
3
- "version": "1.9.3",
3
+ "version": "1.10.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",