Skip to main content
Glama
Chryzalide

Gemini Notebook by Chryzalide (agy-gemini-notebook-plugin)

📓 Gemini Notebook by Chryzalide (agy-gemini-notebook-plugin)

Version Python License Author

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

Gemini Notebook by Chryzalide — 4-Step Animated Demo (Setup, Grounded Q&A, Deep Research to Local Markdown, and Studio Sync)

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

CLI Deep Research to Local Markdown Preview

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 & notebook_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 .md decision records and technical briefs inside your local project workspace.

  • 🏢 Engine 1 — Official Google Cloud API (v1alpha Discovery 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-py for Consumer & Enterprise):

    • Automatic Dual-Engine fallback when GCP_PROJECT_NUMBER is 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.sh wrapper + 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/)"]
  1. 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)).

  2. 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_query and notebook_search_sources.

  3. Generate Local Project Markdown Files: Using the grounded answers, synthesized research report, and source citations returned by the notebook, the agent writes structured .md files 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.md in 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:

  1. 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).

  2. 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.com and never uses stealth flags such as --disable-blink-features=AutomationControlled.

  3. Engine 1 — Official Google Cloud NotebookLM Enterprise (v1alpha REST API) — 100% Official & Supported:

    • Uses standard Google Cloud OAuth 2.0 Bearer tokens (gcloud auth login / gcloud auth print-access-token) against https://{ENDPOINT_LOCATION}-discoveryengine.googleapis.com/v1alpha/projects/{PROJECT_NUMBER}/locations/{LOCATION}/notebooks.

    • Recommended for corporate, production, and strict-compliance environments.

WARNING

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 --login

