Gemini Notebook by Chryzalide (agy-gemini-notebook-plugin)
Provides tools for invoking and piloting Google Gemini Notebooks (NotebookLM) with personal Google accounts, including notebook CRUD, source management, grounded Q&A with citations, research, notes, and Studio artifact generation.
Integrates with the official Google Cloud Discovery Engine v1alpha API for NotebookLM Enterprise, enabling notebook CRUD, sharing, file uploads, URL/YouTube/Drive source ingestion, Audio Overview generation, and Enterprise grounded Q&A.
Supports source discovery and research across Google Drive and ingestion of Google Drive sources into notebooks.
Allows YouTube URLs to be ingested as sources into Gemini Notebooks for grounded querying and research.
📓 Gemini Notebook by Chryzalide (agy-gemini-notebook-plugin)
Invoke and pilot Gemini Notebooks (NotebookLM & NotebookLM Enterprise) from Google Antigravity 2, VS Code, Cursor, Claude Code, and the CLI.
In the Gemini web app, users can attach a Gemini Notebook (NotebookLM) to a conversation for grounded, source-backed context. Gemini Notebook by Chryzalide (agy-gemini-notebook-plugin) is an independent, open-source community plugin that brings first-class Gemini Notebook integration—plus autonomous notebook piloting, Fast & Deep Research, and Studio Artifact generation—directly into Google Antigravity 2, VS Code, and any MCP-compatible agent harness.
🎬 Visual Overview & Interactive Demo

1. Autonomous Deep Research $\rightarrow$ Local Project .md Synthesis (agy-gemini-notebook)

