@zenuml/core 3.46.3 → 3.46.5
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/.claude/skills/babysit-pr/SKILL.md +203 -0
- package/.claude/skills/babysit-pr/agents/openai.yaml +7 -0
- package/.claude/skills/dia-scoring/SKILL.md +1 -1
- package/.claude/skills/land-pr/SKILL.md +27 -5
- package/.claude/skills/propagate-core-release/SKILL.md +200 -0
- package/.claude/skills/propagate-core-release/agents/openai.yaml +7 -0
- package/.claude/skills/propagate-core-release/references/downstreams.md +41 -0
- package/.claude/skills/ship-branch/SKILL.md +13 -0
- package/dist/stats.html +1 -1
- package/dist/zenuml.esm.mjs +3688 -3693
- package/dist/zenuml.js +69 -69
- package/docs/superpowers/plans/2026-03-27-e2e-test-reorg.md +698 -0
- package/{cy → e2e/data}/compare-cases.js +70 -37
- package/{cy/smoke-editable-label.html → e2e/fixtures/editable-label.html} +1 -1
- package/{cy/editable-span-test.html → e2e/fixtures/editable-span.html} +1 -1
- package/e2e/fixtures/fixture.html +31 -0
- package/{cy → e2e/tools}/canonical-history.html +1 -1
- package/{cy → e2e/tools}/compare-case.html +3 -3
- package/{cy → e2e/tools}/compare.html +2 -2
- package/{cy → e2e/tools}/native-diff-ext/content.js +2 -2
- package/firebase-debug.log +108 -0
- package/index.html +2 -2
- package/mermaid-zenuml-async-spa-auth.png +0 -0
- package/mermaid-zenuml-async-spa-auth.snapshot.md +96 -0
- package/package.json +1 -1
- package/scripts/analyze-compare-case/collect-data.mjs +1 -1
- package/scripts/analyze-compare-case.mjs +1 -1
- package/skills/dia-scoring/SKILL.md +1 -1
- package/vite.config.ts +5 -5
- package/cy/async-message-1.html +0 -32
- package/cy/async-message-2.html +0 -46
- package/cy/async-message-3.html +0 -41
- package/cy/creation-rtl.html +0 -28
- package/cy/defect-406-alt-under-creation.html +0 -40
- package/cy/demo1.html +0 -28
- package/cy/demo3.html +0 -28
- package/cy/demo4.html +0 -28
- package/cy/element-report.html +0 -705
- package/cy/fragments-with-return.html +0 -35
- package/cy/icons-test.html +0 -29
- package/cy/if-fragment.html +0 -28
- package/cy/legacy-vs-html.html +0 -291
- package/cy/named-parameters.html +0 -30
- package/cy/nested-interaction-with-fragment.html +0 -34
- package/cy/nested-interaction-with-outbound.html +0 -34
- package/cy/parity-test.html +0 -122
- package/cy/return-in-nested-if.html +0 -29
- package/cy/return.html +0 -38
- package/cy/self-sync-message-at-root.html +0 -28
- package/cy/smoke-creation.html +0 -26
- package/cy/smoke-fragment-issue.html +0 -36
- package/cy/smoke-fragment.html +0 -42
- package/cy/smoke-interaction.html +0 -34
- package/cy/smoke.html +0 -40
- package/cy/theme-default-test.html +0 -28
- package/cy/vertical-1.html +0 -25
- package/cy/vertical-10.html +0 -33
- package/cy/vertical-11.html +0 -29
- package/cy/vertical-2.html +0 -23
- package/cy/vertical-3.html +0 -37
- package/cy/vertical-4.html +0 -42
- package/cy/vertical-5.html +0 -40
- package/cy/vertical-6.html +0 -29
- package/cy/vertical-7.html +0 -27
- package/cy/vertical-8.html +0 -32
- package/cy/vertical-9.html +0 -25
- package/cy/xss.html +0 -21
- package/docs/CONTEXT-tier2-component.md +0 -96
- package/docs/CONTEXT-tier3-feature.md +0 -162
- package/docs/README.md +0 -207
- package/docs/handling-starter.png +0 -0
- package/docs/module-vs-main-in-package-json.md +0 -17
- package/docs/open-issues/example-api-performance-issue.md +0 -79
- package/docs/osx-unsupported-arm64-node12.md +0 -13
- package/docs/running-cypress-tests-locally.md +0 -76
- package/docs/ship-branch-skill-plan.md +0 -134
- package/docs/superpowers/plans/2026-03-23-svg-parity-features.md +0 -283
- package/docs/testing-minified-lib.md +0 -27
- package/docs/watch.md +0 -1
- package/docs/why-we-publish-embed-view-to-github-pages.md +0 -16
- /package/{cy → e2e/data}/diff-algorithm.js +0 -0
- /package/{cy → e2e/fixtures}/svg-test.html +0 -0
- /package/{cy → e2e/tools}/native-diff-ext/background.js +0 -0
- /package/{cy → e2e/tools}/native-diff-ext/bridge.js +0 -0
- /package/{cy → e2e/tools}/svg-preview.html +0 -0
|
@@ -10,8 +10,13 @@ export const CASES = {
|
|
|
10
10
|
B -> C: process
|
|
11
11
|
C -> B: result
|
|
12
12
|
B -> A: done`,
|
|
13
|
-
"named-params": `
|
|
14
|
-
|
|
13
|
+
"named-params": `title Named Parameters Test
|
|
14
|
+
// Testing named parameter syntax (param=value)
|
|
15
|
+
A.method(userId=123, name="John")
|
|
16
|
+
B.create(type="User", active=true)
|
|
17
|
+
C.mixedCall(1, name="Mixed", enabled=false)
|
|
18
|
+
D.oldStyle(1, 2, 3)
|
|
19
|
+
E.complex(first="value1", second=42, third=true, fourth="final")`,
|
|
15
20
|
|
|
16
21
|
// --- Sync calls & self-calls ---
|
|
17
22
|
"nested-sync": `A.method() {
|
|
@@ -40,7 +45,7 @@ A.method1{
|
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
47
|
}`,
|
|
43
|
-
"nested-fragment": `title Nested Interaction
|
|
48
|
+
"nested-fragment": `title Nested Interaction with Fragment and Self-Invocation
|
|
44
49
|
A.Read() {
|
|
45
50
|
B.Submit() {
|
|
46
51
|
Process() {
|
|
@@ -52,7 +57,7 @@ A.Read() {
|
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
}`,
|
|
55
|
-
"nested-outbound": `title Nested Interaction with Outbound
|
|
60
|
+
"nested-outbound": `title Nested Interaction with Outbound Message and Fragment
|
|
56
61
|
A.Read() {
|
|
57
62
|
B.Submit() {
|
|
58
63
|
C->B.method {
|
|
@@ -73,40 +78,54 @@ A.Read() {
|
|
|
73
78
|
"participant-width": `LongParticipantName.method`,
|
|
74
79
|
|
|
75
80
|
// --- Async messages ---
|
|
76
|
-
"async-1": `A->A:
|
|
77
|
-
A->B:
|
|
78
|
-
A->C:
|
|
79
|
-
B->B:
|
|
80
|
-
B->C:
|
|
81
|
-
B->A:
|
|
82
|
-
C->C:
|
|
83
|
-
C->B:
|
|
84
|
-
C->A:
|
|
85
|
-
"async-
|
|
86
|
-
A->A:
|
|
87
|
-
A->B:
|
|
88
|
-
A->C:
|
|
89
|
-
B->B:
|
|
90
|
-
B->C:
|
|
91
|
-
B->A:
|
|
92
|
-
C->C:
|
|
93
|
-
C->B:
|
|
94
|
-
C->A:
|
|
95
|
-
}`,
|
|
96
|
-
"async-2b": `A.method {
|
|
97
|
-
A->B: init
|
|
81
|
+
"async-1": `A->A: async
|
|
82
|
+
A->B: async
|
|
83
|
+
A->C: async
|
|
84
|
+
B->B: async
|
|
85
|
+
B->C: async
|
|
86
|
+
B->A: async
|
|
87
|
+
C->C: async
|
|
88
|
+
C->B: async
|
|
89
|
+
C->A: async`,
|
|
90
|
+
"async-2": `A.method {
|
|
91
|
+
A->A: async
|
|
92
|
+
A->B: async
|
|
93
|
+
A->C: async
|
|
94
|
+
B->B: async
|
|
95
|
+
B->C: async
|
|
96
|
+
B->A: async
|
|
97
|
+
C->C: async
|
|
98
|
+
C->B: async
|
|
99
|
+
C->A: async
|
|
98
100
|
B.method {
|
|
99
|
-
A->
|
|
100
|
-
B
|
|
101
|
-
C
|
|
101
|
+
A->A: async
|
|
102
|
+
A->B: async
|
|
103
|
+
A->C: async
|
|
104
|
+
B->B: async
|
|
105
|
+
B->C: async
|
|
106
|
+
B->A: async
|
|
107
|
+
C->C: async
|
|
108
|
+
C->B: async
|
|
109
|
+
C->A: async
|
|
102
110
|
}
|
|
103
111
|
}`,
|
|
104
112
|
"async-3": `A B C
|
|
105
113
|
C.method {
|
|
106
|
-
A->C:
|
|
107
|
-
C->A:
|
|
108
|
-
C->B:
|
|
109
|
-
B->C:
|
|
114
|
+
A->C: async
|
|
115
|
+
C->A: async
|
|
116
|
+
C->B: async
|
|
117
|
+
B->C: async
|
|
118
|
+
B.method {
|
|
119
|
+
A->A: async
|
|
120
|
+
A->B: async
|
|
121
|
+
A->C: async
|
|
122
|
+
B->B: async
|
|
123
|
+
B->C: async
|
|
124
|
+
B->A: async
|
|
125
|
+
C->C: async
|
|
126
|
+
C->B: async
|
|
127
|
+
C->A: async
|
|
128
|
+
}
|
|
110
129
|
}`,
|
|
111
130
|
"async-self": `A->A: selfAsync`,
|
|
112
131
|
"async-self-nested": `A.method {
|
|
@@ -153,8 +172,9 @@ B->A: So what`,
|
|
|
153
172
|
} else {
|
|
154
173
|
A -> B: elseMsg
|
|
155
174
|
}`,
|
|
156
|
-
"if-fragment": `title Issue 232
|
|
175
|
+
"if-fragment": `title Issue 232 - wrong layout for if-fragment
|
|
157
176
|
Client -> Server:SendRequest
|
|
177
|
+
|
|
158
178
|
if(true){
|
|
159
179
|
Server -> Server: processRequest
|
|
160
180
|
}`,
|
|
@@ -173,7 +193,7 @@ loop(condition) {
|
|
|
173
193
|
}`,
|
|
174
194
|
"fragment": `A
|
|
175
195
|
B
|
|
176
|
-
C
|
|
196
|
+
C #FF0000 // we style it to make it more important in image comparison
|
|
177
197
|
if(x) {
|
|
178
198
|
loop(y) {
|
|
179
199
|
try {
|
|
@@ -267,6 +287,7 @@ A.m1 {
|
|
|
267
287
|
|
|
268
288
|
// --- Return ---
|
|
269
289
|
"return": `A B C D
|
|
290
|
+
|
|
270
291
|
A->B.method() {
|
|
271
292
|
ret0_assign_rtl =C.method_long_to_give_space {
|
|
272
293
|
@return C->D: ret1_annotation_ltr
|
|
@@ -275,8 +296,17 @@ A->B.method() {
|
|
|
275
296
|
return ret2_return_ltr
|
|
276
297
|
}
|
|
277
298
|
}
|
|
299
|
+
|
|
278
300
|
return ret2_return_rtl
|
|
279
301
|
@return B->A: ret4_annotation_rtl
|
|
302
|
+
}`,
|
|
303
|
+
"return-in-nested-if": `A.m {
|
|
304
|
+
if (condition) {
|
|
305
|
+
return ret
|
|
306
|
+
if(x) {
|
|
307
|
+
new B
|
|
308
|
+
}
|
|
309
|
+
}
|
|
280
310
|
}`,
|
|
281
311
|
// Minimal return isolation cases
|
|
282
312
|
"return-single-explicit": `A B
|
|
@@ -335,6 +365,7 @@ new B`,
|
|
|
335
365
|
} else {
|
|
336
366
|
new B
|
|
337
367
|
}
|
|
368
|
+
|
|
338
369
|
new C
|
|
339
370
|
try {
|
|
340
371
|
new D
|
|
@@ -350,6 +381,7 @@ try {
|
|
|
350
381
|
} else {
|
|
351
382
|
new B
|
|
352
383
|
}
|
|
384
|
+
|
|
353
385
|
new C
|
|
354
386
|
try {
|
|
355
387
|
new D
|
|
@@ -398,7 +430,7 @@ section(){
|
|
|
398
430
|
"vertical-8": `new Creation() {
|
|
399
431
|
return from_creation
|
|
400
432
|
}
|
|
401
|
-
return "
|
|
433
|
+
return "from if to original source"
|
|
402
434
|
try {
|
|
403
435
|
new AHasAVeryLongNameLongNameLongNameLongName() {
|
|
404
436
|
new CreatWithinCreat()
|
|
@@ -450,6 +482,7 @@ group "B C" {@EC2 B @ECS C}
|
|
|
450
482
|
new B
|
|
451
483
|
ReturnType ret = ParticipantName.methodA(a, b) {
|
|
452
484
|
critical("This is a critical message") {
|
|
485
|
+
// Customised style for RESTFul API - \`POST /order\`
|
|
453
486
|
ReturnType ret2 = selfCall() {
|
|
454
487
|
B.syncCallWithinSelfCall() {
|
|
455
488
|
ParticipantName.rightToLeftCall()
|
|
@@ -470,7 +503,7 @@ ReturnType ret = ParticipantName.methodA(a, b) {
|
|
|
470
503
|
new Creation() {
|
|
471
504
|
return from_creation
|
|
472
505
|
}
|
|
473
|
-
return "
|
|
506
|
+
return "from if to original source"
|
|
474
507
|
try {
|
|
475
508
|
new AHasAVeryLongNameLongNameLongNameLongName() {
|
|
476
509
|
new CreatWithinCreat()
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
<script type="module">
|
|
71
71
|
import { createRoot } from 'react-dom/client';
|
|
72
72
|
import { createElement } from 'react';
|
|
73
|
-
import { EditableSpan } from '
|
|
73
|
+
import { EditableSpan } from '../../src/components/common/EditableSpan/EditableSpan';
|
|
74
74
|
|
|
75
75
|
function createLogger(logId) {
|
|
76
76
|
const logEl = document.getElementById(logId);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
|
7
|
+
<title>ZenUML Test Fixture</title>
|
|
8
|
+
<style>
|
|
9
|
+
body {
|
|
10
|
+
margin: 0;
|
|
11
|
+
}
|
|
12
|
+
</style>
|
|
13
|
+
</head>
|
|
14
|
+
<body>
|
|
15
|
+
<div id="diagram" class="diagram">
|
|
16
|
+
<pre class="zenuml" style="margin: 0" id="zenuml-code"></pre>
|
|
17
|
+
</div>
|
|
18
|
+
<script type="module">
|
|
19
|
+
import { CASES } from "../data/compare-cases.js";
|
|
20
|
+
const params = new URLSearchParams(window.location.search);
|
|
21
|
+
const caseName = params.get("case");
|
|
22
|
+
if (caseName && CASES[caseName]) {
|
|
23
|
+
document.getElementById("zenuml-code").textContent = CASES[caseName];
|
|
24
|
+
} else {
|
|
25
|
+
document.getElementById("zenuml-code").textContent =
|
|
26
|
+
"// Case not found: " + caseName;
|
|
27
|
+
}
|
|
28
|
+
</script>
|
|
29
|
+
<script type="module" src="/src/main-e2e.ts"></script>
|
|
30
|
+
</body>
|
|
31
|
+
</html>
|
|
@@ -345,7 +345,7 @@
|
|
|
345
345
|
<button class="sidebar-toggle" id="sidebar-toggle" title="Toggle sidebar">☰</button>
|
|
346
346
|
<h1>canonical scores</h1>
|
|
347
347
|
<span class="summary" id="summary"></span>
|
|
348
|
-
<a href="/
|
|
348
|
+
<a href="/e2e/tools/compare.html" class="back-link">compare cases →</a>
|
|
349
349
|
</div>
|
|
350
350
|
|
|
351
351
|
<div class="layout">
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
</head>
|
|
33
33
|
<body>
|
|
34
34
|
<div class="compare-bar">
|
|
35
|
-
<a href="/
|
|
35
|
+
<a href="/e2e/tools/compare.html">← All cases</a>
|
|
36
36
|
<h2 id="case-name"></h2>
|
|
37
37
|
<div class="nav">
|
|
38
38
|
<a id="prev-link" href="#">← Prev</a>
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
import ZenUml from "/src/core.tsx";
|
|
61
61
|
import { renderToSvg } from "/src/svg/renderToSvg.ts";
|
|
62
62
|
|
|
63
|
-
import { CASES } from "
|
|
64
|
-
import { diffImages, DEFAULTS } from "
|
|
63
|
+
import { CASES } from "../data/compare-cases.js";
|
|
64
|
+
import { diffImages, DEFAULTS } from "../data/diff-algorithm.js";
|
|
65
65
|
|
|
66
66
|
const caseNames = Object.keys(CASES);
|
|
67
67
|
const params = new URLSearchParams(window.location.search);
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
<h1>SVG vs HTML Comparison</h1>
|
|
21
21
|
<div class="grid" id="grid"></div>
|
|
22
22
|
<script type="module">
|
|
23
|
-
import { CASES } from "
|
|
23
|
+
import { CASES } from "../data/compare-cases.js";
|
|
24
24
|
|
|
25
25
|
const grid = document.getElementById("grid");
|
|
26
26
|
for (const name of Object.keys(CASES)) {
|
|
27
27
|
const a = document.createElement("a");
|
|
28
|
-
a.href = `/
|
|
28
|
+
a.href = `/e2e/tools/compare-case.html?case=${encodeURIComponent(name)}`;
|
|
29
29
|
a.className = "card";
|
|
30
30
|
a.innerHTML = `<div class="name">${name}</div>`;
|
|
31
31
|
grid.appendChild(a);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Uses CDP element screenshots via bridge.js → background.js
|
|
3
3
|
// Hides neighboring panels before each screenshot to prevent overlap.
|
|
4
4
|
//
|
|
5
|
-
// Diff algorithm lives in
|
|
5
|
+
// Diff algorithm lives in e2e/data/diff-algorithm.js, loaded by compare-case.html
|
|
6
6
|
// and exposed as window.diffFromImages. This script only handles screenshots
|
|
7
7
|
// and orchestration.
|
|
8
8
|
|
|
@@ -107,7 +107,7 @@ async function runNativeDiff() {
|
|
|
107
107
|
const idx = cases.indexOf(currentCase);
|
|
108
108
|
if (idx >= 0 && idx + 1 < cases.length) {
|
|
109
109
|
setTimeout(() => {
|
|
110
|
-
window.location.href = `/
|
|
110
|
+
window.location.href = `/e2e/tools/compare-case.html?case=${cases[idx + 1]}`;
|
|
111
111
|
}, 200);
|
|
112
112
|
}
|
|
113
113
|
} else {
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
[debug] [2026-03-27T00:40:31.482Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
2
|
+
[debug] [2026-03-27T00:40:31.483Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
3
|
+
[debug] [2026-03-27T00:40:31.491Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
4
|
+
[debug] [2026-03-27T00:40:31.491Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
5
|
+
[debug] [2026-03-27T00:40:31.744Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
6
|
+
[debug] [2026-03-27T00:40:31.744Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
7
|
+
[debug] [2026-03-27T00:40:31.745Z] >>> [apiv2][query] POST https://developerknowledge.googleapis.com/mcp [none]
|
|
8
|
+
[debug] [2026-03-27T00:40:31.745Z] >>> [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"method":"tools/list","jsonrpc":"2.0","id":1}
|
|
9
|
+
[debug] [2026-03-27T00:40:32.461Z] <<< [apiv2][status] POST https://developerknowledge.googleapis.com/mcp 200
|
|
10
|
+
[debug] [2026-03-27T00:40:32.461Z] <<< [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"id":1,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to find documentation about Google developer products. The documents contain official APIs, code snippets, release notes, best practices, guides, debugging info, and more. It covers the following products and domains:\n\n* Android: developer.android.com\n* Apigee: docs.apigee.com\n* Chrome: developer.chrome.com\n* Firebase: firebase.google.com\n* Fuchsia: fuchsia.dev\n* Google AI: ai.google.dev\n* Google Cloud: docs.cloud.google.com\n* Google Developers, Ads, Search, Google Maps, Youtube: developers.google.com\n* Google Home: developers.home.google.com\n* TensorFlow: www.tensorflow.org\n* Web: web.dev\n\nThis tool returns chunks of text, names, and URLs for matching documents. If the returned chunks are not detailed enough to answer the user's question, use `get_documents` with the `parent` from this tool's output to retrieve the full document content.","inputSchema":{"description":"Request schema for search_documents. Use the query field to search for related Google developer documentation.","properties":{"query":{"description":"Required. The raw query string provided by the user, such as \"How to create a Cloud Storage bucket?\".","type":"string"}},"required":["query"],"type":"object"},"name":"search_documents","outputSchema":{"$defs":{"DocumentChunk":{"description":"A DocumentChunk represents a piece of content from a Document in the DeveloperKnowledge corpus. To fetch the entire document content, pass the `parent` to get_document or batch_get_documents.","properties":{"content":{"description":"Output only. The content of the document chunk.","readOnly":true,"type":"string"},"id":{"description":"Output only. The ID of this chunk within the document. The chunk ID is unique within a document, but not globally unique across documents. The chunk ID is not stable and may change over time.","readOnly":true,"type":"string"},"parent":{"description":"Output only. The resource name of the document this chunk is from. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for search_documents.","properties":{"results":{"description":"The search results for the given query. Each Document in this list contains a snippet of content relevant to the search query. Use the DocumentChunk.name field of each result with get_documents to retrieve the full document content.","items":{"$ref":"#/$defs/DocumentChunk"},"type":"array"}},"type":"object"}},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to retrieve the full content of a single document or up to 20 documents in a single call. The document names should be obtained from the `parent` field of results from a call to the `search_documents` tool. Set the `names` parameter to a list of document names.","inputSchema":{"description":"Request schema for get_documents.","properties":{"names":{"description":"Required. The names of the documents to retrieve, as returned by search_documents. A maximum of 20 documents can be retrieved in one call. The documents are returned in the same order as the `names` in the request. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"name":"get_documents","outputSchema":{"$defs":{"Document":{"description":"A Document represents a piece of content from the Developer Knowledge corpus.","properties":{"content":{"description":"Output only. The content of the document in Markdown format.","readOnly":true,"type":"string"},"description":{"description":"Output only. A description of the document.","readOnly":true,"type":"string"},"name":{"description":"Identifier. The resource name of the document. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","type":"string","x-google-identifier":true},"title":{"description":"Output only. The title of the document.","readOnly":true,"type":"string"},"uri":{"description":"Output only. The URI of the content, such as `https://cloud.google.com/storage/docs/creating-buckets`.","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for get_documents.","properties":{"documents":{"description":"Documents requested.","items":{"$ref":"#/$defs/Document"},"type":"array"}},"type":"object"}}]}}
|
|
11
|
+
[debug] [2026-03-27T00:40:32.463Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
12
|
+
[debug] [2026-03-27T00:40:32.464Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
13
|
+
[debug] [2026-03-27T00:53:43.772Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
14
|
+
[debug] [2026-03-27T00:53:43.773Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
15
|
+
[debug] [2026-03-27T00:53:43.786Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
16
|
+
[debug] [2026-03-27T00:53:43.786Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
17
|
+
[debug] [2026-03-27T00:53:44.081Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
18
|
+
[debug] [2026-03-27T00:53:44.082Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
19
|
+
[debug] [2026-03-27T00:53:44.082Z] >>> [apiv2][query] POST https://developerknowledge.googleapis.com/mcp [none]
|
|
20
|
+
[debug] [2026-03-27T00:53:44.082Z] >>> [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"method":"tools/list","jsonrpc":"2.0","id":1}
|
|
21
|
+
[debug] [2026-03-27T00:53:44.736Z] <<< [apiv2][status] POST https://developerknowledge.googleapis.com/mcp 200
|
|
22
|
+
[debug] [2026-03-27T00:53:44.736Z] <<< [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"id":1,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to find documentation about Google developer products. The documents contain official APIs, code snippets, release notes, best practices, guides, debugging info, and more. It covers the following products and domains:\n\n* Android: developer.android.com\n* Apigee: docs.apigee.com\n* Chrome: developer.chrome.com\n* Firebase: firebase.google.com\n* Fuchsia: fuchsia.dev\n* Google AI: ai.google.dev\n* Google Cloud: docs.cloud.google.com\n* Google Developers, Ads, Search, Google Maps, Youtube: developers.google.com\n* Google Home: developers.home.google.com\n* TensorFlow: www.tensorflow.org\n* Web: web.dev\n\nThis tool returns chunks of text, names, and URLs for matching documents. If the returned chunks are not detailed enough to answer the user's question, use `get_documents` with the `parent` from this tool's output to retrieve the full document content.","inputSchema":{"description":"Request schema for search_documents. Use the query field to search for related Google developer documentation.","properties":{"query":{"description":"Required. The raw query string provided by the user, such as \"How to create a Cloud Storage bucket?\".","type":"string"}},"required":["query"],"type":"object"},"name":"search_documents","outputSchema":{"$defs":{"DocumentChunk":{"description":"A DocumentChunk represents a piece of content from a Document in the DeveloperKnowledge corpus. To fetch the entire document content, pass the `parent` to get_document or batch_get_documents.","properties":{"content":{"description":"Output only. The content of the document chunk.","readOnly":true,"type":"string"},"id":{"description":"Output only. The ID of this chunk within the document. The chunk ID is unique within a document, but not globally unique across documents. The chunk ID is not stable and may change over time.","readOnly":true,"type":"string"},"parent":{"description":"Output only. The resource name of the document this chunk is from. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for search_documents.","properties":{"results":{"description":"The search results for the given query. Each Document in this list contains a snippet of content relevant to the search query. Use the DocumentChunk.name field of each result with get_documents to retrieve the full document content.","items":{"$ref":"#/$defs/DocumentChunk"},"type":"array"}},"type":"object"}},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to retrieve the full content of a single document or up to 20 documents in a single call. The document names should be obtained from the `parent` field of results from a call to the `search_documents` tool. Set the `names` parameter to a list of document names.","inputSchema":{"description":"Request schema for get_documents.","properties":{"names":{"description":"Required. The names of the documents to retrieve, as returned by search_documents. A maximum of 20 documents can be retrieved in one call. The documents are returned in the same order as the `names` in the request. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"name":"get_documents","outputSchema":{"$defs":{"Document":{"description":"A Document represents a piece of content from the Developer Knowledge corpus.","properties":{"content":{"description":"Output only. The content of the document in Markdown format.","readOnly":true,"type":"string"},"description":{"description":"Output only. A description of the document.","readOnly":true,"type":"string"},"name":{"description":"Identifier. The resource name of the document. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","type":"string","x-google-identifier":true},"title":{"description":"Output only. The title of the document.","readOnly":true,"type":"string"},"uri":{"description":"Output only. The URI of the content, such as `https://cloud.google.com/storage/docs/creating-buckets`.","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for get_documents.","properties":{"documents":{"description":"Documents requested.","items":{"$ref":"#/$defs/Document"},"type":"array"}},"type":"object"}}]}}
|
|
23
|
+
[debug] [2026-03-27T00:53:44.737Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
24
|
+
[debug] [2026-03-27T00:53:44.737Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
25
|
+
[debug] [2026-03-27T00:58:47.641Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
26
|
+
[debug] [2026-03-27T00:58:47.644Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
27
|
+
[debug] [2026-03-27T00:58:47.662Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
28
|
+
[debug] [2026-03-27T00:58:47.662Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
29
|
+
[debug] [2026-03-27T00:58:47.965Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
30
|
+
[debug] [2026-03-27T00:58:47.965Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
31
|
+
[debug] [2026-03-27T00:58:47.966Z] >>> [apiv2][query] POST https://developerknowledge.googleapis.com/mcp [none]
|
|
32
|
+
[debug] [2026-03-27T00:58:47.966Z] >>> [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"method":"tools/list","jsonrpc":"2.0","id":1}
|
|
33
|
+
[debug] [2026-03-27T00:58:48.592Z] <<< [apiv2][status] POST https://developerknowledge.googleapis.com/mcp 200
|
|
34
|
+
[debug] [2026-03-27T00:58:48.592Z] <<< [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"id":1,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to find documentation about Google developer products. The documents contain official APIs, code snippets, release notes, best practices, guides, debugging info, and more. It covers the following products and domains:\n\n* Android: developer.android.com\n* Apigee: docs.apigee.com\n* Chrome: developer.chrome.com\n* Firebase: firebase.google.com\n* Fuchsia: fuchsia.dev\n* Google AI: ai.google.dev\n* Google Cloud: docs.cloud.google.com\n* Google Developers, Ads, Search, Google Maps, Youtube: developers.google.com\n* Google Home: developers.home.google.com\n* TensorFlow: www.tensorflow.org\n* Web: web.dev\n\nThis tool returns chunks of text, names, and URLs for matching documents. If the returned chunks are not detailed enough to answer the user's question, use `get_documents` with the `parent` from this tool's output to retrieve the full document content.","inputSchema":{"description":"Request schema for search_documents. Use the query field to search for related Google developer documentation.","properties":{"query":{"description":"Required. The raw query string provided by the user, such as \"How to create a Cloud Storage bucket?\".","type":"string"}},"required":["query"],"type":"object"},"name":"search_documents","outputSchema":{"$defs":{"DocumentChunk":{"description":"A DocumentChunk represents a piece of content from a Document in the DeveloperKnowledge corpus. To fetch the entire document content, pass the `parent` to get_document or batch_get_documents.","properties":{"content":{"description":"Output only. The content of the document chunk.","readOnly":true,"type":"string"},"id":{"description":"Output only. The ID of this chunk within the document. The chunk ID is unique within a document, but not globally unique across documents. The chunk ID is not stable and may change over time.","readOnly":true,"type":"string"},"parent":{"description":"Output only. The resource name of the document this chunk is from. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for search_documents.","properties":{"results":{"description":"The search results for the given query. Each Document in this list contains a snippet of content relevant to the search query. Use the DocumentChunk.name field of each result with get_documents to retrieve the full document content.","items":{"$ref":"#/$defs/DocumentChunk"},"type":"array"}},"type":"object"}},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to retrieve the full content of a single document or up to 20 documents in a single call. The document names should be obtained from the `parent` field of results from a call to the `search_documents` tool. Set the `names` parameter to a list of document names.","inputSchema":{"description":"Request schema for get_documents.","properties":{"names":{"description":"Required. The names of the documents to retrieve, as returned by search_documents. A maximum of 20 documents can be retrieved in one call. The documents are returned in the same order as the `names` in the request. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"name":"get_documents","outputSchema":{"$defs":{"Document":{"description":"A Document represents a piece of content from the Developer Knowledge corpus.","properties":{"content":{"description":"Output only. The content of the document in Markdown format.","readOnly":true,"type":"string"},"description":{"description":"Output only. A description of the document.","readOnly":true,"type":"string"},"name":{"description":"Identifier. The resource name of the document. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","type":"string","x-google-identifier":true},"title":{"description":"Output only. The title of the document.","readOnly":true,"type":"string"},"uri":{"description":"Output only. The URI of the content, such as `https://cloud.google.com/storage/docs/creating-buckets`.","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for get_documents.","properties":{"documents":{"description":"Documents requested.","items":{"$ref":"#/$defs/Document"},"type":"array"}},"type":"object"}}]}}
|
|
35
|
+
[debug] [2026-03-27T00:58:48.594Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
36
|
+
[debug] [2026-03-27T00:58:48.594Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
37
|
+
[debug] [2026-03-27T00:58:55.154Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
38
|
+
[debug] [2026-03-27T00:58:55.155Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
39
|
+
[debug] [2026-03-27T00:58:55.161Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
40
|
+
[debug] [2026-03-27T00:58:55.161Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
41
|
+
[debug] [2026-03-27T00:58:55.455Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
42
|
+
[debug] [2026-03-27T00:58:55.455Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
43
|
+
[debug] [2026-03-27T00:58:55.457Z] >>> [apiv2][query] POST https://developerknowledge.googleapis.com/mcp [none]
|
|
44
|
+
[debug] [2026-03-27T00:58:55.457Z] >>> [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"method":"tools/list","jsonrpc":"2.0","id":1}
|
|
45
|
+
[debug] [2026-03-27T00:58:56.059Z] <<< [apiv2][status] POST https://developerknowledge.googleapis.com/mcp 200
|
|
46
|
+
[debug] [2026-03-27T00:58:56.060Z] <<< [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"id":1,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to find documentation about Google developer products. The documents contain official APIs, code snippets, release notes, best practices, guides, debugging info, and more. It covers the following products and domains:\n\n* Android: developer.android.com\n* Apigee: docs.apigee.com\n* Chrome: developer.chrome.com\n* Firebase: firebase.google.com\n* Fuchsia: fuchsia.dev\n* Google AI: ai.google.dev\n* Google Cloud: docs.cloud.google.com\n* Google Developers, Ads, Search, Google Maps, Youtube: developers.google.com\n* Google Home: developers.home.google.com\n* TensorFlow: www.tensorflow.org\n* Web: web.dev\n\nThis tool returns chunks of text, names, and URLs for matching documents. If the returned chunks are not detailed enough to answer the user's question, use `get_documents` with the `parent` from this tool's output to retrieve the full document content.","inputSchema":{"description":"Request schema for search_documents. Use the query field to search for related Google developer documentation.","properties":{"query":{"description":"Required. The raw query string provided by the user, such as \"How to create a Cloud Storage bucket?\".","type":"string"}},"required":["query"],"type":"object"},"name":"search_documents","outputSchema":{"$defs":{"DocumentChunk":{"description":"A DocumentChunk represents a piece of content from a Document in the DeveloperKnowledge corpus. To fetch the entire document content, pass the `parent` to get_document or batch_get_documents.","properties":{"content":{"description":"Output only. The content of the document chunk.","readOnly":true,"type":"string"},"id":{"description":"Output only. The ID of this chunk within the document. The chunk ID is unique within a document, but not globally unique across documents. The chunk ID is not stable and may change over time.","readOnly":true,"type":"string"},"parent":{"description":"Output only. The resource name of the document this chunk is from. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for search_documents.","properties":{"results":{"description":"The search results for the given query. Each Document in this list contains a snippet of content relevant to the search query. Use the DocumentChunk.name field of each result with get_documents to retrieve the full document content.","items":{"$ref":"#/$defs/DocumentChunk"},"type":"array"}},"type":"object"}},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to retrieve the full content of a single document or up to 20 documents in a single call. The document names should be obtained from the `parent` field of results from a call to the `search_documents` tool. Set the `names` parameter to a list of document names.","inputSchema":{"description":"Request schema for get_documents.","properties":{"names":{"description":"Required. The names of the documents to retrieve, as returned by search_documents. A maximum of 20 documents can be retrieved in one call. The documents are returned in the same order as the `names` in the request. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"name":"get_documents","outputSchema":{"$defs":{"Document":{"description":"A Document represents a piece of content from the Developer Knowledge corpus.","properties":{"content":{"description":"Output only. The content of the document in Markdown format.","readOnly":true,"type":"string"},"description":{"description":"Output only. A description of the document.","readOnly":true,"type":"string"},"name":{"description":"Identifier. The resource name of the document. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","type":"string","x-google-identifier":true},"title":{"description":"Output only. The title of the document.","readOnly":true,"type":"string"},"uri":{"description":"Output only. The URI of the content, such as `https://cloud.google.com/storage/docs/creating-buckets`.","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for get_documents.","properties":{"documents":{"description":"Documents requested.","items":{"$ref":"#/$defs/Document"},"type":"array"}},"type":"object"}}]}}
|
|
47
|
+
[debug] [2026-03-27T00:58:56.061Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
48
|
+
[debug] [2026-03-27T00:58:56.061Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
49
|
+
[debug] [2026-03-27T01:00:17.877Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
50
|
+
[debug] [2026-03-27T01:00:17.878Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
51
|
+
[debug] [2026-03-27T01:00:17.889Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
52
|
+
[debug] [2026-03-27T01:00:17.889Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
53
|
+
[debug] [2026-03-27T01:00:18.304Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
54
|
+
[debug] [2026-03-27T01:00:18.305Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
55
|
+
[debug] [2026-03-27T01:00:18.306Z] >>> [apiv2][query] POST https://developerknowledge.googleapis.com/mcp [none]
|
|
56
|
+
[debug] [2026-03-27T01:00:18.307Z] >>> [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"method":"tools/list","jsonrpc":"2.0","id":1}
|
|
57
|
+
[debug] [2026-03-27T01:00:18.966Z] <<< [apiv2][status] POST https://developerknowledge.googleapis.com/mcp 200
|
|
58
|
+
[debug] [2026-03-27T01:00:18.966Z] <<< [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"id":1,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to find documentation about Google developer products. The documents contain official APIs, code snippets, release notes, best practices, guides, debugging info, and more. It covers the following products and domains:\n\n* Android: developer.android.com\n* Apigee: docs.apigee.com\n* Chrome: developer.chrome.com\n* Firebase: firebase.google.com\n* Fuchsia: fuchsia.dev\n* Google AI: ai.google.dev\n* Google Cloud: docs.cloud.google.com\n* Google Developers, Ads, Search, Google Maps, Youtube: developers.google.com\n* Google Home: developers.home.google.com\n* TensorFlow: www.tensorflow.org\n* Web: web.dev\n\nThis tool returns chunks of text, names, and URLs for matching documents. If the returned chunks are not detailed enough to answer the user's question, use `get_documents` with the `parent` from this tool's output to retrieve the full document content.","inputSchema":{"description":"Request schema for search_documents. Use the query field to search for related Google developer documentation.","properties":{"query":{"description":"Required. The raw query string provided by the user, such as \"How to create a Cloud Storage bucket?\".","type":"string"}},"required":["query"],"type":"object"},"name":"search_documents","outputSchema":{"$defs":{"DocumentChunk":{"description":"A DocumentChunk represents a piece of content from a Document in the DeveloperKnowledge corpus. To fetch the entire document content, pass the `parent` to get_document or batch_get_documents.","properties":{"content":{"description":"Output only. The content of the document chunk.","readOnly":true,"type":"string"},"id":{"description":"Output only. The ID of this chunk within the document. The chunk ID is unique within a document, but not globally unique across documents. The chunk ID is not stable and may change over time.","readOnly":true,"type":"string"},"parent":{"description":"Output only. The resource name of the document this chunk is from. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for search_documents.","properties":{"results":{"description":"The search results for the given query. Each Document in this list contains a snippet of content relevant to the search query. Use the DocumentChunk.name field of each result with get_documents to retrieve the full document content.","items":{"$ref":"#/$defs/DocumentChunk"},"type":"array"}},"type":"object"}},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to retrieve the full content of a single document or up to 20 documents in a single call. The document names should be obtained from the `parent` field of results from a call to the `search_documents` tool. Set the `names` parameter to a list of document names.","inputSchema":{"description":"Request schema for get_documents.","properties":{"names":{"description":"Required. The names of the documents to retrieve, as returned by search_documents. A maximum of 20 documents can be retrieved in one call. The documents are returned in the same order as the `names` in the request. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"name":"get_documents","outputSchema":{"$defs":{"Document":{"description":"A Document represents a piece of content from the Developer Knowledge corpus.","properties":{"content":{"description":"Output only. The content of the document in Markdown format.","readOnly":true,"type":"string"},"description":{"description":"Output only. A description of the document.","readOnly":true,"type":"string"},"name":{"description":"Identifier. The resource name of the document. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","type":"string","x-google-identifier":true},"title":{"description":"Output only. The title of the document.","readOnly":true,"type":"string"},"uri":{"description":"Output only. The URI of the content, such as `https://cloud.google.com/storage/docs/creating-buckets`.","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for get_documents.","properties":{"documents":{"description":"Documents requested.","items":{"$ref":"#/$defs/Document"},"type":"array"}},"type":"object"}}]}}
|
|
59
|
+
[debug] [2026-03-27T01:00:18.967Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
60
|
+
[debug] [2026-03-27T01:00:18.967Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
61
|
+
[debug] [2026-03-27T01:05:22.129Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
62
|
+
[debug] [2026-03-27T01:05:22.131Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
63
|
+
[debug] [2026-03-27T01:05:22.138Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
64
|
+
[debug] [2026-03-27T01:05:22.138Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
65
|
+
[debug] [2026-03-27T01:05:22.445Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
66
|
+
[debug] [2026-03-27T01:05:22.446Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
67
|
+
[debug] [2026-03-27T01:05:22.447Z] >>> [apiv2][query] POST https://developerknowledge.googleapis.com/mcp [none]
|
|
68
|
+
[debug] [2026-03-27T01:05:22.447Z] >>> [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"method":"tools/list","jsonrpc":"2.0","id":1}
|
|
69
|
+
[debug] [2026-03-27T01:05:23.048Z] <<< [apiv2][status] POST https://developerknowledge.googleapis.com/mcp 200
|
|
70
|
+
[debug] [2026-03-27T01:05:23.048Z] <<< [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"id":1,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to find documentation about Google developer products. The documents contain official APIs, code snippets, release notes, best practices, guides, debugging info, and more. It covers the following products and domains:\n\n* Android: developer.android.com\n* Apigee: docs.apigee.com\n* Chrome: developer.chrome.com\n* Firebase: firebase.google.com\n* Fuchsia: fuchsia.dev\n* Google AI: ai.google.dev\n* Google Cloud: docs.cloud.google.com\n* Google Developers, Ads, Search, Google Maps, Youtube: developers.google.com\n* Google Home: developers.home.google.com\n* TensorFlow: www.tensorflow.org\n* Web: web.dev\n\nThis tool returns chunks of text, names, and URLs for matching documents. If the returned chunks are not detailed enough to answer the user's question, use `get_documents` with the `parent` from this tool's output to retrieve the full document content.","inputSchema":{"description":"Request schema for search_documents. Use the query field to search for related Google developer documentation.","properties":{"query":{"description":"Required. The raw query string provided by the user, such as \"How to create a Cloud Storage bucket?\".","type":"string"}},"required":["query"],"type":"object"},"name":"search_documents","outputSchema":{"$defs":{"DocumentChunk":{"description":"A DocumentChunk represents a piece of content from a Document in the DeveloperKnowledge corpus. To fetch the entire document content, pass the `parent` to get_document or batch_get_documents.","properties":{"content":{"description":"Output only. The content of the document chunk.","readOnly":true,"type":"string"},"id":{"description":"Output only. The ID of this chunk within the document. The chunk ID is unique within a document, but not globally unique across documents. The chunk ID is not stable and may change over time.","readOnly":true,"type":"string"},"parent":{"description":"Output only. The resource name of the document this chunk is from. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for search_documents.","properties":{"results":{"description":"The search results for the given query. Each Document in this list contains a snippet of content relevant to the search query. Use the DocumentChunk.name field of each result with get_documents to retrieve the full document content.","items":{"$ref":"#/$defs/DocumentChunk"},"type":"array"}},"type":"object"}},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to retrieve the full content of a single document or up to 20 documents in a single call. The document names should be obtained from the `parent` field of results from a call to the `search_documents` tool. Set the `names` parameter to a list of document names.","inputSchema":{"description":"Request schema for get_documents.","properties":{"names":{"description":"Required. The names of the documents to retrieve, as returned by search_documents. A maximum of 20 documents can be retrieved in one call. The documents are returned in the same order as the `names` in the request. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"name":"get_documents","outputSchema":{"$defs":{"Document":{"description":"A Document represents a piece of content from the Developer Knowledge corpus.","properties":{"content":{"description":"Output only. The content of the document in Markdown format.","readOnly":true,"type":"string"},"description":{"description":"Output only. A description of the document.","readOnly":true,"type":"string"},"name":{"description":"Identifier. The resource name of the document. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","type":"string","x-google-identifier":true},"title":{"description":"Output only. The title of the document.","readOnly":true,"type":"string"},"uri":{"description":"Output only. The URI of the content, such as `https://cloud.google.com/storage/docs/creating-buckets`.","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for get_documents.","properties":{"documents":{"description":"Documents requested.","items":{"$ref":"#/$defs/Document"},"type":"array"}},"type":"object"}}]}}
|
|
71
|
+
[debug] [2026-03-27T01:05:23.049Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
72
|
+
[debug] [2026-03-27T01:05:23.049Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
73
|
+
[debug] [2026-03-27T01:08:51.137Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
74
|
+
[debug] [2026-03-27T01:08:51.138Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
75
|
+
[debug] [2026-03-27T01:08:51.149Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
76
|
+
[debug] [2026-03-27T01:08:51.149Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
77
|
+
[debug] [2026-03-27T01:08:51.417Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
78
|
+
[debug] [2026-03-27T01:08:51.417Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
79
|
+
[debug] [2026-03-27T01:08:51.418Z] >>> [apiv2][query] POST https://developerknowledge.googleapis.com/mcp [none]
|
|
80
|
+
[debug] [2026-03-27T01:08:51.418Z] >>> [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"method":"tools/list","jsonrpc":"2.0","id":1}
|
|
81
|
+
[debug] [2026-03-27T01:08:52.065Z] <<< [apiv2][status] POST https://developerknowledge.googleapis.com/mcp 200
|
|
82
|
+
[debug] [2026-03-27T01:08:52.065Z] <<< [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"id":1,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to find documentation about Google developer products. The documents contain official APIs, code snippets, release notes, best practices, guides, debugging info, and more. It covers the following products and domains:\n\n* Android: developer.android.com\n* Apigee: docs.apigee.com\n* Chrome: developer.chrome.com\n* Firebase: firebase.google.com\n* Fuchsia: fuchsia.dev\n* Google AI: ai.google.dev\n* Google Cloud: docs.cloud.google.com\n* Google Developers, Ads, Search, Google Maps, Youtube: developers.google.com\n* Google Home: developers.home.google.com\n* TensorFlow: www.tensorflow.org\n* Web: web.dev\n\nThis tool returns chunks of text, names, and URLs for matching documents. If the returned chunks are not detailed enough to answer the user's question, use `get_documents` with the `parent` from this tool's output to retrieve the full document content.","inputSchema":{"description":"Request schema for search_documents. Use the query field to search for related Google developer documentation.","properties":{"query":{"description":"Required. The raw query string provided by the user, such as \"How to create a Cloud Storage bucket?\".","type":"string"}},"required":["query"],"type":"object"},"name":"search_documents","outputSchema":{"$defs":{"DocumentChunk":{"description":"A DocumentChunk represents a piece of content from a Document in the DeveloperKnowledge corpus. To fetch the entire document content, pass the `parent` to get_document or batch_get_documents.","properties":{"content":{"description":"Output only. The content of the document chunk.","readOnly":true,"type":"string"},"id":{"description":"Output only. The ID of this chunk within the document. The chunk ID is unique within a document, but not globally unique across documents. The chunk ID is not stable and may change over time.","readOnly":true,"type":"string"},"parent":{"description":"Output only. The resource name of the document this chunk is from. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for search_documents.","properties":{"results":{"description":"The search results for the given query. Each Document in this list contains a snippet of content relevant to the search query. Use the DocumentChunk.name field of each result with get_documents to retrieve the full document content.","items":{"$ref":"#/$defs/DocumentChunk"},"type":"array"}},"type":"object"}},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to retrieve the full content of a single document or up to 20 documents in a single call. The document names should be obtained from the `parent` field of results from a call to the `search_documents` tool. Set the `names` parameter to a list of document names.","inputSchema":{"description":"Request schema for get_documents.","properties":{"names":{"description":"Required. The names of the documents to retrieve, as returned by search_documents. A maximum of 20 documents can be retrieved in one call. The documents are returned in the same order as the `names` in the request. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"name":"get_documents","outputSchema":{"$defs":{"Document":{"description":"A Document represents a piece of content from the Developer Knowledge corpus.","properties":{"content":{"description":"Output only. The content of the document in Markdown format.","readOnly":true,"type":"string"},"description":{"description":"Output only. A description of the document.","readOnly":true,"type":"string"},"name":{"description":"Identifier. The resource name of the document. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","type":"string","x-google-identifier":true},"title":{"description":"Output only. The title of the document.","readOnly":true,"type":"string"},"uri":{"description":"Output only. The URI of the content, such as `https://cloud.google.com/storage/docs/creating-buckets`.","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for get_documents.","properties":{"documents":{"description":"Documents requested.","items":{"$ref":"#/$defs/Document"},"type":"array"}},"type":"object"}}]}}
|
|
83
|
+
[debug] [2026-03-27T01:08:52.066Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
84
|
+
[debug] [2026-03-27T01:08:52.067Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
85
|
+
[debug] [2026-03-27T03:22:53.489Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
86
|
+
[debug] [2026-03-27T03:22:53.496Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
87
|
+
[debug] [2026-03-27T03:22:53.505Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
88
|
+
[debug] [2026-03-27T03:22:53.505Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
89
|
+
[debug] [2026-03-27T03:22:53.810Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
90
|
+
[debug] [2026-03-27T03:22:53.811Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
91
|
+
[debug] [2026-03-27T03:22:53.813Z] >>> [apiv2][query] POST https://developerknowledge.googleapis.com/mcp [none]
|
|
92
|
+
[debug] [2026-03-27T03:22:53.813Z] >>> [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"method":"tools/list","jsonrpc":"2.0","id":1}
|
|
93
|
+
[debug] [2026-03-27T03:22:54.477Z] <<< [apiv2][status] POST https://developerknowledge.googleapis.com/mcp 200
|
|
94
|
+
[debug] [2026-03-27T03:22:54.477Z] <<< [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"id":1,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to find documentation about Google developer products. The documents contain official APIs, code snippets, release notes, best practices, guides, debugging info, and more. It covers the following products and domains:\n\n* Android: developer.android.com\n* Apigee: docs.apigee.com\n* Chrome: developer.chrome.com\n* Firebase: firebase.google.com\n* Fuchsia: fuchsia.dev\n* Google AI: ai.google.dev\n* Google Cloud: docs.cloud.google.com\n* Google Developers, Ads, Search, Google Maps, Youtube: developers.google.com\n* Google Home: developers.home.google.com\n* TensorFlow: www.tensorflow.org\n* Web: web.dev\n\nThis tool returns chunks of text, names, and URLs for matching documents. If the returned chunks are not detailed enough to answer the user's question, use `get_documents` with the `parent` from this tool's output to retrieve the full document content.","inputSchema":{"description":"Request schema for search_documents. Use the query field to search for related Google developer documentation.","properties":{"query":{"description":"Required. The raw query string provided by the user, such as \"How to create a Cloud Storage bucket?\".","type":"string"}},"required":["query"],"type":"object"},"name":"search_documents","outputSchema":{"$defs":{"DocumentChunk":{"description":"A DocumentChunk represents a piece of content from a Document in the DeveloperKnowledge corpus. To fetch the entire document content, pass the `parent` to get_document or batch_get_documents.","properties":{"content":{"description":"Output only. The content of the document chunk.","readOnly":true,"type":"string"},"id":{"description":"Output only. The ID of this chunk within the document. The chunk ID is unique within a document, but not globally unique across documents. The chunk ID is not stable and may change over time.","readOnly":true,"type":"string"},"parent":{"description":"Output only. The resource name of the document this chunk is from. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for search_documents.","properties":{"results":{"description":"The search results for the given query. Each Document in this list contains a snippet of content relevant to the search query. Use the DocumentChunk.name field of each result with get_documents to retrieve the full document content.","items":{"$ref":"#/$defs/DocumentChunk"},"type":"array"}},"type":"object"}},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to retrieve the full content of a single document or up to 20 documents in a single call. The document names should be obtained from the `parent` field of results from a call to the `search_documents` tool. Set the `names` parameter to a list of document names.","inputSchema":{"description":"Request schema for get_documents.","properties":{"names":{"description":"Required. The names of the documents to retrieve, as returned by search_documents. A maximum of 20 documents can be retrieved in one call. The documents are returned in the same order as the `names` in the request. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"name":"get_documents","outputSchema":{"$defs":{"Document":{"description":"A Document represents a piece of content from the Developer Knowledge corpus.","properties":{"content":{"description":"Output only. The content of the document in Markdown format.","readOnly":true,"type":"string"},"description":{"description":"Output only. A description of the document.","readOnly":true,"type":"string"},"name":{"description":"Identifier. The resource name of the document. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","type":"string","x-google-identifier":true},"title":{"description":"Output only. The title of the document.","readOnly":true,"type":"string"},"uri":{"description":"Output only. The URI of the content, such as `https://cloud.google.com/storage/docs/creating-buckets`.","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for get_documents.","properties":{"documents":{"description":"Documents requested.","items":{"$ref":"#/$defs/Document"},"type":"array"}},"type":"object"}}]}}
|
|
95
|
+
[debug] [2026-03-27T03:22:54.479Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
96
|
+
[debug] [2026-03-27T03:22:54.479Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
97
|
+
[debug] [2026-03-27T05:21:32.803Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
98
|
+
[debug] [2026-03-27T05:21:32.804Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
99
|
+
[debug] [2026-03-27T05:21:32.810Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
100
|
+
[debug] [2026-03-27T05:21:32.810Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
101
|
+
[debug] [2026-03-27T05:21:33.117Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
102
|
+
[debug] [2026-03-27T05:21:33.117Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
|
103
|
+
[debug] [2026-03-27T05:21:33.119Z] >>> [apiv2][query] POST https://developerknowledge.googleapis.com/mcp [none]
|
|
104
|
+
[debug] [2026-03-27T05:21:33.119Z] >>> [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"method":"tools/list","jsonrpc":"2.0","id":1}
|
|
105
|
+
[debug] [2026-03-27T05:21:33.848Z] <<< [apiv2][status] POST https://developerknowledge.googleapis.com/mcp 200
|
|
106
|
+
[debug] [2026-03-27T05:21:33.848Z] <<< [apiv2][body] POST https://developerknowledge.googleapis.com/mcp {"id":1,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to find documentation about Google developer products. The documents contain official APIs, code snippets, release notes, best practices, guides, debugging info, and more. It covers the following products and domains:\n\n* Android: developer.android.com\n* Apigee: docs.apigee.com\n* Chrome: developer.chrome.com\n* Firebase: firebase.google.com\n* Fuchsia: fuchsia.dev\n* Google AI: ai.google.dev\n* Google Cloud: docs.cloud.google.com\n* Google Developers, Ads, Search, Google Maps, Youtube: developers.google.com\n* Google Home: developers.home.google.com\n* TensorFlow: www.tensorflow.org\n* Web: web.dev\n\nThis tool returns chunks of text, names, and URLs for matching documents. If the returned chunks are not detailed enough to answer the user's question, use `get_documents` with the `parent` from this tool's output to retrieve the full document content.","inputSchema":{"description":"Request schema for search_documents. Use the query field to search for related Google developer documentation.","properties":{"query":{"description":"Required. The raw query string provided by the user, such as \"How to create a Cloud Storage bucket?\".","type":"string"}},"required":["query"],"type":"object"},"name":"search_documents","outputSchema":{"$defs":{"DocumentChunk":{"description":"A DocumentChunk represents a piece of content from a Document in the DeveloperKnowledge corpus. To fetch the entire document content, pass the `parent` to get_document or batch_get_documents.","properties":{"content":{"description":"Output only. The content of the document chunk.","readOnly":true,"type":"string"},"id":{"description":"Output only. The ID of this chunk within the document. The chunk ID is unique within a document, but not globally unique across documents. The chunk ID is not stable and may change over time.","readOnly":true,"type":"string"},"parent":{"description":"Output only. The resource name of the document this chunk is from. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for search_documents.","properties":{"results":{"description":"The search results for the given query. Each Document in this list contains a snippet of content relevant to the search query. Use the DocumentChunk.name field of each result with get_documents to retrieve the full document content.","items":{"$ref":"#/$defs/DocumentChunk"},"type":"array"}},"type":"object"}},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Use this tool to retrieve the full content of a single document or up to 20 documents in a single call. The document names should be obtained from the `parent` field of results from a call to the `search_documents` tool. Set the `names` parameter to a list of document names.","inputSchema":{"description":"Request schema for get_documents.","properties":{"names":{"description":"Required. The names of the documents to retrieve, as returned by search_documents. A maximum of 20 documents can be retrieved in one call. The documents are returned in the same order as the `names` in the request. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"name":"get_documents","outputSchema":{"$defs":{"Document":{"description":"A Document represents a piece of content from the Developer Knowledge corpus.","properties":{"content":{"description":"Output only. The content of the document in Markdown format.","readOnly":true,"type":"string"},"description":{"description":"Output only. A description of the document.","readOnly":true,"type":"string"},"name":{"description":"Identifier. The resource name of the document. Format: `documents/{uri_without_scheme}` Example: `documents/docs.cloud.google.com/storage/docs/creating-buckets`","type":"string","x-google-identifier":true},"title":{"description":"Output only. The title of the document.","readOnly":true,"type":"string"},"uri":{"description":"Output only. The URI of the content, such as `https://cloud.google.com/storage/docs/creating-buckets`.","readOnly":true,"type":"string"}},"type":"object"}},"description":"Response schema for get_documents.","properties":{"documents":{"description":"Documents requested.","items":{"$ref":"#/$defs/Document"},"type":"array"}},"type":"object"}}]}}
|
|
107
|
+
[debug] [2026-03-27T05:21:33.850Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
|
|
108
|
+
[debug] [2026-03-27T05:21:33.851Z] > authorizing via signed-in user (eagle.xiao@gmail.com)
|
package/index.html
CHANGED
|
@@ -436,10 +436,10 @@
|
|
|
436
436
|
<button id="view-split" class="tool-chip">Split</button>
|
|
437
437
|
<button id="width-provider-toggle" class="tool-chip"></button>
|
|
438
438
|
<span id="svg-stats" class="stats-text">SVG: waiting</span>
|
|
439
|
-
<a class="tool-link" href="/
|
|
439
|
+
<a class="tool-link" href="/e2e/tools/compare.html" target="_blank" rel="noreferrer">
|
|
440
440
|
Compare Cases
|
|
441
441
|
</a>
|
|
442
|
-
<a class="tool-link" href="/
|
|
442
|
+
<a class="tool-link" href="/e2e/tools/svg-preview.html" target="_blank" rel="noreferrer">
|
|
443
443
|
SVG Only
|
|
444
444
|
</a>
|
|
445
445
|
</div>
|
|
Binary file
|