What ./scripts/setup.sh does automatically:

  1. [Step 1/5] Python Environment & Dependencies: Creates .venv (via uv or python3 -m venv) and installs agy-gemini-notebook-plugin[rpc,dev] (including notebooklm-py[cookies]).

  2. [Step 2/5] Local Browser Session Reader Verification: Verifies rookie-cookies so the plugin can import your existing session in ~1 second without downloading a 300 MB Playwright Chromium binary or automating accounts.google.com.

  3. [Step 3/5] Antigravity 2 Plugin Registration: Creates ~/.gemini/config/plugins/gemini-notebook and enables Gemini Notebook by Chryzalide via the Antigravity 2 Language Server if running.

  4. [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 into https://notebooklm.google.com/ in your normal browser.

    • Google Cloud NotebookLM Enterprise (v1alpha REST — Engine 1): Checks GCP_PROJECT_NUMBER and gcloud auth login.

  5. [Step 5/5] Health Verification: Runs agy-gemini-notebook status to confirm setup_ready: true.

IMPORTANT

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:

  1. Install the Python environment:

    uv sync --all-extras
  2. Register the plugin in Google Antigravity 2:

    mkdir -p ~/.gemini/config/plugins
    ln -s "$(pwd)" ~/.gemini/config/plugins/gemini-notebook
  3. Authenticate your preferred engine:

    • Engine 1 (Official Google Cloud NotebookLM Enterprise — v1alpha REST 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 --gcloud
    • Engine 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
  4. Verify readiness:

    .venv/bin/agy-gemini-notebook status
  5. Reload Antigravity 2 and open the Sidecar UI:

    • Open Overview -> Plugins -> Gemini Notebook by Chryzalide in 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:

  1. Call notebook_status to inspect your environment.

  2. Call notebook_login(browser_cookies="auto") to import your active browser session in 1 second (or open https://notebooklm.google.com/ in your system browser if you aren't logged in yet) and display the Dual-Engine compliance notice.

  3. List your notebooks (notebook_list) or create a new one (notebook_create) and bind it to .agents/notebook.json.

  4. 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

notebook_status

Local + Dual

Show active .agents/notebook.json binding, setup_ready, engine auth readiness, and compliance notice

notebook_login

Dual

Import an existing system browser session (browser_cookies="auto"), open notebooklm.google.com in the OS browser, or run gcloud auth login (never launches Playwright on accounts.google.com)

notebook_attach

Local

Attach a default notebook (or register an --alias) to the workspace

notebook_invoke

Dual

Resolve a notebook by ID, alias, or fuzzy title, inspect sources, and optionally run a grounded query

Notebook CRUD & Sharing

notebook_list

Dual

List notebooks (v1alpha recently viewed or RPC full list)

notebook_get

Dual

Retrieve notebook metadata and normalized source list

notebook_create

Dual

Create a new Gemini Notebook (and optionally bind it to the workspace)

notebook_delete

Dual

Delete one or more notebooks

notebook_rename

Engine 2 (RPC)

Rename an existing notebook

notebook_share

Dual

Share a notebook with users or toggle public link sharing

Sources & Code Sync

notebook_sync_files

Dual

Upload local workspace files (.md, .pdf, .txt, .docx, etc.) into a notebook

notebook_add_source

Dual

Ingest a web URL, raw text, YouTube video, or Google Drive document

notebook_delete_sources

Dual

Delete specific sources from a notebook

notebook_search_sources

Engine 2 (RPC)

Keyword/semantic search across sources inside a notebook

notebook_get_source_text

Engine 2 (RPC)

Extract the full indexed plain text of a specific source

Grounded Q&A & Research

notebook_query

Dual

Ask a grounded RAG question with inline citations (and optionally save as a note)

notebook_research

Engine 2 (RPC)

Launch Fast Research (fast), Deep Research (deep), or Source Discovery (discover) on Web or Drive

notebook_research_status

Engine 2 (RPC)

Poll or cancel an asynchronous research task and auto-import discovered sources

Studio Artifacts & Notes

notebook_create_audio

Dual

Generate a podcast Audio Overview

notebook_generate_artifact

Engine 2 (RPC)

Generate a Briefing Doc, Study Guide, Mind Map, Quiz, Flashcards, or Slide Deck

notebook_notes

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 the agy-gemini-notebook CLI work together across setup, grounded Q&A, autonomous Deep Research $\rightarrow$ local .md synthesis, and Studio artifact generation.

    • How: Rendered a 4-step animated walkthrough (assets/demo.gif) and standalone high-resolution previews (assets/sidecar-preview.png and assets/cli-research-preview.png) directly from the live Dark Mode sidecars/notebook_context_panel/ui.html layout and CLI output, and embedded them into a new ## 🎬 Visual Overview & Interactive Demo section at the top of README.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_login invoked notebooklm login without --browser-cookies, which spawned a Playwright-controlled Chromium browser on accounts.google.com using --disable-blink-features=AutomationControlled and ignore_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.toml from notebooklm-py[browser] to notebooklm-py[cookies] (rookie-cookies) and refactored NotebookRpcBridge.login() so it never launches Playwright against accounts.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, supports open_system_browser=True (via Python's webbrowser.open("https://notebooklm.google.com/")) so the user signs in exclusively inside their genuine system browser, and supports gcloud=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, consumer notebooklm.google.com does not yet offer a public OAuth API and relies on internal batchexecute web RPCs (a ToS grey area). Users need transparent, prominent warnings before choosing between Engine 1 and Engine 2.

    • How: Added COMPLIANCE_NOTICE to notebook_status, notebook_login, and auth_required MCP responses; added a dedicated ## ⚖️ Google Terms of Service, OAuth Policy & Dual-Engine Compliance section to README.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-safe Enter handling (!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 #1e1f20 cards 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 --muted is 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 added syncHostTheme() to inspect --background luminance on document.documentElement when switching themes.

  • Isolated .venv Python 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 notebooklm because sidecar.json launches server.py using the system python3 (/usr/bin/python3). Although server.py added .venv/lib/python*/site-packages to sys.path in-memory, NotebookRpcBridge.login() spawned [sys.executable, "-m", "notebooklm", "login"] in a child process where sys.executable was still /usr/bin/python3.

    • How: Added NotebookRpcBridge._resolve_python_executable() to resolve PLUGIN_ROOT / ".venv" / "bin" / "python" (and inject .venv PYTHONPATH/PATH), updated server.py to point sys.executable to .venv/bin/python, and added a sidecars/notebook_context_panel/notebooklm.py launcher shim that transparently execves .venv/bin/notebooklm even if an already-running server.py process 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 2 Overview -> Plugins menu and plugin manifest could cause ambiguity with official first-party Google plugins or branding.

    • How: Renamed displayName in plugin.json and display_name / ui_config.views[0].title in sidecars/notebook_context_panel/sidecar.json and ui.html to Gemini 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 -> Plugins or clicking the sidecar pill link did nothing for three reasons: (1) Antigravity 2 assigns a dynamic port to sidecars via ANTIGRAVITY_SIDECAR_WEB_PORT, whereas server.py only checked PORT (defaulting to 8765), (2) Antigravity 2 expects the sidecar to write server_info.json (host, port, token, pid) into ANTIGRAVITY_EXECUTABLE_DATA_DIR / ~/.gemini/antigravity/sidecar_data/.../data/server_info.json and serve /preload.js, and (3) the sidecar pill link was missing /ui.html (sidecar://gemini-notebook/notebook_context_panel/ui.html).

    • How: Updated server.py to bind ANTIGRAVITY_SIDECAR_WEB_PORT (falling back to PORT or 8000), write and clean up server_info.json, serve /preload.js and /shell.css, support X-Sidecar-Token CORS/query injection, and use "command": "python3", "args": ["server.py"] in sidecar.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.sh and agy-gemini-notebook setup [--login] plus Workflow 0 in SKILL.md and a complete visual Installation & Setup Workflow guide in README.md to 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 Cloud v1alpha project, notebooklm-py raised an unhandled FileNotFoundError: Storage file not found, which Antigravity 2's MCP client masked behind a generic Encountered error in tool execution: Error executing tool notebook_create message with no direct way to log in from the IDE.

    • How: Added NotebookAuthRequiredError and wrapped MCP tool handlers to return structured, actionable diagnostics (status: "auth_required") instead of crashing tool execution. Added the notebook_login MCP tool (21 tools total), the agy-gemini-notebook login CLI 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.sh and sidecars/notebook_context_panel/server.py) with dynamic $HOME/.gemini/config/plugins/gemini-notebook resolution while preserving AGY_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 Engine v1alpha REST API authenticated via gcloud auth print-access-token) with the community RPC bridge (rpc_bridge.py, powered by notebooklm-py for consumer and enterprise notebooklm.google.com accounts). Automatically falls back to Engine 2 when GCP_PROJECT_NUMBER is 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 .md Synthesis (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_notebook endpoints—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-notebook CLI (status, list, invoke, attach, create, query, research, sync, audio, artifact) and a portable MCP launcher supporting stdio, sse, and streamable-http transports 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 pytest and ruff.


👤 Author

Souryan Augé


📄 License

Distributed under the MIT License. Contributions are welcome!

Available Tools

21 tools
notebook_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.
NameRequiredDescriptionDefault
waitNo
titleNoWorkspace Source
valueYes
engineNoauto
mime_typeNoapplication/vnd.google-apps.document
notebook_idNo
source_typeYes
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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"`).
NameRequiredDescriptionDefault
aliasNo
titleNo
engineNoauto
notebook_idYes
workspace_dirNo
active_source_idsNo
gcp_project_numberNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
aliasNo
emojiNo
titleYes
engineNoauto
workspace_dirNo
attach_to_workspaceNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
waitNo
engineNoauto
source_idsNo
notebook_idNo
audio_formatNo
audio_lengthNo
episode_focusNo
language_codeNoen
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
engineNoauto
notebook_idsYes
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

NameRequiredDescriptionDefault
engineNoauto
source_idsYes
notebook_idNo
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

NameRequiredDescriptionDefault
waitNo
timeoutNo
source_idsNo
notebook_idNo
instructionsNo
artifact_typeYes
language_codeNoen
report_formatNobriefing_doc
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

NameRequiredDescriptionDefault
engineNoauto
notebook_idNo
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
source_idYes
notebook_idNo
include_guideNo
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.
NameRequiredDescriptionDefault
engineNoauto
targetNo
questionNo
workspace_dirNo
include_sourcesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
queryNo
engineNoauto
page_sizeNo
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.
NameRequiredDescriptionDefault
freshNo
gcloudNo
accountNo
browserNoauto
timeoutNo
browser_cookiesNoauto
open_system_browserNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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').

NameRequiredDescriptionDefault
titleNoAgent Note
actionNolist
contentNo
note_idNo
notebook_idNo
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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`.
NameRequiredDescriptionDefault
engineNoauto
questionYes
note_titleNo
source_idsNo
notebook_idNo
save_as_noteNo
workspace_dirNo
conversation_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
new_titleYes
notebook_idNo
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.
NameRequiredDescriptionDefault
modeNofast
waitNo
queryYes
sourceNoweb
timeoutNo
cited_onlyNo
notebook_idNo
workspace_dirNo
import_sourcesNo
allow_duplicateNo
create_notebook_titleNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
waitNo
cancelNo
task_idNo
timeoutNo
cited_onlyNo
notebook_idNo
workspace_dirNo
import_sourcesNo
allow_duplicateNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
limitNo
queryYes
source_idsNo
notebook_idNo
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_shareC

Share a Gemini Notebook with an email (GCP Enterprise IAM) or toggle public link sharing (RPC).

NameRequiredDescriptionDefault
roleNoPROJECT_ROLE_READER
emailNo
engineNoauto
publicNo
notebook_idNo
workspace_dirNo
notify_via_emailNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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 only states the operation and two backends. It omits permissions/auth requirements, side effects, whether toggling public link sharing is reversible or destructive, and what notify_via_email does.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single front-loaded sentence with no filler, but it is too terse for a seven-parameter mutation and packs two distinct modes into parentheses rather than structuring them.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given seven optional params, no annotations, no schema descriptions, and a mutation shape, the description is not complete enough for reliable invocation. The output schema helps only with return values, not with invocation semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across seven parameters, and the description only clarifies 'email' and 'public'. It leaves role, engine, notebook_id, workspace_dir, and notify_via_email unexplained, with no format or default semantics added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb ('Share') and resource ('Gemini Notebook'), and distinguishes the two sharing modes (email IAM vs public link RPC). It does not explicitly contrast with siblings, but none of the sibling tools cover sharing, so selection remains clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the two modes but no guidance on when to select email vs public, prerequisites/permissions, or what happens when optional notebook_id/workspace_dir are omitted. The mode split is useful context, but it stops short of explicit when/when-not guidance.

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.

NameRequiredDescriptionDefault
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
waitNo
engineNoauto
file_pathsYes
notebook_idNo
workspace_dirNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 21 tool updatesv0.1.0
    • First observednotebook_add_source
    • First observednotebook_attach
    • First observednotebook_create
    • First observednotebook_create_audio
    • First observednotebook_delete
    • First observednotebook_delete_sources
    • First observednotebook_generate_artifact
    • First observednotebook_get
    • First observednotebook_get_source_text
    • First observednotebook_invoke
    • First observednotebook_list
    • First observednotebook_login
    • First observednotebook_notes
    • First observednotebook_query
    • First observednotebook_rename
    • First observednotebook_research
    • First observednotebook_research_status
    • First observednotebook_search_sources
    • First observednotebook_share
    • First observednotebook_status
    • First observednotebook_sync_files

TDQS

C2.9/5.0

Scored across 21 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Bridges Claude Code/Cowork with Google NotebookLM for AI-powered research, source analysis, chat, and content generation through a structured tool interface.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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