2. Google Antigravity 2 Auxiliary Pane Sidecar UI (sidecar://gemini-notebook/notebook_context_panel/ui.html)
Related MCP server: notebooklm-mcp
✨ Key Features
🎯 Invoke Notebooks by ID, Alias, or Fuzzy Title (
notebook_invoke¬ebook_query):Attach a default notebook (plus named aliases) to your repository via
.agents/notebook.json.Invoke any notebook on the fly by ID, workspace alias, or fuzzy title match—with optional one-step grounded Q&A and inline source citations.
🔬 Autonomous Fast & Deep Research (
notebook_research):Pilot NotebookLM's Fast Research (
mode="fast"), Deep Research (mode="deep"), and Source Discovery (mode="discover") across the Web or Google Drive, and automatically import verified sources into your notebook.
📝 Documentary Research $\rightarrow$ Local Markdown Synthesis:
Turn research findings and curated notebook Q&A directly into structured, source-cited
.mddecision records and technical briefs inside your local project workspace.
🏢 Engine 1 — Official Google Cloud API (
v1alphaDiscovery Engine):100% official OAuth 2.0 authentication via
gcloud auth print-access-token(no browser cookies required).Create/get/delete/share notebooks, upload local files (
sources:uploadFile), ingest URLs/YouTube/Drive (sources:batchCreate), generate Audio Overviews, and run Enterprise Grounded Q&A (servingConfigs:answer).
💬 Engine 2 — Full RPC Bridge (
notebooklm-pyfor Consumer & Enterprise):Automatic Dual-Engine fallback when
GCP_PROJECT_NUMBERis not set—giving personal Google accounts (notebooklm.google.com) full CRUD, file uploads, source search, grounded Q&A with inline citations, Deep Research, Notes, and Studio Artifacts (Audio Overviews, Briefing Docs, Study Guides, Mind Maps, Quizzes, Flashcards, Slide Decks).
🖥️ Multi-Environment Ready (Antigravity 2 + VS Code + Cursor + CLI):
Antigravity 2 Plugin: Native MCP Server + Skill + Grounding Rule + Auxiliary Pane Sidecar UI (Gemini Notebook by Chryzalide).
VS Code / Cursor / Claude Code: Portable
scripts/run_mcp.shwrapper + MCP Resources (notebook://active) & Prompts (invoke_notebook,deep_research_notebook) +--transport stdio|sse|streamable-http.Standalone CLI (
agy-gemini-notebook): Setup, authenticate, invoke, query, sync files, and launch Deep Research from any terminal or agent bash tool.
💡 Use Cases & Workflows
1. Documentary Research & Decision Support $\rightarrow$ Local Project .md Files (Primary Workflow)
When your project needs documentary research to support technical, architectural, or product decision-making, the coding agent pilots a complete end-to-end research-to-documentation loop:
flowchart LR
A["1. Decision Need in Project"] --> B["2. Invoke Existing or Create New Gemini Notebook"]
B --> C["3. Run Deep Research or Query Existing Sources"]
C --> D["4. Synthesize Findings with Citations"]
D --> E["5. Write Local .md Files in Repository (docs/research/, docs/adr/)"]Open or Create a Notebook: The agent either invokes an existing curated Gemini Notebook (
notebook_invoke(target="...")) or creates a dedicated notebook for the topic (notebook_create(title="...", attach_to_workspace=True)).Research or Query:
New Documentary Research: The agent launches
notebook_research(query="...", mode="deep", source="web", import_sources=True)to discover, verify, and ingest external web or Google Drive sources into the notebook.Existing Corpus Q&A: Or the agent queries documents already curated inside the notebook via
notebook_queryandnotebook_search_sources.
Generate Local Project Markdown Files: Using the grounded answers, synthesized research report, and source citations returned by the notebook, the agent writes structured
.mdfiles directly inside your local project (e.g.,docs/research/vector-db-benchmark.md,docs/adr/004-auth-architecture.md, comparative matrices, or implementation plans) that are directly tailored to your codebase.
Example Agent Prompt in Antigravity 2 / VS Code:
"We need to choose between WebSockets, SSE, and WebTransport for our real-time notification pipeline. Open our 'System Architecture' Gemini Notebook (or create a new one if needed), run a documentary research comparing latency, proxy compatibility, and scaling trade-offs, query the sources for our constraints, and create
docs/research/realtime-transport-decision.mdin the local project with your cited recommendations."
2. Persistent Domain & Specification Grounding Across Coding Sessions
Bind your project's canonical Gemini Notebook (containing PRDs, API specifications, regulatory PDFs, and design docs) once via .agents/notebook.json. Whenever you ask the agent to implement a feature or verify business rules, it automatically queries notebook_query or notebook_search_sources before writing code—eliminating hallucinations and keeping every answer grounded with explicit [Notebook Title — Source Name] citations.
3. Bi-Directional Knowledge Sync (Local Repo $\leftrightarrow$ Gemini Notebook)
Keep your shared Gemini Notebook synchronized with your repository's latest architecture docs (README.md, AGENTS.md, docs/*.md, PDFs) using notebook_sync_files. What your engineering agent documents locally becomes immediately queryable in NotebookLM by product managers, researchers, and teammates.
4. Automated Briefings, Study Guides & Podcast Audio Overviews
After ingesting technical documentation or completing a Deep Research session, use notebook_generate_artifact (study_guide, briefing_doc, mind_map, quiz, slide_deck) or notebook_create_audio (deep-dive, brief, critique, debate) to produce executive summaries and onboarding materials directly from your workspace.
🏗️ Dual-Engine Architecture
flowchart LR
subgraph Harnesses["Agent Harnesses & IDEs"]
AGY["Antigravity 2 (Plugin + Sidecar)"]
VSC["VS Code / Cursor / Claude Code"]
CLI["agy-gemini-notebook CLI"]
end
subgraph Server["Gemini Notebook by Chryzalide"]
MCP["FastMCP / MCPServer (21 Tools + Resources + Prompts)"]
end
subgraph GCP["Engine 1: Official GCP API (v1alpha REST)"]
REST["discoveryengine.googleapis.com/v1alpha/.../notebooks"]
end
subgraph RPC["Engine 2: RPC Bridge (notebooklm-py)"]
NLM["notebooklm.google.com (RAG, Deep Research, Studio)"]
end
AGY --> MCP
VSC --> MCP
CLI --> MCP
MCP -->|"CRUD, Upload, Share, Audio, Answer (gcloud OAuth2)"| REST
MCP -->|"Full CRUD, Grounded Q&A, Deep Research, Studio (RPC)"| NLM⚖️ Google Terms of Service, OAuth Policy & Dual-Engine Compliance
Because this plugin bridges both Google Cloud Enterprise APIs and consumer Google NotebookLM, it is designed around strict separation of credentials and transparent compliance boundaries:
Zero Gemini CLI / Antigravity OAuth Siphoning:
This plugin never reads, extracts, or repurposes internal OAuth tokens belonging to Google Antigravity 2, Gemini CLI, or Cloud Code (
cloudcode-pa.googleapis.com).
Zero Automated Browser Sign-In on
accounts.google.com:In accordance with Google Identity's OAuth 2.0 Policy ("Use Secure Browsers"), this plugin never launches a Playwright/Puppeteer/Selenium-controlled browser window on
accounts.google.comand never uses stealth flags such as--disable-blink-features=AutomationControlled.
Engine 1 — Official Google Cloud NotebookLM Enterprise (
v1alphaREST API) — 100% Official & Supported:Uses standard Google Cloud OAuth 2.0 Bearer tokens (
gcloud auth login/gcloud auth print-access-token) againsthttps://{ENDPOINT_LOCATION}-discoveryengine.googleapis.com/v1alpha/projects/{PROJECT_NUMBER}/locations/{LOCATION}/notebooks.Recommended for corporate, production, and strict-compliance environments.
Engine 2 (rpc_bridge.py / notebooklm-py) — Unofficial Web RPC Grey-Area Notice:
Consumer Google NotebookLM (notebooklm.google.com) does not yet offer a public OAuth 2.0 API. To support personal Google accounts, grounded conversational RAG, and Deep Research, Engine 2 imports cookies from a real system browser session where you are already signed in (--browser-cookies auto|chrome|brave|firefox|edge|chromium|...) and communicates with notebooklm.google.com's internal batchexecute RPC endpoints via notebooklm-py.
Because Google's Terms of Service generally restrict unauthorized automated access to non-public web endpoints, Engine 2 operates in a technical "grey area" (similar to community NotebookLM MCP clients):
Use Engine 2 at your own discretion for personal workflows, experimentation, and low-frequency interactive queries from your IDE.
Avoid high-volume automated scraping or bulk unattended polling on personal Google accounts.
For strict organizational compliance, configure Engine 1 (
GCP_PROJECT_NUMBER+gcloud auth login).
🚀 Installation & Setup Workflow
To make installation and first-time onboarding effortless across Antigravity 2, VS Code, Cursor, and the CLI, Gemini Notebook by Chryzalide ships with a 5-step Setup Workflow (./scripts/setup.sh and agy-gemini-notebook setup).
flowchart LR
S1["1. Clone & Python .venv"] --> S2["2. Cookie Reader Check (rookie-cookies)"]
S2 --> S3["3. Register Plugin in Antigravity 2"]
S3 --> S4["4. Connect Browser Session or gcloud OAuth"]
S4 --> S5["5. Reload IDE & Attach Notebook"]Option 1: Automated 1-Command Setup (Recommended)
Clone the repository and run ./scripts/setup.sh:
git clone https://github.com/Chryzalide/agy-gemini-notebook-plugin.git
cd agy-gemini-notebook-plugin
./scripts/setup.sh --loginWhat ./scripts/setup.sh does automatically:
[Step 1/5] Python Environment & Dependencies: Creates
.venv(viauvorpython3 -m venv) and installsagy-gemini-notebook-plugin[rpc,dev](includingnotebooklm-py[cookies]).[Step 2/5] Local Browser Session Reader Verification: Verifies
rookie-cookiesso the plugin can import your existing session in ~1 second without downloading a 300 MB Playwright Chromium binary or automatingaccounts.google.com.[Step 3/5] Antigravity 2 Plugin Registration: Creates
~/.gemini/config/plugins/gemini-notebookand enables Gemini Notebook by Chryzalide via the Antigravity 2 Language Server if running.[Step 4/5] 1-Second Session Connection:
Personal / Workspace Google Account (
notebooklm.google.com— Engine 2): Imports your existing authenticated session from Chrome, Brave, Firefox, Edge, Chromium, Vivaldi, Arc, or Safari (--browser-cookies auto). You only need to be logged intohttps://notebooklm.google.com/in your normal browser.Google Cloud NotebookLM Enterprise (
v1alphaREST — Engine 1): ChecksGCP_PROJECT_NUMBERandgcloud auth login.
[Step 5/5] Health Verification: Runs
agy-gemini-notebook statusto confirmsetup_ready: true.
Reload Antigravity 2 Once After Initial Installation: When a new plugin or sidecar is added to ~/.gemini/config/plugins/, reload or restart Antigravity 2 once so the IDE starts the Gemini Notebook by Chryzalide Sidecar HTTP server and MCP server.
Option 2: Step-by-Step Manual Setup Checklist
If you prefer to execute each setup action manually:
Install the Python environment:
uv sync --all-extrasRegister the plugin in Google Antigravity 2:
mkdir -p ~/.gemini/config/plugins ln -s "$(pwd)" ~/.gemini/config/plugins/gemini-notebookAuthenticate your preferred engine:
Engine 1 (Official Google Cloud NotebookLM Enterprise —
v1alphaREST API):export GCP_PROJECT_NUMBER="123456789012" export GCP_LOCATION="global" # global, us, or eu export GCP_ENDPOINT_LOCATION="global" # global, us, or eu .venv/bin/agy-gemini-notebook login --gcloudEngine 2 (Personal / Workspace Google Account —
notebooklm.google.com, Grey Area): Make sure you are signed in to https://notebooklm.google.com/ in your regular browser, then import the session in 1 second:.venv/bin/agy-gemini-notebook login --browser-cookies auto # Or specify a browser explicitly: chrome, brave, firefox, edge, chromium, vivaldi, arc, safari
Verify readiness:
.venv/bin/agy-gemini-notebook statusReload Antigravity 2 and open the Sidecar UI:
Open
Overview -> Plugins -> Gemini Notebook by Chryzalidein the top-right auxiliary pane menu, or click[Gemini Notebook by Chryzalide](sidecar://gemini-notebook/notebook_context_panel/ui.html)in chat.
Option 3: In-IDE Agent-Guided or 1-Click Sidecar Setup
Once the plugin is linked and Antigravity 2 (or VS Code / Cursor) is running:
Via the Sidecar UI (Antigravity 2): Open the Gemini Notebook by Chryzalide panel, choose your browser (
Auto-detect/Chrome/Brave/Firefox/ etc.), and click "🔗 Connect Session from Browser" (or "☁️ Google Cloud Login (gcloud)" for Engine 1).Via Chat (Antigravity 2 / VS Code / Cursor): Ask the agent:
"Run the Gemini Notebook setup and connect my browser session for this workspace"
The agent will automatically:
Call
notebook_statusto inspect your environment.Call
notebook_login(browser_cookies="auto")to import your active browser session in 1 second (or openhttps://notebooklm.google.com/in your system browser if you aren't logged in yet) and display the Dual-Engine compliance notice.List your notebooks (
notebook_list) or create a new one (notebook_create) and bind it to.agents/notebook.json.Surface the clickable
[Gemini Notebook by Chryzalide](sidecar://gemini-notebook/notebook_context_panel/ui.html)sidecar pill link.
🔌 Multi-IDE & CLI Usage
VS Code (GitHub Copilot MCP / Cline / Roo Code) & Cursor
Add the server to your workspace .vscode/mcp.json (or .cursor/mcp.json). Because authentication is stored centrally in ~/.notebooklm/storage_state.json (or via gcloud), connecting your session once works simultaneously across Antigravity 2, VS Code, Cursor, and the CLI:
{
"servers": {
"gemini_notebook_mcp": {
"type": "stdio",
"command": "/path/to/agy-gemini-notebook-plugin/scripts/run_mcp.sh",
"env": {
"AGY_WORKSPACE_DIR": "${workspaceFolder}"
}
}
}
}Standalone CLI (agy-gemini-notebook)
Use the CLI from any terminal or agent shell tool:
# Run the guided setup & health check workflow (imports existing browser session)
agy-gemini-notebook setup --login
# Check engine auth, active workspace binding, and compliance notice
agy-gemini-notebook status
# Import Google NotebookLM session from your normal browser (auto, chrome, brave, firefox, etc.)
agy-gemini-notebook login --browser-cookies auto
# Or authenticate Official Engine 1 via Google Cloud SDK
agy-gemini-notebook login --gcloud
# Invoke a notebook by fuzzy title or alias and ask a grounded question
agy-gemini-notebook invoke "System Architecture" -q "What are the latency SLAs?"
# Create a notebook and run autonomous Deep Research with source auto-import
agy-gemini-notebook create "WebGPU Compute Patterns" --attach --alias webgpu
agy-gemini-notebook research "WebGPU subgroup operations performance" --mode deep
# Sync local markdown/PDF specs into the active notebook
agy-gemini-notebook sync README.md docs/architecture.md🛠️ Exposed MCP Tools (gemini_notebook_mcp)
Category | MCP Tool | Engine | Description |
Workspace & Invocation |
| Local + Dual | Show active |
| Dual | Import an existing system browser session ( | |
| Local | Attach a default notebook (or register an | |
| Dual | Resolve a notebook by ID, alias, or fuzzy title, inspect sources, and optionally run a grounded query | |
Notebook CRUD & Sharing |
| Dual | List notebooks ( |
| Dual | Retrieve notebook metadata and normalized source list | |
| Dual | Create a new Gemini Notebook (and optionally bind it to the workspace) | |
| Dual | Delete one or more notebooks | |
| Engine 2 (RPC) | Rename an existing notebook | |
| Dual | Share a notebook with users or toggle public link sharing | |
Sources & Code Sync |
| Dual | Upload local workspace files ( |
| Dual | Ingest a web URL, raw text, YouTube video, or Google Drive document | |
| Dual | Delete specific sources from a notebook | |
| Engine 2 (RPC) | Keyword/semantic search across sources inside a notebook | |
| Engine 2 (RPC) | Extract the full indexed plain text of a specific source | |
Grounded Q&A & Research |
| Dual | Ask a grounded RAG question with inline citations (and optionally save as a note) |
| Engine 2 (RPC) | Launch Fast Research ( | |
| Engine 2 (RPC) | Poll or cancel an asynchronous research task and auto-import discovered sources | |
Studio Artifacts & Notes |
| Dual | Generate a podcast Audio Overview |
| Engine 2 (RPC) | Generate a Briefing Doc, Study Guide, Mind Map, Quiz, Flashcards, or Slide Deck | |
| Engine 2 (RPC) | List, create, update, or delete persistent notes inside a notebook |
📦 Versioning & Changelog
This project follows strict, transparent versioning. Every version update and change made to the repository must be documented, explained, and recorded in this section of README.md (and kept synchronized across pyproject.toml, plugin.json, and src/agy_gemini_notebook/__init__.py).
v1.0.5 (2026-10-22) — Visual Demonstration Suite (Animated Walkthrough GIF, Sidecar UI & CLI Deep Research Previews)
Animated 4-Step Walkthrough GIF & High-DPI Previews (
assets/demo.gif,assets/sidecar-preview.png,assets/cli-research-preview.png,README.md):Why: Visitors, contributors, and community listings (GitHub, Reddit, Hacker News, LinkedIn, X/Twitter, and MCP directories) need an immediate, visual demonstration of how the Antigravity 2 Sidecar UI (
sidecar://gemini-notebook/notebook_context_panel/ui.html) and theagy-gemini-notebookCLI work together across setup, grounded Q&A, autonomous Deep Research $\rightarrow$ local.mdsynthesis, and Studio artifact generation.How: Rendered a 4-step animated walkthrough (
assets/demo.gif) and standalone high-resolution previews (assets/sidecar-preview.pngandassets/cli-research-preview.png) directly from the live Dark Modesidecars/notebook_context_panel/ui.htmllayout and CLI output, and embedded them into a new## 🎬 Visual Overview & Interactive Demosection at the top ofREADME.md.
v1.0.4 (2026-10-22) — Google Sign-In Policy Compliance, 1-Click Local Browser Session Import & Explicit Grey-Area Alerts
Elimination of Automated Playwright Sign-In on
accounts.google.com(src/agy_gemini_notebook/engines/rpc_bridge.py,pyproject.toml,scripts/setup.sh):Why: Previously,
notebook_logininvokednotebooklm loginwithout--browser-cookies, which spawned a Playwright-controlled Chromium browser onaccounts.google.comusing--disable-blink-features=AutomationControlledandignore_default_args=["--enable-automation"]. Automating Google's sign-in page with stealth flags contravenes Google Identity's OAuth 2.0 "Use Secure Browsers" policy and required a 300 MB Playwright Chromium download.How: Switched
pyproject.tomlfromnotebooklm-py[browser]tonotebooklm-py[cookies](rookie-cookies) and refactoredNotebookRpcBridge.login()so it never launches Playwright againstaccounts.google.com. Instead, it imports existing authenticated cookies from the user's real OS browser (--browser-cookies auto|chrome|brave|firefox|edge|chromium|vivaldi|arc|safari) in ~1 second, supportsopen_system_browser=True(via Python'swebbrowser.open("https://notebooklm.google.com/")) so the user signs in exclusively inside their genuine system browser, and supportsgcloud=True(gcloud auth login) for Engine 1.
Explicit ToS & Grey-Area Compliance Notices Across UI, MCP, CLI & Docs (
rpc_bridge.py,mcp_server.py,sidecars/notebook_context_panel/ui.html,README.md,SKILL.md,rules/AGENTS.md):Why: While Engine 1 (
discoveryengine.googleapis.com/v1alpha) is 100% official Google Cloud OAuth 2.0, consumernotebooklm.google.comdoes not yet offer a public OAuth API and relies on internalbatchexecuteweb RPCs (a ToS grey area). Users need transparent, prominent warnings before choosing between Engine 1 and Engine 2.How: Added
COMPLIANCE_NOTICEtonotebook_status,notebook_login, andauth_requiredMCP responses; added a dedicated## ⚖️ Google Terms of Service, OAuth Policy & Dual-Engine Compliancesection toREADME.md; and added a visible ⚠️ Compliance & Grey-Area Notice banner plus browser selector (#cookie-browser-select), "🔗 Connect Session from Browser", "🌐 Open notebooklm.google.com", and "☁️ Google Cloud Login (gcloud)" buttons to the Sidecar UI (ui.html), along with semantic<header>/<main>landmarks, explicit<label for>associations, and IME-safeEnterhandling (!e.isComposing).
v1.0.3 (2026-10-22) — Sidecar Dark Mode Contrast Fix & Isolated .venv Sign-In Subprocess Resolution
High-Contrast Dark Mode & Namespaced CSS Tokens (
sidecars/notebook_context_panel/ui.html):Why: In Antigravity 2 Dark Mode on Linux, section headers (
h2) and secondary labels (color: var(--muted)) rendered as dark gray/black on dark#1e1f20cards for two reasons: (1) Antigravity 2's sidecar host bridge (/preload.js) injects shadcn-style inline CSS custom properties onto<html style="--muted: #18191b; --card: #1e1f20; ...">where--mutedis a dark surface background rather than a foreground text color, overriding:root { --muted: ... }, and (2)@media (prefers-color-scheme: light)could match inside the Linux Electron webview even when the IDE shell was dark.How: Replaced all generic CSS custom properties with collision-proof
--nb-*tokens (--nb-bg,--nb-card,--nb-card-elevated,--nb-border,--nb-text: #f3f4f6,--nb-text-secondary: #cbd5e1,--nb-heading: #d2e3fc,--nb-accent: #8ab4f8), removed the@media (prefers-color-scheme: light)media query override, made high-contrast Dark Mode the default (:root, [data-theme="dark"]), and addedsyncHostTheme()to inspect--backgroundluminance ondocument.documentElementwhen switching themes.
Isolated
.venvPython Resolution for Browser Sign-In (src/agy_gemini_notebook/engines/rpc_bridge.py,sidecars/notebook_context_panel/server.py,sidecars/notebook_context_panel/notebooklm.py):Why: Clicking "🔑 Sign In to Google NotebookLM" in the Sidecar UI failed with
/usr/bin/python3: No module named notebooklmbecausesidecar.jsonlaunchesserver.pyusing the systempython3(/usr/bin/python3). Althoughserver.pyadded.venv/lib/python*/site-packagestosys.pathin-memory,NotebookRpcBridge.login()spawned[sys.executable, "-m", "notebooklm", "login"]in a child process wheresys.executablewas still/usr/bin/python3.How: Added
NotebookRpcBridge._resolve_python_executable()to resolvePLUGIN_ROOT / ".venv" / "bin" / "python"(and inject.venvPYTHONPATH/PATH), updatedserver.pyto pointsys.executableto.venv/bin/python, and added asidecars/notebook_context_panel/notebooklm.pylauncher shim that transparentlyexecves.venv/bin/notebooklmeven if an already-runningserver.pyprocess invokes/usr/bin/python3 -m notebooklm.
v1.0.2 (2026-10-22) — Rebranding to "Gemini Notebook by Chryzalide", Antigravity 2 Sidecar SDK Protocol Fix & Automated 5-Step Setup Workflow
Rebranding to
Gemini Notebook by Chryzalide(plugin.json,sidecars/notebook_context_panel/sidecar.json,ui.html,README.md):Why: Using the bare name
"Gemini Notebook"in the Antigravity 2Overview -> Pluginsmenu and plugin manifest could cause ambiguity with official first-party Google plugins or branding.How: Renamed
displayNameinplugin.jsonanddisplay_name/ui_config.views[0].titleinsidecars/notebook_context_panel/sidecar.jsonandui.htmltoGemini Notebook by Chryzalide.
Antigravity 2 Sidecar SDK Protocol Compliance (
sidecars/notebook_context_panel/server.py,sidecar.json,ui.html):Why: Clicking the plugin inside
Overview -> Pluginsor clicking the sidecar pill link did nothing for three reasons: (1) Antigravity 2 assigns a dynamic port to sidecars viaANTIGRAVITY_SIDECAR_WEB_PORT, whereasserver.pyonly checkedPORT(defaulting to8765), (2) Antigravity 2 expects the sidecar to writeserver_info.json(host,port,token,pid) intoANTIGRAVITY_EXECUTABLE_DATA_DIR/~/.gemini/antigravity/sidecar_data/.../data/server_info.jsonand serve/preload.js, and (3) the sidecar pill link was missing/ui.html(sidecar://gemini-notebook/notebook_context_panel/ui.html).How: Updated
server.pyto bindANTIGRAVITY_SIDECAR_WEB_PORT(falling back toPORTor8000), write and clean upserver_info.json, serve/preload.jsand/shell.css, supportX-Sidecar-TokenCORS/query injection, and use"command": "python3", "args": ["server.py"]insidecar.json. Updated all sidecar pill links to[Gemini Notebook by Chryzalide](sidecar://gemini-notebook/notebook_context_panel/ui.html).
Automated 5-Step Setup & Onboarding Workflow (
scripts/setup.sh,src/agy_gemini_notebook/cli.py,skills/gemini-notebook/SKILL.md,README.md):Why & How: Added
./scripts/setup.shandagy-gemini-notebook setup [--login]plusWorkflow 0inSKILL.mdand a complete visual Installation & Setup Workflow guide inREADME.mdto walk users through environment creation, Playwright Chromium verification, Antigravity 2 plugin registration, Engine 1/2 authentication, and IDE reload verification.
v1.0.1 (2026-10-22) — Interactive Authentication, Graceful Auth Diagnostics & Cross-Workspace Plugin Launchers
Interactive Login Tool, CLI & Sidecar Sign-In (
mcp_server.py,rpc_bridge.py,cli.py,sidecars/notebook_context_panel/):Why: When calling
notebook_create(or any Engine 2 RPC tool) before authenticating a Google NotebookLM session or Google Cloudv1alphaproject,notebooklm-pyraised an unhandledFileNotFoundError: Storage file not found, which Antigravity 2's MCP client masked behind a genericEncountered error in tool execution: Error executing tool notebook_createmessage with no direct way to log in from the IDE.How: Added
NotebookAuthRequiredErrorand wrapped MCP tool handlers to return structured, actionable diagnostics (status: "auth_required") instead of crashing tool execution. Added thenotebook_loginMCP tool (21 tools total), theagy-gemini-notebook loginCLI subcommand, and a "🔑 Sign In to Google NotebookLM" button (POST /api/login) in the Sidecar UI panel. Also added automatic Playwright Chromium revision bridging (_prepare_playwright_browsers_env) and sandbox-compatible session storage fallback (.notebooklm-auth/storage_state.json).
Cross-Workspace Plugin Command Resolution (
mcp_config.json,sidecars/notebook_context_panel/sidecar.json):Why & How: Replaced relative command paths (
scripts/run_mcp.shandsidecars/notebook_context_panel/server.py) with dynamic$HOME/.gemini/config/plugins/gemini-notebookresolution while preservingAGY_WORKSPACE_DIR=$(pwd), ensuring the MCP server and Sidecar UI launch reliably from any workspace opened in Antigravity 2 without hardcoding machine-specific paths.
v1.0 (2026-10-22) — Initial Stable Release
Dual-Engine Architecture (
src/agy_gemini_notebook/engines/):Why & How: Unifies official Google Cloud Enterprise provisioning (
gcp_enterprise_rest.py, Discovery Enginev1alphaREST API authenticated viagcloud auth print-access-token) with the community RPC bridge (rpc_bridge.py, powered bynotebooklm-pyfor consumer and enterprisenotebooklm.google.comaccounts). Automatically falls back to Engine 2 whenGCP_PROJECT_NUMBERis not configured, ensuring zero-friction operation for both personal Google accounts and GCP organizations.
Complete 20-Tool MCP Server, Resources & Prompts (
src/agy_gemini_notebook/mcp_server.py):Why & How: Exposes the full lifecycle of a Gemini Notebook to any MCP client: workspace binding & invocation (
notebook_status,notebook_attach,notebook_invoke), CRUD & sharing (notebook_list,notebook_get,notebook_create,notebook_delete,notebook_rename,notebook_share), local file synchronization & source management (notebook_sync_files,notebook_add_source,notebook_delete_sources,notebook_search_sources,notebook_get_source_text), grounded Q&A & autonomous research (notebook_query,notebook_research,notebook_research_status), and Studio deliverables & persistent notes (notebook_create_audio,notebook_generate_artifact,notebook_notes). Also registers MCP resources (notebook://active,notebook://aliases) and reusable MCP prompts (invoke_notebook,deep_research_notebook,sync_workspace_docs).
Documentary Research for Decision Support $\rightarrow$ Local
.mdSynthesis (skills/gemini-notebook/SKILL.md,rules/AGENTS.md):Why & How: Enables the primary decision-support workflow where the agent opens an existing Gemini Notebook or creates a new one, runs documentary research (
notebook_research) or queries curated notebook sources (notebook_query), and synthesizes the source-cited findings into structured local Markdown files (docs/research/*.md, ADRs, decision matrices) inside the active project workspace.
Interactive Antigravity 2 Sidecar Panel (
sidecars/notebook_context_panel/):Why & How: Provides an Auxiliary Pane web UI (
ui.html) backed by a local HTTP server (server.py) with/api/status,/api/notebooks,/api/attach,/api/toggle_source, and/api/create_notebookendpoints—allowing 1-click notebook switching, source-level grounding filters, and inline notebook creation.
Standalone CLI & Multi-IDE Transport (
src/agy_gemini_notebook/cli.py,scripts/run_mcp.sh):Why & How: Adds the
agy-gemini-notebookCLI (status,list,invoke,attach,create,query,research,sync,audio,artifact) and a portable MCP launcher supportingstdio,sse, andstreamable-httptransports across Google Antigravity 2, VS Code, Cursor, and Claude Code.
Automated Test Suite (
tests/):Why & How: Includes 16 comprehensive unit, mocked Dual-Engine, Sidecar HTTP API, and live MCP stdio handshake test suites verified with
pytestandruff.
👤 Author
Souryan Augé
🌐 Website: https://souryan-auge.fr/
💻 GitHub: @Chryzalide
📄 License
Distributed under the MIT License. Contributions are welcome!
Available Tools
21 toolsnotebook_add_sourceA
Add a text, web URL, YouTube video, or Google Drive document to a Gemini Notebook (Dual-Engine).
Args:
source_type: One of 'text', 'web', 'youtube', or 'gdrive'.
value: Raw text content, URL, YouTube URL, or Google Drive documentId.
title: Display name for the source.
mime_type: Used only when `source_type == 'gdrive'`.
notebook_id: Target notebook ID or workspace alias (defaults to workspace-attached notebook).
wait: When using RPC bridge, whether to wait for source indexing to complete.
engine: 'auto', 'gcp_rest', or 'rpc_bridge'.
workspace_dir: Optional workspace directory override.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| title | No | Workspace Source | |
| value | Yes | ||
| engine | No | auto | |
| mime_type | No | application/vnd.google-apps.document | |
| notebook_id | No | ||
| source_type | Yes | ||
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose non-obvious behavior: an engine selector ('auto', 'gcp_rest', 'rpc_bridge') and a `wait` flag that blocks on source indexing completion — genuinely useful context an agent could not infer. It omits mutation/irreversibility, auth requirements implied by the notebook_login sibling, duplicate-source handling, and side effects on the target notebook, which is a real gap for an unannotated write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is correctly front-loaded and each Args line is short and earns its place. There is minor duplication — the supported source kinds are enumerated in the opening sentence and again in the source_type entry — and the raw Python docstring formatting is slightly heavier than needed, but nothing is bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need not be explained. However, with zero annotations and zero schema description coverage on an 8-parameter mutation tool, the description should also establish required permissions/state and what happens to the notebook after insertion; it covers the mechanics but not the operating contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must compensate and largely does — every parameter gets a line, including the conditional constraint that mime_type applies only when source_type == 'gdrive', and the default behavior of notebook_id falling back to the workspace-attached notebook. Two entries remain thin: `engine` lists the allowed values without saying which to choose or why, and 'workspace_dir override' does not explain what is being overridden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Add) and resource (source) with an explicit enumeration of supported source kinds: text, web URL, YouTube video, Google Drive document. That is far beyond a tautology. It does not, however, contrast itself with siblings such as notebook_sync_files, which plausibly also introduces content into a notebook, so the differentiation bar for a 5 is not met.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the source_type enumeration — an agent can infer this is the tool for registering one source at a time. But there is no explicit when-to-use versus notebook_sync_files (bulk file ingestion) or notebook_attach, and no prerequisites such as requiring a completed notebook_login or an existing notebook_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_attachC
Attach a Gemini Notebook to the active workspace (.agents/notebook.json).
Supports optional `alias` so multiple notebooks can be registered and invoked by short name
(e.g. `alias="architecture"` or `alias="research"`).
| Name | Required | Description | Default |
|---|---|---|---|
| alias | No | ||
| title | No | ||
| engine | No | auto | |
| notebook_id | Yes | ||
| workspace_dir | No | ||
| active_source_ids | No | ||
| gcp_project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that attachment writes to `.agents/notebook.json` and that aliases allow multiple notebooks to be registered, but it omits auth requirements, overwrite or alias-collision behavior, and what the `engine`, `active_source_ids`, or `workspace_dir` parameters affect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core action, and the alias example earns its place. It is efficient but somewhat sparse for a seven-parameter mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a seven-parameter, unannotated state-changing tool with 0% schema description coverage, the description is incomplete: most parameters and key behavioral details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for seven parameters. It explains only `alias` meaningfully, with examples, and implies `notebook_id`, but leaves `title`, `engine`, `workspace_dir`, `active_source_ids`, and `gcp_project_number` entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: attach a Gemini Notebook to the active workspace, and names the backing file `.agents/notebook.json`. It is clear enough to distinguish from create/get/list siblings, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: register a notebook in the active workspace, optionally with an alias for multiple notebooks. However, there is no explicit when-to-use guidance versus notebook_create, notebook_get, or notebook_invoke, and no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_createC
Create a new Gemini Notebook via GCP v1alpha REST API or RPC bridge and optionally attach it.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | No | ||
| emoji | No | ||
| title | Yes | ||
| engine | No | auto | |
| workspace_dir | No | ||
| attach_to_workspace | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a mutation tool. It does not state required permissions, what 'attach' does to the workspace, whether the title must be unique, how 'engine' selection behaves, or what side effects occur. The API/RPC mention is implementation detail rather than behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no repetition. The 'via GCP v1alpha REST API or RPC bridge' clause is somewhat implementation-heavy and does not help an agent decide or invoke, but the overall statement remains tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutation tool with no annotations and 0% schema coverage, this description is too thin. The output schema means return values need not be explained, but missing details about prerequisites, engine selection, workspace attachment, and parameter behavior leave significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters, so the description must compensate. It only loosely hints at attach_to_workspace with 'optionally attach it' and says nothing about title, alias, emoji, engine (including valid values beyond the default 'auto'), or workspace_dir. Most parameter meaning is left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a new Gemini Notebook.' The mention of GCP v1alpha REST API or RPC bridge adds implementation context, and 'optionally attach it' hints at a post-create step. It doesn't explicitly contrast with siblings like notebook_attach or notebook_list, but the create action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus notebook_attach, notebook_list, or whether the workspace must already exist. The phrase 'optionally attach it' implies a workflow choice but does not explain the condition or prerequisites such as authentication or an existing workspace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_create_audioC
Generate an Audio Overview podcast on the notebook via GCP v1alpha REST or RPC bridge.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| engine | No | auto | |
| source_ids | No | ||
| notebook_id | No | ||
| audio_format | No | ||
| audio_length | No | ||
| episode_focus | No | ||
| language_code | No | en | |
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only names a transport ('GCP v1alpha REST or RPC bridge'), which is implementation detail rather than agent-relevant behavior. It does not say whether generation is synchronous or long-running (despite a `wait` parameter), what permissions are needed, or what happens to existing audio overviews.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and wastes no words, which is good structurally. However, given a 9-parameter tool with zero schema coverage, this level of brevity is under-specification rather than genuine conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter generation tool with no annotations and 0% schema description coverage, the description omits nearly everything an agent needs: parameter meanings, async behavior, engine selection, and output timing. The existence of an output schema only relieves the need to describe return values, not inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 9 parameters have 0% schema description coverage, and the description mentions none of them. Critical fields like `engine`, `audio_length`, `audio_format`, `episode_focus`, and `source_ids` are left completely unexplained, so the agent has no basis for setting them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Generate an Audio Overview podcast on the notebook,' which tells an agent this produces audio content rather than notes or research. It does not explicitly distinguish itself from the sibling notebook_generate_artifact, which could plausibly overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus notebook_generate_artifact or other generation tools, and no prerequisites or exclusions are mentioned. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_deleteC
Delete one or more Gemini Notebooks via GCP v1alpha batchDelete or RPC bridge.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | auto | |
| notebook_ids | Yes | ||
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full behavioral burden for a destructive operation. It names the backend mechanism ('v1alpha batchDelete or RPC bridge') but says nothing about irreversibility, cascade effects on sources/notes, required permissions, or batch partial-failure semantics. The implementation detail adds little for an agent deciding whether to call it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first and no padding. The trailing backend-mechanism clause is the only part that doesn't clearly earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values needn't be described, but for a destructive multi-delete tool with no annotations and 0% parameter coverage the description is substantially under-specified. Nothing tells an agent about safety, scope of deletion, or the meaning of the two optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and three parameters exist, yet the description only indirectly implies notebook_ids. The 'engine' parameter (default 'auto', presumably selecting batchDelete vs RPC bridge) and 'workspace_dir' are completely undocumented in both schema and prose, leaving an agent to guess their semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Delete one or more Gemini Notebooks.' The batch scope ('one or more') separates it from single-resource operations and from notebook_delete_sources, which acts on sources rather than notebooks. It never names a sibling explicitly, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus notebook_delete_sources or notebook_list/notebook_get for verification. No prerequisites, no cautions, no mention of what happens when some IDs in the batch are invalid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_delete_sourcesC
Delete one or more sources from a Gemini Notebook (Dual-Engine).
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | auto | |
| source_ids | Yes | ||
| notebook_id | No | ||
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description signals mutation but does not disclose that deletion is permanent/irreversible, whether missing or invalid source_ids cause partial failure, or how engine 'auto' selects a backend. With no annotations to carry the destructiveHint or readOnlyHint signals, the description carries the full burden and falls well short.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity is a result of under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained. But for a destructive, unannotated tool with four undocumented parameters, an agent lacks sufficient information to call it safely or correctly in varied contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; it only hints that source_ids is a list ('one or more'). It says nothing about engine ('auto'), notebook_id, or workspace_dir, leaving three of four parameters with no semantic context anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Delete one or more sources from a Gemini Notebook'. It implicitly distinguishes itself from notebook_delete (notebook-level) and notebook_add_source, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states no when-to-use context, no alternative tool for removing content, and no prerequisites. There is also no guidance on which of notebook_delete vs notebook_delete_sources to pick when a whole notebook should go.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_generate_artifactC
Generate a NotebookLM Studio Artifact (report, study_guide, briefing_doc, blog_post, mind_map, quiz, flashcards, slide_deck, data_table, infographic, video, audio).
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| timeout | No | ||
| source_ids | No | ||
| notebook_id | No | ||
| instructions | No | ||
| artifact_type | Yes | ||
| language_code | No | en | |
| report_format | No | briefing_doc | |
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and largely drops it: it never says whether generation is synchronous or asynchronous, what `wait`/`timeout` do, whether artifacts persist to `workspace_dir`, or whether jobs can be polled later via notebook_status. It is not misleading, just silent on everything beyond the artifact name list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the enumerated types in a parenthetical; no filler. Slightly dense with the long type list, but every element is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter generation tool with an output schema, the description omits the operational essentials: blocking vs. async behavior, source/notebook scoping, and where output lands. The presence of an output schema excuses return-value explanation, but not the missing invocation context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the description must compensate and doesn't. It only implicitly enumerates the allowed `artifact_type` values (genuinely useful since the schema has no enum), while `source_ids`, `notebook_id`, `instructions`, `language_code`, `report_format`, and `workspace_dir` are left entirely undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb and resource ('Generate a NotebookLM Studio Artifact') and enumerates the artifact types, so an agent knows exactly what comes out. It stops short of a 5 because it doesn't separate this from the sibling notebook_create_audio, which plausibly overlaps with the 'audio'/'video' types listed here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus notebook_create_audio or notebook_research, no preconditions (e.g., that a notebook or sources must exist first), and no note about how `wait`/`timeout` change the calling pattern. The list of artifact types is the only context given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_getC
Get metadata, AI summary, and list of sources for a Gemini Notebook (Dual-Engine).
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | auto | |
| notebook_id | No | ||
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but it says nothing about authentication requirements, whether the call fails without notebook_login, what 'Dual-Engine' entails, or how the 'auto' engine default is resolved; only the return payload is covered by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is appropriately sized for what it chooses to say, though its brevity leaves the gaps noted in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three undocumented parameters, no annotations, and 21 sibling notebook tools, this one-sentence description is not complete enough. The output schema covers return values, but selection guidance, parameter meaning, and auth/prerequisite context are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does not. It never explains notebook_id (or what happens when it is null), workspace_dir, or the 'engine' parameter beyond the vague phrase 'Dual-Engine'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Get') and a concrete resource set ('metadata, AI summary, and list of sources for a Gemini Notebook'), so an agent knows exactly what comes back. It does not explicitly distinguish itself from close siblings like notebook_list, notebook_status, or notebook_get_source_text, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus notebook_list (enumerate notebooks) or notebook_status (presumably lighter status check), nor any mention of prerequisites such as being logged in. Usage is only implied by the word 'Get' and the object 'Gemini Notebook'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_get_source_textC
Fetch the full indexed text (and optional AI summary/keywords guide) of a specific source.
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes | ||
| notebook_id | No | ||
| include_guide | No | ||
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it does not say the operation is read-only, what happens if the source is not indexed, whether text is truncated, or what the returned guide contains. The one piece of real context is that the guide is an optional AI summary/keywords artifact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource and scope front-loaded; nothing is padded. It is arguably too terse for a four-parameter tool, but that is a completeness issue rather than a conciseness one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but with no annotations and 0% parameter coverage the description leaves the agent guessing about the roles of notebook_id and workspace_dir and about failure behavior. For a four-parameter tool this is under-described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, and the description only touches include_guide indirectly ('optional AI summary/keywords guide'). It says nothing about source_id, notebook_id, or workspace_dir — notably why a notebook_id is needed when a source_id is already supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Fetch') and resource ('the full indexed text ... of a specific source'), and the 'full indexed text' phrasing separates it from search-style siblings like notebook_search_sources. It does not name a sibling explicitly, so it stays at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus notebook_get, notebook_search_sources, or notebook_query, and no prerequisites or exclusions are given. The only hint is that it targets 'a specific source', which the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_invokeB
Invoke a Gemini Notebook by ID, workspace alias, or title to ground the current task.
- If `question` is provided: executes a grounded query against the target notebook and returns
the synthesized answer, inline citations, and follow-up suggestions.
- If `question` is omitted: fetches the notebook's metadata, AI summary, suggested topics,
and source list so the agent can immediately inspect and use the notebook context.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | auto | |
| target | No | ||
| question | No | ||
| workspace_dir | No | ||
| include_sources | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, and it does describe what each mode returns (synthesized answer, citations, follow-ups; metadata, summary, topics, sources). That is meaningful behavioral detail, but it says nothing about read-only vs mutating nature, permission/auth requirements, or rate limits, which are the gaps annotations would normally cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then cleanly separated into two conditional bullets. Nearly every sentence earns its place, with only minor verbosity in the return-value enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shapes needn't be documented, yet three of five parameters have no explanation in schema or description, and the tool's permission/side-effect profile is unstated. Adequate for the dual-mode behavior but not complete for a zero-coverage five-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for five parameters. The description clarifies only `question` behavior and implicitly maps `target` to 'ID, workspace alias, or title', but `engine`, `workspace_dir`, and `include_sources` are entirely unexplained anywhere, which is a substantial gap at this coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Invoke a Gemini Notebook') and clarifies the identifying keys (ID, workspace alias, title). It does not distinguish this from close siblings like notebook_query or notebook_get, so an agent cannot be fully certain which sibling is the right call without reading both schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two-bullet branch explains when the tool behaves one way versus the other (question present vs omitted), which is useful internal routing guidance. However, it offers no comparison to alternatives such as notebook_query or notebook_get, leaving the agent to guess whether invoking is preferred over querying.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_listC
List Gemini Notebooks via official GCP v1alpha REST API or RPC bridge, with optional title filter.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| engine | No | auto | |
| page_size | No | ||
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It reveals the transport (GCP v1alpha REST or RPC bridge) but says nothing about authentication requirements, given that a sibling notebook_login exists, pagination behavior tied to page_size, or rate/size limits on listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first and the optional filter trailing. No redundant filler, though it omits the operational context that would have earned a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But for a four-parameter tool with zero annotation coverage and no parameter documentation, the description leaves an agent unable to choose an engine, size pages, or understand prerequisites before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters. The description explains only the title filter (query), leaving engine, page_size, and workspace_dir entirely undocumented in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (Gemini Notebooks), plus the optional title filter, so an agent can distinguish it from mutating siblings like notebook_create or notebook_delete. It does not, however, differentiate itself from read siblings such as notebook_get or notebook_search_sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives (e.g. notebook_get for a single notebook, or how the 'engine' choice should be made). The only implicit guidance is that a title filter may be supplied, which an agent could infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_loginA
Connect your Gemini Notebook session without Playwright sign-in automation on accounts.google.com.
- Default (`browser_cookies='auto'` or `'chrome'`, `'brave'`, `'firefox'`, `'edge'`, `'chromium'`):
Imports your already-signed-in `notebooklm.google.com` session directly from your installed
browser in ~1 second (Engine 2 — unofficial community RPC bridge).
- `gcloud=True`: Runs official `gcloud auth login` OAuth 2.0 flow for Google Cloud Discovery
Engine `v1alpha` (Engine 1 — 100% official Google Cloud API).
- `open_system_browser=True`: Opens `https://notebooklm.google.com/` in your genuine OS default
browser so you can verify you are signed in before connecting.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | ||
| gcloud | No | ||
| account | No | ||
| browser | No | auto | |
| timeout | No | ||
| browser_cookies | No | auto | |
| open_system_browser | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses important traits: browser-cookie import versus official gcloud OAuth, the unofficial community RPC bridge versus official Google Cloud API, and that open_system_browser opens the OS default browser. It still omits behavior for fresh, account, browser, and timeout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and organized into clear mode-based bullets. It is somewhat verbose in naming engine internals, but the structure makes the primary modes easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need not be described. However, for a seven-parameter authentication tool with no annotations and zero schema descriptions, the description is only partially complete because several parameters and their effects are unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across seven parameters, so the description must compensate. It explains gcloud, browser_cookies, and open_system_browser, but leaves fresh, account, browser, and timeout undocumented, and it does not clarify the distinction between browser and browser_cookies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: connect a Gemini Notebook session. It distinguishes authentication from Playwright sign-in automation, and it is obviously distinct from the notebook_* operational siblings, though it does not explicitly name or contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the default browser-cookie mode, the gcloud OAuth mode, and the open_system_browser verification mode. It does not explicitly say when this tool must be called versus notebook_status or other siblings, but the authentication context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_notesC
Manage persistent notes inside a Gemini Notebook (action: 'list', 'get', 'create', 'update', 'delete').
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Agent Note | |
| action | No | list | |
| content | No | ||
| note_id | No | ||
| notebook_id | No | ||
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It reveals nothing about the destructive nature of 'delete', whether notes persist across sessions, permission requirements, or how the default 'Agent Note' title and empty content behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, but the brevity here is under-specification rather than economy — the action list consumes the space that should have gone to per-action parameter requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, 5-action mutating tool with no annotations and no schema descriptions, the description is far too thin; the output schema covers return values, but nothing tells the agent which inputs are valid for which action or what delete does.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters. The description only enumerates legal values for `action`; it never explains note_id, notebook_id, workspace_dir semantics, or which fields apply to which action — a critical gap for a multi-action tool with zero required params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: managing persistent notes inside a Gemini Notebook, with the action enumeration clarifying it is a multi-operation note CRUD tool. This distinguishes it from notebook-level siblings like notebook_create or notebook_get, though it doesn't explicitly say so.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action list implies usage modes, but there is no guidance on which parameters each action needs, no prerequisites, and no steering among the many notebook_* siblings (e.g., when to use notebook_notes vs notebook_attach or notebook_query).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_queryB
Ask a grounded question against a Gemini Notebook and receive answer + inline citations.
Automatically filters to `active_source_ids` in `.agents/notebook.json` if `source_ids`
is not explicitly passed. Supports multi-turn follow-ups via `conversation_id` and
persisting the cited answer as a notebook note via `save_as_note=True`.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | auto | |
| question | Yes | ||
| note_title | No | ||
| source_ids | No | ||
| notebook_id | No | ||
| save_as_note | No | ||
| workspace_dir | No | ||
| conversation_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose real behavioral traits: automatic fallback to active_source_ids, citation-bearing answers, and the state-changing side effect of save_as_note writing a note. It omits auth requirements, whether the query is read-only absent save_as_note, and any cost/latency or engine-selection behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose and followed by the two behavioral clauses that matter most. Minor clutter from inline backticks and JSON-path detail, but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the answer/citation shape need not be described. But for an 8-parameter tool with zero schema description coverage and no annotations, three parameters (engine, workspace_dir, notebook_id) are entirely undocumented and the mutation boundary of save_as_note is only implied — the definition is adequate, not sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 8 parameters, so the description must compensate. It adds genuine semantics for source_ids (default resolution), conversation_id (follow-up threading), and save_as_note/note_title (note persistence), but leaves engine, workspace_dir, and notebook_id completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ask a grounded question against a Gemini Notebook') plus the return shape ('answer + inline citations'), which cleanly distinguishes it from siblings like notebook_notes or notebook_search_sources. It stops short of naming an explicit alternative, but the retrieval-plus-generation framing makes the role obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains useful conditional behavior (default source filtering when source_ids is omitted) and the multi-turn path via conversation_id, which implicitly tells the agent when to reuse a conversation. It never says when to prefer this over notebook_search_sources, notebook_research, or notebook_get_source_text, so sibling selection still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_renameC
Rename a Gemini Notebook via the RPC bridge and update .agents/notebook.json if attached.
| Name | Required | Description | Default |
|---|---|---|---|
| new_title | Yes | ||
| notebook_id | No | ||
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses an RPC bridge and a conditional config-file update side effect, but it does not state required permissions, what happens when no notebook is attached, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every clause contributes: the action, the target, the bridge, and the conditional side effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and 0% schema description coverage, one sentence is insufficiently complete. It omits parameter semantics, attachment prerequisites, and failure behavior; the output schema covers return values, but the call-side guidance remains thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description names none of the three parameters. It does not explain the required 'new_title', the optional 'notebook_id', or the role of 'workspace_dir', leaving the agent with no parameter meaning beyond what the schema titles weakly imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Rename') and resource ('Gemini Notebook'), and adds the mechanism ('via the RPC bridge') plus a conditional side effect. It is clearly distinct from create/delete/attach siblings, though it does not explicitly compare itself to alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as notebook_attach or notebook_create, and no prerequisites are stated beyond the conditional '.agents/notebook.json' note. The agent must infer usage conditions from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_researchA
Launch a Fast Research, Deep Research, or Source Discovery session on a Gemini Notebook.
Allows the agent harness to pilot NotebookLM as an autonomous research engine:
- Set `create_notebook_title` to spin up a brand-new notebook before launching research.
- Set `mode='fast'` for rapid web/Drive search (~10-30s).
- Set `mode='deep'` for exhaustive multi-step Deep Research with a synthesized Markdown report.
- Set `mode='discover'` (or `'curious'`) for instant synchronous web source discovery.
- Set `source='web'` or `source='drive'`.
- When `wait=True` and `import_sources=True`, discovered sources are automatically imported
into the notebook so you can immediately query or generate artifacts from them.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | fast | |
| wait | No | ||
| query | Yes | ||
| source | No | web | |
| timeout | No | ||
| cited_only | No | ||
| notebook_id | No | ||
| workspace_dir | No | ||
| import_sources | No | ||
| allow_duplicate | No | ||
| create_notebook_title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses useful traits like approximate fast-mode duration, deep-mode output format, and source import behavior, but does not explain timeout behavior, side effects on existing notebooks, authentication needs, or what happens when wait=False.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then uses a tight bullet list to explain mode and parameter semantics. There is minimal fluff and every bullet conveys actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no annotations, the description is only partially complete. It covers the most important mode and import semantics, but several behavioral and parameter details an agent would need to call it correctly are missing, even though the output schema handles return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all 11 parameters. It explains mode values, source values, wait/import_sources interaction, and create_notebook_title, but leaves cited_only, timeout, notebook_id, workspace_dir, allow_duplicate, and query undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource (launch a research session on a Gemini Notebook) and distinguishes the three research modes. It does not explicitly compare itself to siblings like notebook_query or notebook_research_status, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit guidance for choosing between modes: fast for rapid search, deep for exhaustive multi-step research, and discover for instant synchronous discovery. It lacks when-not-to-use guidance or explicit alternative-tool routing, so it falls short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_research_statusC
Check status, wait for completion, import sources from, or cancel a Fast/Deep Research run.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| cancel | No | ||
| task_id | No | ||
| timeout | No | ||
| cited_only | No | ||
| notebook_id | No | ||
| workspace_dir | No | ||
| import_sources | No | ||
| allow_duplicate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions waiting and cancelling but does not disclose that wait blocks up to a 600s default timeout, what cancel does to an in-flight run, whether import_sources has side effects on the notebook, or what happens when both wait and cancel are set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the primary verb (Check status) leads. It is dense because four modes are squeezed into one line, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a 9-parameter, multi-mode tool with zero annotation coverage and zero schema descriptions, and the description explains only about a third of the parameters and none of the mode interactions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the description must compensate and it largely doesn't: timeout, task_id, notebook_id, workspace_dir, cited_only, and allow_duplicate get no mention at all. Only wait, cancel, and import_sources are hinted at, and even those are not tied to their parameter names or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (a Fast/Deep Research run) and enumerates four concrete operations: check status, wait, import sources, cancel. This is specific enough to distinguish it from notebook_research (which presumably launches a run) and notebook_status (notebook-level status), though the multi-mode nature of one tool is somewhat compressed into a single clause.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lists the possible modes but never says when to pick which, whether flags are mutually exclusive, or how this differs from notebook_research/notebook_status. An agent must infer from parameter names that setting wait=true is the blocking variant, and nothing warns that import_sources/cancel mutate state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_search_sourcesC
Search indexed passages across a Gemini Notebook's sources and return ranked chunks.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| source_ids | No | ||
| notebook_id | No | ||
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It mentions ranked chunks but does not disclose whether the operation is read-only, what permissions or indexing state are required, how pagination or ranking works, or how notebook_id and source_ids interact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is efficiently structured, though it could include needed parameter or usage detail without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained in detail. However, with no annotations, five undocumented input parameters, and no usage guidance, the description is not complete enough for an agent to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters, and the description does not explain any parameter names or semantics. It does not clarify query, limit, source_ids, notebook_id, or workspace_dir, leaving the agent without guidance beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: searching indexed passages across a Gemini Notebook's sources and returning ranked chunks. It is clear what the tool does, though it does not explicitly distinguish itself from similarly named siblings such as notebook_query or notebook_get_source_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives, when not to use it, or any prerequisites. The intended usage is only implied by the word 'Search'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_statusB
Check current workspace Gemini Notebook binding and authentication status for both engines.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. 'Check' implies a read-only operation and the description adds scope about workspace binding and authentication across engines, but it does not explicitly state non-destructiveness, permission requirements, or edge-case behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or repetition. It communicates the core check efficiently, though it could be clearer about 'both engines'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity and has an output schema, so return values do not need description coverage. However, the missing parameter semantics and lack of usage guidance leave meaningful gaps for an agent deciding whether and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single optional workspace_dir parameter. The description mentions 'current workspace' but does not explain how workspace_dir is supplied, what the default null means, or how it relates to the current workspace.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb and resource: checking current workspace Gemini Notebook binding and authentication status. It is distinguishable from login-oriented siblings by focusing on status, though the phrase 'both engines' is not explained and no sibling is explicitly named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a status-checking tool, but it gives no explicit guidance on when to use it instead of alternatives such as notebook_login. No prerequisites, exclusions, or workflow context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_sync_filesC
Upload local workspace files (.md, .pdf, .txt, .docx, .pptx, .xlsx, audio, images) to a Gemini Notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| engine | No | auto | |
| file_paths | Yes | ||
| notebook_id | No | ||
| workspace_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden, yet it does not disclose that this is a mutating operation, whether uploads are synchronous or queued (the wait parameter implies async behavior), authentication requirements, or what happens when notebook_id is omitted. Only the accepted file types add useful behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler and an efficient parenthetical file-type list. It is concise, though the brevity comes at the cost of missing information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, for a five-parameter mutating upload tool with zero annotation and zero schema-description coverage, the description omits critical operational details (async/wait semantics, engine selection, notebook targeting, login prerequisites).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters. The description only loosely hints at file_paths via the file-type list and says nothing about wait, engine, notebook_id, workspace_dir, or the path-resolution interaction between file_paths and workspace_dir.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (upload) and resource (local workspace files) with an explicit list of accepted file types, and identifies the destination (Gemini Notebook). It does not differentiate from the sibling notebook_add_source, leaving an agent unsure which to choose when adding content to a notebook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus notebook_add_source, no prerequisites such as notebook_login, and no mention of when notebook_id or workspace_dir must be supplied. The agent must infer routing entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
21 tool updates
v0.1.0- First observed
notebook_add_source - First observed
notebook_attach - First observed
notebook_create - First observed
notebook_create_audio - First observed
notebook_delete - First observed
notebook_delete_sources - First observed
notebook_generate_artifact - First observed
notebook_get - First observed
notebook_get_source_text - First observed
notebook_invoke - First observed
notebook_list - First observed
notebook_login - First observed
notebook_notes - First observed
notebook_query - First observed
notebook_rename - First observed
notebook_research - First observed
notebook_research_status - First observed
notebook_search_sources - First observed
notebook_share - First observed
notebook_status - First observed
notebook_sync_files
TDQS
Scored across 21 tools
Several tools overlap in practice: `notebook_get` and `notebook_invoke` without a question both return metadata/summary, and `notebook_query` versus `notebook_invoke` with a question are functionally near-identical grounded Q&A paths. `notebook_add_source` and `notebook_sync_files` also both ingest content, and `notebook_notes` bundles five actions into one tool. Descriptions do disambiguate somewhat, but boundary choice requires careful reading.
All 21 tools use a consistent snake_case `notebook_*` prefix, which makes the family instantly recognizable. Minor deviation: some names are verb-first (create, delete, rename, list, query) while others are noun/state-like (`notebook_status`, `notebook_notes`, `notebook_research_status`), but the pattern remains readable and predictable.
21 tools is on the heavy side for a single-product integration, and the dual-engine (GCP REST vs RPC bridge) design is baked into tool parameters rather than split into separate surfaces. Most tools map to a real operation, but the set sits at the upper edge of what an agent can hold comfortably in one context.
Coverage is broad: notebook lifecycle, sources, notes, grounded search/query, research sessions, sharing, file sync, and artifact generation. Gaps exist around updating notebook metadata (only `notebook_rename`), editing/replacing sources, and retrieving or listing generated artifacts after creation. These are workarounds-able but notable.
Maintenance
Related MCP Connectors
Google NotebookLM via natural language: create notebooks, add sources (PDF, URL, YouTube) and ask gr
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
- AurentiaOAuthfr.aurentia
Your Aurentia workspace — projects, CRM, tasks, deliverables — in Claude, Cursor or any MCP client.
Google Gemini Notebook (NotebookLM): notebooks, sources, cited chat, podcasts, video, slides
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceExposes Google NotebookLM as MCP tools, enabling management of notebooks, sources, chat, artifacts, and research via natural language.21 PyPI2MIT
- AlicenseNot gradedqualityDmaintenanceBridges Claude Code/Cowork with Google NotebookLM for AI-powered research, source analysis, chat, and content generation through a structured tool interface.MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying Google NotebookLM notebooks directly from Claude Desktop (MCP) and Claude Code (CLI), providing citation-backed answers from Gemini.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to drive Google NotebookLM notebooks as a deep-research workspace: ingesting local PDFs and YouTube videos, cross-checking sources for contradictions, identifying knowledge gaps, generating audio overviews, and exporting Markdown dossiers with BibTeX and APA bibliographies. It operates over the Model Context Protocol inside Google Antigravity IDE, with browser-session authentication handled automatically.MIT