Skip to main content
Glama
Pantheon-Security

NotebookLM MCP Server (Security Hardened)

NotebookLM MCP Server (Security Hardened)

🏆 The World's Most Advanced NotebookLM MCP Server

Zero-hallucination answers • Gemini Deep Research • 17 Security Layers • Enterprise Compliance

npm CalVer TypeScript MCP Platform Security Post-Quantum Gemini Documents Notebooks Compliance Tests

What's New 2026Deep ResearchDocument APICreate NotebooksSecurityInstall

The only NotebookLM MCP with enterprise-grade security, post-quantum encryption, and full Gemini API integration.

Security-hardened fork of PleasePrompto/notebooklm-mcp • Maintained by Pantheon Security

⚡ TL;DR — What You Get

  • 🔍 Query your NotebookLM notebooks — source-grounded, zero-hallucination answers

  • 📚 Create & manage notebooks programmatically — no manual clicking

  • 🎙️ Generate audio overviews — podcast-style summaries of your docs

  • 🎬 Generate video overviews — AI video summaries with 10 visual styles NEW

  • 📊 Extract data tables — structured JSON from notebook sources NEW

  • 🔬 Gemini 3 + Deep Research — latest models with thinking control (optional API) NEW

  • 📄 Document API — upload & query PDFs without browser (optional API)

  • 🔐 17 security layers — post-quantum encryption, audit logs, secrets scanning

  • Compliance-ready architecture — built to GDPR, SOC2, and CSSF standards (controls implemented; formal certification requires third-party audit)

  • 💡 No API key required — core features work with just browser auth


🚀 What's New in 2026

Latest: v2026.3.1 — All 334 audit issues resolved. 631 tests. Full MCP protocol compliance.

Version

Highlights

v2026.3.1

Security Audit Complete — All 334 issues from the independent audit resolved. Tests: 609 → 631. Code quality: URL resolution deduplicated, handler extraction, non-null assertions eliminated. Test gaps closed: validateNotebookId, error body shape, delete_document confirm guard, sanitized throws, log rotation, rate-limiter memory bound, range clamping.

v2026.3.0

The Security Audit Release — Four parallel AI code reviews (security, protocol, architecture, testing) against 334 issues. All highs and mediums resolved. Tests: 139 → 609 across 50 files (4.4×). Full MCP protocol compliance: structuredContent, isError, transport tags. Schema bounds on all 48 tools. Annotation correctness. Webhook SSRF fix. Audit log integrity (hash chain, concurrent write lock, rotation continuity). Per-page mutex. HandlerContext DI. Cert pinning retracted (claims aligned with implementation).

v2026.2.10

The Hardening Release — 3 new security layers (14→17): secure-by-default auth, exponential backoff lockout, credential isolation. Architecture overhaul: 3,611-line handler split into 9 domain modules, tool registry pattern. Gemini API retry with backoff. Multi-stage Docker build. Token CLI (token show/rotate). 168 tests.

v2026.2.9

performSetup no longer wipes credentials before Chrome opens — prevents auth destruction on failed launch

v2026.2.8

cleanup_data never deletes auth dirs (browser_state/, chrome_profile/) — auth survives all cleanup paths

v2026.2.7

Block headless setup_auth calls; robust auth-now.mjs standalone script with Chrome profile lock handling

v2026.2.6

New add_folder tool for bulk PDF/file uploads; improved tier detection for NotebookLM Plus

v2026.2.5

Fix show_browser silently ignored in setup_auth — browser now reliably opens for auth

v2026.2.4

Auth stability: 7-day state expiry, touchStateFile on validation, block headless re_auth

v2026.2.3

Studio Panel tools restored: Video Overview, Data Table generation re-enabled

v2026.2.1

Standard profile expanded: 14 → 33 tools — notebook creation, audio, source management now visible by default

v2026.2.0

Gemini 3 models (2.5 retiring March 31), Video Overviews, Data Tables, thinking level, structured JSON, SDK 1.41

v2026.1.12

Security hardening: constant-time auth, command injection fix, memory leak fixes, MCP SDK 1.26.0

v2026.1.11

Notebook sync extraction for new Angular UI, NOTEBOOKLM_NO_GEMINI env var

v2026.1.10

Tool description clarity for multi-LLM compatibility

v2026.1.9

Documentation & UX improvements, npm audit fix

v2026.1.8

Major dependency updates (zod 4.x, dotenv 17.x, post-quantum 0.5.4)

v2026.1.7

MCP Protocol UX: tool icons, human-friendly titles, behavior annotations

v2026.1.4

Defense-in-depth path validation, security hardening

v2026.1.1

Deep health checks, chat history extraction, context management

# Quick install
claude mcp add notebooklm -- npx @pan-sec/notebooklm-mcp@latest

Why Choose This MCP?

Capability

Other MCPs

This MCP

Query NotebookLM

✅ Basic

+ session management, quotas

Create notebooks programmatically

UNIQUE

Gemini Deep Research

EXCLUSIVE

Document API (no browser)

EXCLUSIVE

Post-quantum encryption

Hybrid PQ at-rest

Enterprise compliance

GDPR/SOC2/CSSF-ready

Video Overview generation

NEW

Data Table extraction

NEW

Chat history extraction

Deep health verification


Related MCP server: NotebookLM MCP Server

🔬 Security Audit 2026 — What We Found and Fixed

In April 2026, we commissioned a parallel deep-audit of v2026.2.11 (main @ 2973097) using four specialised AI code reviewers, each focused on a different attack surface: security vulnerabilities, protocol correctness, architecture quality, and testing gaps and edge cases. The four reviewers operated independently so their findings wouldn't influence each other. Together they produced a 334-item master issue list covering protocol correctness, security vulnerabilities, architecture flaws, test gaps, and documentation accuracy. All 334 issues are resolved across v2026.3.0 and v2026.3.1.

Audit by the Numbers

Metric

Before (v2026.2.11)

After (v2026.3.1)

Tests

139

631 across 50 files

Test suites

~6

50

TypeScript errors (tsc --noEmit)

0

0 (maintained)

npm audit vulnerabilities

0

0 (maintained)

MCP protocol compliance

Partial

Full (structuredContent, isError, transport tags)

Audit log integrity

Basic

Hash-chain verified on read

Concurrent write safety

✅ Write-locked

Webhook SSRF

✅ Blocked

What the Four Reviewers Found

Security reviewer: Identified the forceAuth bypass in validateToken() allowing unauthenticated access to filesystem tools; webhook SSRF via unvalidated delivery targets; audit log hash chain not verified on read; concurrent audit writes interleaving entries; auth token salt not persisted (tokens invalidated on restart).

Protocol reviewer: Found 38 tools returning incorrect response shapes (missing structuredContent, wrong isError semantics, transport tags leaking into content); all 48 tools had incorrect or missing readOnlyHint/idempotentHint/destructiveHint annotations; 9 tool schemas lacked numeric bounds, enabling out-of-range inputs.

Architecture reviewer: Flagged the 3,611-line handlers.ts as a maintenance liability; singleton imports throughout domain functions preventing unit testing; the 500-line switch/case dispatch adding O(n) overhead and making tool registration error-prone.

Testing & edge-case reviewer: Found test suite at 139 tests with minimal coverage of security-critical modules; mcp-auth.ts at near-zero coverage; no tests for prompt injection patterns, audit log tampering, or concurrent browser session state; the DSAR handler had an undetected race condition.

Key Fixes

  • 17 security vulnerabilities addressed (auth bypass, SSRF, audit integrity, race conditions, selector injection vectors)

  • MCP protocol fully compliant — all 48 tools return correct structuredContent/isError shapes; annotations accurate; schema bounds enforced

  • Architecture decomposedhandlers.ts split into 9 domain modules with HandlerContext dependency injection; 100% unit-testable without process mocks

  • Test coverage — 15 new security-critical test suites including browser session, auth, prompt injection, audit log, webhook, DSAR, and compliance

  • Claims aligned — certificate pinning removed (implementation was retracted in Day 1 of the audit); PQ encryption scope documented accurately; compliance language uses "controls implemented" not "certified"

Core NotebookLM (No API Key Required)

Tool

Description

ask_question

Query notebooks with source-grounded answers

add_notebook

Add a notebook to your library

list_notebooks

List all notebooks in library

select_notebook

Set active notebook

update_notebook

Update notebook metadata

remove_notebook

Remove from library

create_notebook

Programmatically create new notebooks

batch_create_notebooks

Create multiple notebooks at once

sync_library

Sync library with NotebookLM

list_sources

List sources in a notebook

add_source

Add source to notebook

add_folder

Bulk upload PDFs/files from a local folder to a notebook

remove_source

Remove source from notebook

generate_audio_overview

Create podcast-style audio

get_audio_status

Check audio generation status

download_audio

Download generated audio

generate_video_overview

Create AI video overview (10 styles)

get_video_status

Check video generation status

generate_data_table

Generate structured data table

get_data_table

Extract data table as JSON

list_sessions

List active sessions

close_session

Close a session

reset_session

Reset session history

get_health

Check server & auth status

setup_auth

Initial authentication

re_auth

Re-authenticate

cleanup_data

Clean up local data

get_quota

Check usage quotas

set_quota_tier

Set quota tier

get_query_history

View past queries

get_notebook_chat_history

Extract browser chat history

get_project_info

Get project context

export_library

Export library backup

Gemini API (Optional - Requires GEMINI_API_KEY)

Tool

Description

deep_research

Comprehensive research agent

gemini_query

Fast grounded queries

get_research_status

Check research progress

upload_document

Upload docs to Gemini

query_document

Query uploaded documents

query_chunked_document

Query large documents

list_documents

List uploaded documents

delete_document

Delete uploaded document

Webhooks & Integrations

Tool

Description

configure_webhook

Set up webhook notifications

list_webhooks

List configured webhooks

test_webhook

Test webhook delivery

remove_webhook

Remove a webhook

Enterprise Compliance (16 additional tools)

See Compliance Documentation for full list.


Gemini Deep Research (v1.8.0)

The most powerful research capability for AI agents — now in your MCP toolkit.

v1.8.0 introduces the Gemini Interactions API as a stable, API-based research backend alongside browser automation. This gives your agents access to Google's state-of-the-art Deep Research agent.

Why This Matters

Challenge

Solution

Browser UI changes break automation

Gemini API is stable and versioned

Need comprehensive research but no research agent

Deep Research agent does it for you

Want current information with citations

Google Search grounding built-in

Need reliable, fast queries

API-based = no UI dependencies

New Tools

deep_research — Comprehensive Research Agent

"Research the security implications of post-quantum cryptography adoption in financial services"
  • Runs Google's Deep Research agent (same as Gemini Advanced)

  • Takes 1-5 minutes for comprehensive, web-grounded analysis

  • Returns structured answers with citations and sources

  • Perfect for complex topics requiring multi-source synthesis

gemini_query — Fast Grounded Queries

"What are the latest CVEs for Log4j in 2025?" (with Google Search)
"Calculate the compound interest on $10,000 at 5% over 10 years" (with code execution)
"Summarize this security advisory: [URL]" (with URL context)
  • Google Search grounding — Current information, not just training data

  • Code execution — Run calculations, data analysis

  • URL context — Analyze web pages on demand

  • Models: gemini-3-flash-preview (default), gemini-3-pro-preview (powerful), gemini-2.5-flash (legacy)

get_research_status — Background Task Monitoring

Run deep research in the background and check progress:

"Start researching [topic] in the background"
... continue other work ...
"Check research status for interaction_abc123"

Hybrid Architecture

┌──────────────────────────────────────────────────────────────────────────────┐
│                      NotebookLM MCP Server v2026.3.x                         │
├──────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│  ┌────────────────────────────────┐    ┌──────────────────────────────────┐  │
│  │      BROWSER AUTOMATION        │    │          GEMINI API              │  │
│  │    ✅ NO API KEY NEEDED        │    │    ⚡ OPTIONAL - needs API key   │  │
│  ├────────────────────────────────┤    ├──────────────────────────────────┤  │
│  │                                │    │                                  │  │
│  │  QUERY                         │    │  RESEARCH                        │  │
│  │  • ask_question                │    │  • deep_research                 │  │
│  │  • get_notebook_chat_history   │    │  • gemini_query                  │  │
│  │                                │    │  • get_research_status           │  │
│  │  CREATE & MANAGE               │    │                                  │  │
│  │  • create_notebook             │    │  DOCUMENTS                       │  │
│  │  • batch_create_notebooks      │    │  • upload_document               │  │
│  │  • manage_sources              │    │  • query_document                │  │
│  │  • generate_audio              │    │  • query_chunked_document        │  │
│  │  • generate_video_overview     │    │  • list/delete_document          │  │
│  │  • generate_data_table         │    │                                  │  │
│  │  • sync_notebook               │    │                                  │  │
│  │                                │    │                                  │  │
│  │  HEALTH & SESSIONS     v2026   │    │                                  │  │
│  │  • get_health (deep_check)     │    │  Fast API • 48h retention        │  │
│  │  • get_query_history           │    │  Auto-chunking for large PDFs    │  │
│  └────────────────────────────────┘    └──────────────────────────────────┘  │
│                                                                              │
│                      ┌─────────────────────────────────┐                     │
│                      │       17 SECURITY LAYERS        │                     │
│                      │   Post-Quantum • Audit Logs     │                     │
│                      │   Secrets Scan • Memory Wipe    │                     │
│                      │  GDPR • SOC2 • CSSF Ready*      │                     │
│                      └─────────────────────────────────┘                     │
└──────────────────────────────────────────────────────────────────────────────┘

💡 Gemini API is completely optional! All core NotebookLM features (ask_question, notebooks, sessions, audio) work via browser automation with no API key required. The Gemini tools below are bonus features for users who want direct API access.

Gemini Configuration (Optional)

# Only required if you want Gemini API features (deep_research, gemini_query, upload_document)
GEMINI_API_KEY=your-api-key          # Get from https://aistudio.google.com/apikey

# Optional settings
GEMINI_DEFAULT_MODEL=gemini-3-flash-preview  # Default model (was gemini-2.5-flash)
GEMINI_DEEP_RESEARCH_ENABLED=true            # Enable Deep Research
GEMINI_TIMEOUT_MS=30000                      # API timeout

When to Use Which

Task

Best Tool

Why

Questions about YOUR documents

ask_question

Grounded on your uploaded sources

Comprehensive topic research

deep_research

Multi-source synthesis with citations

Current events / recent info

gemini_query + google_search

Live web data

Code calculations

gemini_query + code_execution

Reliable computation

Analyze a webpage

gemini_query + url_context

Direct page analysis

Quick PDF/document analysis

upload_document + query_document

Fast API, no browser (NEW!)


📄 Document API (v1.9.0)

Upload and query documents directly via Gemini API — no browser automation needed.

v1.9.0 introduces the Gemini Files API for fast, reliable document analysis. Upload PDFs, analyze them instantly, and delete when done.

Why This Matters

Feature

Browser Mode

Document API

Speed

Seconds

Milliseconds

Reliability

UI-dependent

API-stable

File Support

Via NotebookLM

50MB PDFs, 1000 pages

Retention

Permanent

48 hours

Setup

Auth + cookies

Just API key

New Tools

upload_document — Fast Document Upload

Upload any document to Gemini for instant querying:

Upload /path/to/research-paper.pdf
  • Supported: PDF (50MB, 1000 pages), TXT, MD, HTML, CSV, JSON, DOCX, images, audio, video

  • 48-hour retention — files auto-expire, or delete manually

  • Returns a file ID for querying

query_document — Ask Questions About Documents

"What are the main findings in this research paper?"
"Summarize section 3 of the document"
"Extract all statistics mentioned in the PDF"
  • Full document understanding (text, tables, charts, diagrams)

  • Multi-document queries (compare multiple files)

  • Fast API response (no browser wait)

list_documents — See All Uploaded Files

List all my uploaded documents

Shows file names, sizes, MIME types, and expiration times.

delete_document — Clean Up Sensitive Files

Delete file xyz123

Immediately remove files (don't wait for 48h expiration).

Workflow Example

1. upload_document("/research/paper.pdf")
   → Returns: files/abc123

2. query_document("files/abc123", "What methodology was used?")
   → Returns: "The paper uses a mixed-methods approach combining..."

3. query_document("files/abc123", "List all cited authors")
   → Returns: "Smith et al. (2024), Johnson (2023)..."

4. delete_document("files/abc123")
   → File removed

Auto-Chunking for Large PDFs (v1.10.0)

No file size limits — PDFs of any size are automatically handled.

When you upload a PDF that exceeds Gemini's limits (50MB or 1000 pages), the system automatically:

  1. Detects the oversized PDF

  2. Splits it into optimal chunks (500 pages each)

  3. Uploads all chunks in parallel

  4. Returns chunk metadata for querying

upload_document("/research/massive-2000-page-report.pdf")

→ Returns:
{
  "wasChunked": true,
  "totalPages": 2000,
  "chunks": [
    { "fileName": "files/abc1", "pageStart": 1, "pageEnd": 500 },
    { "fileName": "files/abc2", "pageStart": 501, "pageEnd": 1000 },
    { "fileName": "files/abc3", "pageStart": 1001, "pageEnd": 1500 },
    { "fileName": "files/abc4", "pageStart": 1501, "pageEnd": 2000 }
  ],
  "allFileNames": ["files/abc1", "files/abc2", "files/abc3", "files/abc4"]
}

query_chunked_document — Query All Chunks at Once

For chunked documents, use this tool to query all parts and get an aggregated answer:

query_chunked_document(
  file_names: ["files/abc1", "files/abc2", "files/abc3", "files/abc4"],
  query: "What are the key recommendations in this report?"
)

→ Queries each chunk, then synthesizes a unified answer

When to Use Document API vs NotebookLM

Scenario

Use

Quick one-off document analysis

Document API — fast, no setup

Building a permanent knowledge base

NotebookLM — permanent storage

Analyzing sensitive documents

Document API — 48h auto-delete

Multi-source research over time

NotebookLM — organized notebooks

CI/CD pipeline document processing

Document API — API-native

Large PDFs (1000+ pages)

Document API — auto-chunking


Programmatic Notebook Creation (v1.7.0+)

Create NotebookLM notebooks entirely from code — no manual clicks required.

Most MCP servers can only read from NotebookLM. This one can create notebooks, add sources, and generate audio — all programmatically.

create_notebook — Build Notebooks Instantly

Create a complete notebook with multiple sources in one command:

{
  "name": "Security Research 2025",
  "sources": [
    { "type": "url", "value": "https://owasp.org/Top10" },
    { "type": "file", "value": "/path/to/security-report.pdf" },
    { "type": "text", "value": "Custom analysis notes...", "title": "My Notes" }
  ],
  "description": "OWASP security best practices",
  "topics": ["security", "owasp", "vulnerabilities"]
}

Supported source types:

  • URL — Web pages, documentation, articles

  • File — PDF, DOCX, TXT, and more

  • Text — Raw text, code snippets, notes

batch_create_notebooks — Scale Up

Create up to 10 notebooks in a single operation:

{
  "notebooks": [
    { "name": "React Docs", "sources": [{ "type": "url", "value": "https://react.dev/reference" }] },
    { "name": "Node.js API", "sources": [{ "type": "url", "value": "https://nodejs.org/api/" }] },
    { "name": "TypeScript Handbook", "sources": [{ "type": "url", "value": "https://www.typescriptlang.org/docs/" }] }
  ]
}

Perfect for:

  • Setting up project documentation libraries

  • Onboarding new team members with curated knowledge bases

  • Creating topic-specific research notebooks in bulk

manage_sources — Dynamic Source Management

Add or remove sources from existing notebooks:

{
  "notebook_id": "abc123",
  "action": "add",
  "sources": [{ "type": "url", "value": "https://new-documentation.com" }]
}

generate_audio — Audio Overview Creation

Generate NotebookLM's famous "Audio Overview" podcasts programmatically:

"Generate an audio overview for my Security Research notebook"

sync_notebook — Keep Sources Updated

Sync notebook sources from a local directory:

{
  "notebook_id": "abc123",
  "directory": "/path/to/docs",
  "patterns": ["*.md", "*.pdf"]
}

Why This Matters

Traditional Workflow

With This MCP

Manually create notebook in browser

create_notebook → done

Click "Add source" for each document

Batch add in single command

Navigate UI to generate audio

generate_audio → podcast ready

Update sources by hand

sync_notebook from local files

Your agent can now build entire knowledge bases autonomously.


🎬 Video Overviews & Data Tables (v2026.2.0)

Generate AI-powered visual summaries and extract structured data from any notebook — all programmatically.

NotebookLM's Studio panel now offers Video Overviews and Data Tables alongside Audio Overviews. This release brings full automation for both.

generate_video_overview — AI Video Summaries

Generate visual video overviews of your notebook content with 10 visual styles:

Style

Description

auto-select

Let NotebookLM choose the best style (default)

classic

Clean presentation style

whiteboard

Hand-drawn whiteboard aesthetic

kawaii

Cute illustrated style

anime

Anime-inspired visuals

watercolour

Watercolour painting style

retro-print

Retro print aesthetic

heritage

Traditional heritage style

paper-craft

Paper-craft visual style

custom

Custom visual style

Two formats:

  • Explainer — Full explanation (5-15 min)

  • Brief — Quick summary (1-3 min)

"Generate a kawaii-style brief video overview for my Security Research notebook"

get_video_status — Check Generation Progress

Video generation takes 3-10 minutes. Check progress:

"Check video status for my Security Research notebook"
→ { "status": "generating", "progress": 0 }
→ { "status": "ready" }

generate_data_table — Structured Data Extraction

Generate a structured table from your notebook sources. NotebookLM extracts key information into rows and columns:

"Generate a data table for my research notebook"

get_data_table — Extract Table as JSON

Extract the generated table as structured JSON for processing:

"Get the data table from my research notebook"
→ {
    "headers": ["Title", "Year", "Key Finding", "Methodology", ...],
    "rows": [["Paper A", "2025", "Finding X", "Survey", ...], ...],
    "totalRows": 27,
    "totalColumns": 7
  }

When to Use Which Studio Feature

Task

Best Tool

Why

Podcast-style audio summary

generate_audio_overview

Shareable audio content

Visual presentation of research

generate_video_overview

Engaging video summary

Structured data for analysis

generate_data_table + get_data_table

Machine-readable JSON

Quick status check

get_audio_status / get_video_status

Non-blocking progress


📊 Query History & Chat Extraction (v2026.1.0)

Track your research and recover conversations from NotebookLM notebooks.

get_query_history — Review Past Research (v1.10.8)

All queries made through the MCP are automatically logged for review:

"Show me my recent NotebookLM queries"
"Find queries about security from last week"
"What did I ask the fine-tuning notebook?"
  • Automatic logging — every Q&A pair saved with metadata

  • Search — find specific topics across all queries

  • Filter — by notebook, session, or date

  • Quota tracking — see query counts and timing

get_notebook_chat_history — Extract Browser Conversations (v2026.1.0)

Extract conversation history directly from a NotebookLM notebook's chat UI with context management to avoid overwhelming your AI context window:

Quick audit (preview mode):

{ "notebook_id": "my-research", "preview_only": true }

Returns message counts without content — test the water before extracting.

Export to file (avoids context overflow):

{ "notebook_id": "my-research", "output_file": "/tmp/chat-history.json" }

Dumps full history to disk instead of returning to context.

Paginate through history:

{ "notebook_id": "my-research", "limit": 20, "offset": 0 }
{ "notebook_id": "my-research", "limit": 20, "offset": 20 }

Page through large histories without loading everything at once.

Returns:

{
  "notebook_url": "https://notebooklm.google.com/notebook/xxx",
  "notebook_name": "My Research",
  "total_messages": 150,
  "returned_messages": 40,
  "user_messages": 75,
  "assistant_messages": 75,
  "offset": 0,
  "has_more": true,
  "messages": [...]
}

Use cases:

  • Recover conversations made directly in the NotebookLM browser (not tracked by MCP)

  • Audit research — see what queries were made in a notebook

  • Resume context — pick up where a previous session left off

  • Quota reconciliation — understand why quota seems off


Why This Fork?

The original NotebookLM MCP is excellent for productivity — but MCP servers handle sensitive data:

  • Browser sessions with Google authentication

  • Cookies and tokens stored on disk

  • Query history that may contain proprietary information

This fork adds 17 security hardening layers to protect that data.


Security Features

Layer

Feature

Protection

🔐

Post-Quantum Encryption

ML-KEM-768 + ChaCha20-Poly1305 hybrid (local at-rest)

🔍

Secrets Scanning

Detects 30+ credential patterns (AWS, GitHub, Slack...)

🧹

Memory Scrubbing

Zeros sensitive data after use

📝

Audit Logging

Tamper-evident logs with hash chains

⏱️

Session Timeout

8h hard limit + 30m inactivity auto-logout

🎫

MCP Authentication

Token-based auth with brute-force lockout

🛡️

Response Validation

Detects prompt injection attempts

Input Validation

URL whitelisting, sanitization

🚦

Rate Limiting

Per-session request throttling

🙈

Log Sanitization

Credentials masked in all output

🐍

MEDUSA Integration

Automated security scanning

🖥️

Cross-Platform

Native support for Linux, macOS, Windows

🔒

Secure-by-Default Auth

Auth ON without configuration, explicit opt-out required

📈

Exponential Backoff

Lockout escalation: 5min → 15min → 45min → 4hr cap

🗝️

Credential Isolation

SecureCredential TTL + env var scrubbing from process.env

Post-Quantum Primitives (Local At-Rest)

Encryption of secrets on disk uses hybrid post-quantum primitives:

ML-KEM-768 (Kyber) + ChaCha20-Poly1305
  • ML-KEM-768: NIST-standardized post-quantum key encapsulation

  • ChaCha20-Poly1305: Modern stream cipher (immune to timing attacks)

Scope, honestly: this is local at-rest encryption. Both keys live on the same machine — the PQ secret key is wrapped with a classical key derived from a machine-bound secret, not held by a remote recipient. This protects against offline theft of individual encrypted files, not against Harvest-Now-Decrypt-Later attacks (those require a remote PQ recipient holding the unwrap key).

Cross-Platform Support

Full native support for all major operating systems:

Platform

File Permissions

Data Directory

Linux

Unix chmod (0o600/0o700)

~/.local/share/notebooklm-mcp/

macOS

Unix chmod (0o600/0o700)

~/Library/Application Support/notebooklm-mcp/

Windows

ACLs via icacls (current user only)

%LOCALAPPDATA%\notebooklm-mcp\

All sensitive files (encryption keys, auth tokens, audit logs) are automatically protected with owner-only permissions on every platform.

Enterprise Compliance-Ready Architecture (v1.6.0+)

Built to the standards required for regulated industries. All code-level technical controls are implemented — full compliance also requires organizational process controls (policies, training, vendor management). Formal certification (SOC2 Type II report, GDPR registration, CSSF submission) requires a third-party audit engagement.

Regulation

Controls Implemented

GDPR

Consent management, DSAR handling, right to erasure, data portability

SOC2 Type II

Hash-chained audit logs, incident response, availability monitoring

CSSF

7-year retention, SIEM integration, policy documentation

Compliance Tools (16 MCP tools)

compliance_dashboard    - Real-time compliance status
compliance_report       - Generate audit reports (JSON/CSV/HTML)
compliance_evidence     - Collect evidence packages
grant_consent          - Record user consent
submit_dsar            - Handle data subject requests
request_erasure        - Right to be forgotten
export_user_data       - Data portability export
create_incident        - Security incident management
...and 8 more

See COMPLIANCE-SPEC.md for full documentation.


Installation

What Works Out of the Box (No API Key)

All core NotebookLM features work immediately with just browser authentication:

Feature

Tool

Description

🔍 Query notebooks

ask_question

Get source-grounded answers from your documents

📚 Manage library

add_notebook, list_notebooks, etc.

Organize your notebook collection

🎙️ Audio overviews

generate_audio_overview

Create podcast-style summaries

🎬 Video overviews

generate_video_overview

AI video summaries with 10 visual styles NEW

📊 Data tables

generate_data_table, get_data_table

Structured data extraction as JSON NEW

📝 Create notebooks

create_notebook

Programmatically create new notebooks

🔄 Session management

list_sessions, reset_session

Manage conversation context

📊 Chat history

get_notebook_chat_history

Extract past conversations

❤️ Health checks

get_health

Verify authentication status

Optional: Add GEMINI_API_KEY for bonus features like deep_research, gemini_query, and upload_document.

For repeatable authenticated validation, see the Authenticated Testing Runbook.


Claude Code

claude mcp add notebooklm -- npx @pan-sec/notebooklm-mcp@latest
claude mcp add notebooklm \
  --env NLMCP_AUTH_ENABLED=true \
  --env NLMCP_AUTH_TOKEN=$(openssl rand -base64 32) \
  --env GEMINI_API_KEY=your-gemini-api-key \
  -- npx @pan-sec/notebooklm-mcp@latest

Codex

codex mcp add notebooklm -- npx @pan-sec/notebooklm-mcp@latest

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "notebooklm": {
      "command": "npx",
      "args": ["-y", "@pan-sec/notebooklm-mcp@latest"],
      "env": {
        "NLMCP_AUTH_ENABLED": "true",
        "NLMCP_AUTH_TOKEN": "your-secure-token",
        "GEMINI_API_KEY": "your-gemini-api-key"
      }
    }
  }
}

Add to ~/.gemini/antigravity/mcp_config.json (macOS/Linux) or %USERPROFILE%\.gemini\antigravity\mcp_config.json (Windows):

{
  "mcpServers": {
    "notebooklm": {
      "command": "npx",
      "args": ["-y", "@pan-sec/notebooklm-mcp@latest"]
    }
  }
}

With optional env vars:

{
  "mcpServers": {
    "notebooklm": {
      "command": "npx",
      "args": ["-y", "@pan-sec/notebooklm-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-gemini-api-key"
      }
    }
  }
}

Note: Antigravity does NOT support ${workspaceFolder} variables. Use absolute paths.

Add to ~/.config/opencode/opencode.json (global) or opencode.json in project root:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "notebooklm": {
      "type": "local",
      "command": ["npx", "-y", "@pan-sec/notebooklm-mcp@latest"],
      "enabled": true,
      "environment": {
        "GEMINI_API_KEY": "your-gemini-api-key"
      }
    }
  }
}

Note: OpenCode uses "mcp" (not "mcpServers") and "command" is an array.

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "notebooklm": {
      "command": "npx",
      "args": ["-y", "@pan-sec/notebooklm-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-gemini-api-key"
      }
    }
  }
}

Add to your VS Code settings.json:

{
  "mcp": {
    "servers": {
      "notebooklm": {
        "command": "npx",
        "args": ["-y", "@pan-sec/notebooklm-mcp@latest"],
        "env": {
          "GEMINI_API_KEY": "your-gemini-api-key"
        }
      }
    }
  }
}

Most MCP clients use this standard format:

{
  "mcpServers": {
    "notebooklm": {
      "command": "npx",
      "args": ["-y", "@pan-sec/notebooklm-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-gemini-api-key"
      }
    }
  }
}

Common config locations:

Client

Config File

Claude Desktop

~/.config/claude/claude_desktop_config.json

Cursor

~/.cursor/mcp.json

Antigravity

~/.gemini/antigravity/mcp_config.json

OpenCode

~/.config/opencode/opencode.json

Windsurf

~/.codeium/windsurf/mcp_config.json


Quick Start

1. Install (see above)

2. Authenticate

"Log me in to NotebookLM"

Chrome opens → sign in with Google

3. Add your notebook

Go to notebooklm.google.com → Create notebook → Upload docs → Share link

4. Use it

"Research [topic] using this NotebookLM: [link]"

5. Try Deep Research (NEW!)

"Use deep research to investigate [complex topic]"

Complete Tool Reference

Research Tools

Tool

Description

Backend

ask_question

Query your NotebookLM notebooks

Browser

deep_research

Comprehensive research with citations

Gemini API

gemini_query

Fast queries with grounding tools

Gemini API

get_research_status

Check background research progress

Gemini API

Notebook Management

Tool

Description

add_notebook

Add notebook to library

list_notebooks

List all notebooks

get_notebook

Get notebook details

update_notebook

Update notebook metadata

remove_notebook

Remove from library

select_notebook

Set active notebook

search_notebooks

Search by query

Source Management (v1.7.0+)

Tool

Description

manage_sources

Add/remove/list sources

generate_audio

Create Audio Overview

sync_notebook

Sync sources from local files

Studio Features (v2026.2.0)

Tool

Description

generate_video_overview

Create AI video overview (10 visual styles, 2 formats)

get_video_status

Check video generation progress

generate_data_table

Generate structured data table from sources

get_data_table

Extract data table as JSON (headers + rows)

Session & System

Tool

Description

list_sessions

View active sessions

close_session

Close a session

reset_session

Reset session chat

get_health

Server health check (with deep_check for UI verification)

get_query_history

Review past queries with search/filter

get_notebook_chat_history

Extract browser conversations (pagination, file export)

setup_auth

Initial authentication

re_auth

Re-authenticate

cleanup_data

Deep cleanup utility

get_library_stats

Library statistics

get_quota

Check usage limits and remaining quota

Compliance (v1.6.0+)

16 compliance tools for GDPR, SOC2, and CSSF requirements.


What Gets Protected

Data

Protection

Browser cookies

Post-quantum encrypted at rest

Session tokens

Auto-expire + memory scrubbing

Query history

Audit logged with tamper detection

Google connection

TLS with response validation

Log output

Credentials auto-redacted

API responses

Scanned for leaked secrets

Gemini API key

Secure memory handling


Configuration

All security features are enabled by default. Override via environment variables:

# Authentication
NLMCP_AUTH_ENABLED=true
NLMCP_AUTH_TOKEN=your-secret-token

# Gemini API (v1.8.0+)
GEMINI_API_KEY=your-api-key
GEMINI_DEFAULT_MODEL=gemini-3-flash-preview  # Default (was gemini-2.5-flash)
GEMINI_DEEP_RESEARCH_ENABLED=true
GEMINI_TIMEOUT_MS=30000
NOTEBOOKLM_NO_GEMINI=false       # Set to true to disable all Gemini tools

# Tool Profiles
NOTEBOOKLM_PROFILE=standard      # minimal (5 tools) | standard (33 tools) | full (all 47)
NOTEBOOKLM_DISABLED_TOOLS=       # Comma-separated list of tools to hide

# Encryption
NLMCP_USE_POST_QUANTUM=true
NLMCP_ENCRYPTION_KEY=base64-32-bytes  # Optional custom key

# Session Limits
NLMCP_SESSION_MAX_LIFETIME=28800  # 8 hours
NLMCP_SESSION_INACTIVITY=1800     # 30 minutes

# Secrets Scanning
NLMCP_SECRETS_SCANNING=true
NLMCP_SECRETS_BLOCK=false         # Block on detection
NLMCP_SECRETS_REDACT=true         # Auto-redact

# Audit Logging
NLMCP_AUDIT_ENABLED=true

# Multi-Session Support (v2026.1.2+)
NOTEBOOK_PROFILE_STRATEGY=isolated  # isolated|single|auto
NOTEBOOK_CLONE_PROFILE=true         # Clone auth from base profile

Multi-Session Mode

Run multiple Claude Code sessions simultaneously with isolated browser profiles:

# Add to ~/.bashrc or ~/.zshrc
export NOTEBOOK_PROFILE_STRATEGY=isolated
export NOTEBOOK_CLONE_PROFILE=true

Variable

Values

Description

NOTEBOOK_PROFILE_STRATEGY

single, auto, isolated

isolated = separate profile per session

NOTEBOOK_CLONE_PROFILE

true, false

Clone authenticated base profile into isolated instances

How it works:

  • Each session gets its own Chrome profile (no lock conflicts)

  • Isolated profiles clone from the authenticated base profile

  • Auth coordination ensures cloning waits for any in-progress authentication

See SECURITY.md for complete configuration reference.


Security Scanning

Run MEDUSA security scanner:

npm run security-scan

Or integrate in CI/CD:

- name: Security Scan
  run: npx @pan-sec/notebooklm-mcp && npm run security-scan

Comparison

vs Other NotebookLM MCPs

Feature

Others

@pan-sec/notebooklm-mcp

Zero-hallucination Q&A

Library management

Create Notebooks Programmatically

EXCLUSIVE

Batch Create (10 notebooks)

EXCLUSIVE

Gemini Deep Research

EXCLUSIVE

Document API (no browser)

EXCLUSIVE

Auto-chunking (1000+ page PDFs)

EXCLUSIVE

Chat History Extraction

NEW

Deep Health Verification

NEW

Query History & Search

Quota Management

Source Management (add/remove)

Audio Overview Generation

Video Overview Generation (10 styles)

NEW

Data Table Extraction (JSON)

NEW

Gemini 3 + Thinking Control

NEW

Structured JSON Output

NEW

Sync from Local Directories

Security & Compliance (Unique to This Fork)

Feature

Others

@pan-sec/notebooklm-mcp

Cross-platform (Linux/macOS/Windows)

⚠️ Partial

✅ Full

Post-quantum encryption

✅ ML-KEM-768 + ChaCha20 (local at-rest)

Secrets scanning

✅ 30+ patterns

Memory scrubbing

✅ Zero-on-free

Audit logging

✅ Hash-chained

MCP authentication

✅ Token + lockout

Prompt injection detection

✅ Response validation

GDPR Compliance

✅ Controls implemented*

SOC2 Type II

✅ Controls implemented*

CSSF (Luxembourg)

✅ Controls implemented*

* Compliance-ready: code-level technical controls are implemented. Full compliance also requires organizational process controls and formal certification via third-party audit.

Bottom line: If you need more than basic queries, or care about security, there's only one choice.


Version History

Version

Highlights

v2026.3.1

Security Audit Complete — All 334 issues resolved. Tests 609→631. Code quality + test gap phase.

v2026.3.0

🔬 Security Audit Release — 334-issue independent audit. Tests 139→609 (50 files). Full MCP protocol compliance. Webhook SSRF fix. Audit log hash-chain verified on read. Per-page mutex. HandlerContext DI. Cert pinning retracted.

v2026.2.9

🔐 performSetup no longer destroys credentials before Chrome opens — last root cause of auth loop fixed

v2026.2.8

🛡️ cleanup_data excludes browser_state/ and chrome_profile/ from all deletion paths — auth survives cleanup

v2026.2.7

🚫 Block headless setup_auth; auth-now.mjs standalone script handles Chrome profile locks and silent save failures

v2026.2.6

📁 New add_folder tool — bulk upload PDFs/files to a notebook with progress, dry_run, and auto-split support

v2026.2.5

🔧 Fix: show_browser now correctly passed to performSetup — browser reliably opens for auth

v2026.2.4

🔑 Auth stability: 7-day state expiry (was 24h), touchStateFile resets clock on each validation, headless re_auth blocked

v2026.2.3

🎬 Studio Panel tools restored — Video Overview generation and Data Table tools re-enabled after UI update

v2026.2.1

🔧 Standard profile expanded: 14 → 33 tools — all key features now visible by default

v2026.2.0

🚀 Gemini 3 models (2.5 retiring March 31), Video Overviews (10 styles), Data Table extraction (JSON), thinking level control, structured JSON output, SDK 1.41

v2026.1.12

🔒 Security hardening — timing attack fix, command injection fix, 6 memory leak fixes, MCP SDK 1.26.0

v2026.1.11

🔄 Notebook sync extraction for Angular UI, NOTEBOOKLM_NO_GEMINI env var

v2026.1.10

📝 Tool descriptions clarified for multi-LLM compatibility (OpenCode fix)

v2026.1.9

📄 Documentation & UX improvements, npm audit fix

v2026.1.8

📦 Major dependency updates (zod 4.x, dotenv 17.x, post-quantum 0.5.4)

v2026.1.7

🎨 MCP Protocol UX — tool icons, titles, behavior annotations

v2026.1.4

🛡️ Defense-in-depth path validation, security hardening

v2026.1.2

🔗 Multi-session auth coordination — lock system for concurrent sessions

v2026.1.1

🔍 Deep health check — verifies NotebookLM chat UI actually loads

v2026.1.0

📊 Chat history extraction with context management, CalVer versioning

v1.10.8

Query history logging, quota tracking

v1.10.0

Auto-chunking for large PDFs (1000+ pages)

v1.9.0

Document API: upload, query, delete via Gemini Files API

v1.8.0

Gemini Deep Research, Query with Grounding, Background Tasks

v1.7.0

Programmatic notebook creation, batch operations, audio generation

v1.6.0

Enterprise compliance: GDPR, SOC2 Type II, CSSF

v1.5.0

Cross-platform support (Windows ACLs, macOS, Linux)

v1.4.0

Post-quantum encryption, secrets scanning


Reporting Vulnerabilities

Found a security issue? Do not open a public GitHub issue.

Email: support@pantheonsecurity.io


Credits

License

MIT — Same as original.


Security hardened with 🔒 by Pantheon Security

Powered by Google Gemini 3 🚀

Full Security DocumentationCompliance GuideReport Vulnerability

Available Tools

31 tools
add_notebookAdd NotebookA
Idempotent

PERMISSION REQUIRED — Only when user explicitly asks to add a notebook.

Conversation Workflow (Mandatory)

When the user says: "I have a NotebookLM with X"

  1. Ask URL: "What is the NotebookLM URL?"

  2. Ask content: "What knowledge is inside?" (1–2 sentences)

  3. Ask topics: "Which topics does it cover?" (3–5)

  4. Ask use cases: "When should we consult it?"

  5. Propose metadata and confirm:

    • Name: [suggested]

    • Description: [from user]

    • Topics: [list]

    • Use cases: [list] "Add it to your library now?"

  6. Only after explicit "Yes" → call this tool

Rules

  • Do not add without user permission

  • Do not guess metadata — ask concisely

  • Confirm summary before calling the tool

Example

User: "I have a notebook with n8n docs" You: Ask URL → content → topics → use cases; propose summary User: "Yes" You: Call add_notebook

Visit https://notebooklm.google/ → Login (free: 100 notebooks, 50 sources each, 500k words, 50 daily queries)

  1. Click "+ New" (top right) → Upload sources (docs, knowledge)

  2. Click "Share" (top right) → Select "Anyone with the link"

  3. Click "Copy link" (bottom left) → Give this link to Claude

(Upgraded: Google AI Pro/Ultra gives 5x higher limits)

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe NotebookLM notebook URL
nameYesDisplay name for the notebook (e.g., 'n8n Documentation')
descriptionYesWhat knowledge/content is in this notebook
topicsYesTopics covered in this notebook
content_typesNoTypes of content (e.g., ['documentation', 'examples', 'best practices'])
use_casesNoWhen should Claude use this notebook (e.g., ['Implementing n8n workflows'])
tagsNoOptional tags for organization

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=true, covering basic safety and idempotency. The description adds valuable context beyond this: it specifies permission requirements ('PERMISSION REQUIRED'), outlines a multi-step interactive process, and includes implementation details like how to obtain a NotebookLM share link. This enriches behavioral understanding without contradicting annotations.

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

Conciseness2/5

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

The description is overly verbose and poorly structured for a tool definition, including extensive conversational workflows, rules, examples, and external instructions (e.g., 'How to Get a NotebookLM Share Link'). While some content is useful, much of it (like step-by-step login instructions) is extraneous and not front-loaded, reducing efficiency for an AI agent parsing the core purpose.

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?

Given the tool's moderate complexity (7 parameters, no output schema) and rich annotations, the description is mostly complete. It covers usage context, behavioral traits, and workflow integration thoroughly. However, it lacks details on error handling or response format, which could be helpful since there's no output schema, slightly limiting completeness for invocation.

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 100%, providing clear descriptions for all 7 parameters. The description adds minimal parameter semantics beyond the schema, mainly implying that parameters like 'url', 'name', 'description', 'topics', and 'use_cases' are collected through the conversational workflow. However, it doesn't explain parameter relationships or usage nuances, so it meets the baseline for high schema coverage.

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 clearly states the tool's purpose: adding a notebook to a library when the user explicitly requests it. It specifies the verb 'add' and resource 'notebook', distinguishing it from siblings like 'create_notebook' or 'update_notebook' by focusing on user-permission-driven addition. However, it doesn't explicitly differentiate from 'batch_create_notebooks' or 'sync_library', which slightly limits sibling distinction.

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

Usage Guidelines5/5

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

The description provides explicit and detailed guidelines on when to use this tool, including a mandatory conversation workflow with six steps, rules (e.g., 'Do not add without user permission'), and an example. It clearly defines prerequisites (user permission, metadata collection) and alternatives (implied by the workflow's questioning phase), leaving no ambiguity about usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_sourceAdd SourceA
Idempotent

Add a source to an existing NotebookLM notebook.

Source Types

  • url: Web page URL

  • text: Text content (paste)

  • file: Local file path (PDF, DOCX, TXT)

Example

{
  "notebook_id": "my-notebook",
  "source": {
    "type": "url",
    "value": "https://docs.example.com/api"
  }
}
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID
notebook_urlNoDirect notebook URL (overrides notebook_id)
sourceYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide hints (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=true), but the description adds valuable context by listing source types (url, text, file) with examples, clarifying what can be added. It does not contradict annotations—'Add' aligns with non-readOnly and non-destructive hints—and supplements with practical behavioral details not covered by annotations.

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 purpose, followed by a structured list of source types and a clear JSON example. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to scan for key details.

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?

Given the tool's moderate complexity (3 parameters, nested objects, no output schema) and rich annotations, the description is largely complete. It covers purpose, source types, and usage example, but lacks details on error handling, response format, or prerequisites (e.g., authentication), which could enhance completeness for a mutation tool.

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 67%, with parameters like 'notebook_id' and 'source.type' well-described in the schema. The description compensates by detailing source types (url, text, file) and providing an example that illustrates parameter usage and structure, adding meaning beyond the schema's enum and object definitions, though it doesn't cover all parameters exhaustively.

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

Purpose5/5

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

The description clearly states the specific action ('Add a source') and resource ('to an existing NotebookLM notebook'), distinguishing it from sibling tools like 'add_notebook' or 'create_notebook' which create notebooks rather than adding sources to existing ones. The verb 'Add' is precise and the scope 'existing NotebookLM notebook' sets clear boundaries.

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?

The description implies usage context by specifying 'to an existing NotebookLM notebook,' which suggests it should not be used for creating new notebooks (use 'add_notebook' or 'create_notebook' instead). However, it lacks explicit when-not-to-use guidance or named alternatives for source management (e.g., vs. 'remove_source' or 'list_sources'), leaving some ambiguity in sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ask_questionAsk NotebookLMA
Read-only

NotebookLM Research (Browser-Based • NO API KEY REQUIRED)

IMPORTANT: This tool uses browser automation - NO GEMINI_API_KEY needed!

No Active Notebook

  • Visit https://notebooklm.google to create a notebook and get a share link

  • Use add_notebook to add it to your library (explains how to get the link)

  • Use list_notebooks to show available sources

  • Use select_notebook to set one active

Auth tip: If login is required, use the prompt 'notebooklm.auth-setup' and then verify with the 'get_health' tool.

Tip: Tell the user you can manage NotebookLM library and ask which notebook to use for the current task.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesThe question to ask NotebookLM
session_idNoOptional session ID for contextual conversations. If omitted, a new session is created.
notebook_idNoOptional notebook ID from your library. If omitted, uses the active notebook. Use list_notebooks to see available notebooks.
notebook_urlNoOptional notebook URL (overrides notebook_id). Use this for ad-hoc queries to notebooks not in your library.
show_browserNoShow browser window for debugging (simple version). For advanced control (typing speed, stealth, etc.), use browser_options instead.
browser_optionsNoOptional browser behavior settings. Claude can control everything: visibility, typing speed, stealth mode, timeouts. Useful for debugging or fine-tuning.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true, openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds valuable context beyond this: it discloses that the tool uses browser automation (not API), mentions auth requirements and setup steps, and provides debugging options (e.g., 'show_browser' and 'browser_options'). This enriches the behavioral understanding without contradicting annotations.

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

Conciseness2/5

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

The description is overly verbose and poorly structured, with markdown formatting, multiple sections, and tips that could be condensed. It includes redundant information (e.g., repeating 'NO API KEY REQUIRED') and workflow details that might be better suited for general documentation. Sentences like 'Tip: Tell the user you can manage NotebookLM library' are extraneous and reduce focus.

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?

Given the tool's complexity (6 parameters, nested objects, no output schema) and rich annotations, the description is mostly complete. It covers usage context, prerequisites, and behavioral aspects, though it lacks details on return values or error handling. With annotations providing safety and idempotency hints, and schema covering parameters well, the description adds sufficient contextual value.

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 100%, so the schema already documents all parameters thoroughly. The description does not add significant meaning beyond the schema, as it focuses on usage workflow and behavioral context rather than parameter details. For example, it doesn't explain how 'question' interacts with NotebookLM or clarify parameter interdependencies beyond what's in the schema descriptions.

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 clearly states the tool's purpose: 'Ask NotebookLM' in the title and 'This tool uses browser automation' in the description, indicating it submits queries to NotebookLM. However, it doesn't explicitly distinguish this from sibling tools like 'search_notebooks' or 'get_notebook_chat_history', which might have overlapping query functionality. The purpose is clear but lacks sibling differentiation.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool, including prerequisites (e.g., 'No Active Notebook' section with steps like using 'add_notebook' and 'select_notebook'), alternatives (e.g., using 'list_notebooks' to see available sources), and context-specific tips (e.g., auth setup with 'notebooklm.auth-setup' and 'get_health'). It clearly outlines the workflow and when this tool fits in.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_create_notebooksBatch CreateA

Create multiple NotebookLM notebooks in one operation.

What This Tool Does

  • Creates up to 10 notebooks in a single batch operation

  • Reports progress for each notebook

  • Optionally continues on error or stops on first failure

  • Auto-adds created notebooks to your library

Example Usage

{
  "notebooks": [
    {
      "name": "React Documentation",
      "sources": [
        { "type": "url", "value": "https://react.dev/reference" }
      ],
      "topics": ["react", "frontend"]
    },
    {
      "name": "Node.js API",
      "sources": [
        { "type": "url", "value": "https://nodejs.org/api/" }
      ],
      "topics": ["nodejs", "backend"]
    }
  ],
  "stop_on_error": false
}

Limits

  • Maximum 10 notebooks per batch

  • Each notebook follows individual source limits (50-600 based on tier)

  • Delays between notebooks to avoid rate limiting

Returns

Summary with:

  • total: Number of notebooks attempted

  • succeeded: Successfully created count

  • failed: Failed count

  • results: Array of individual results

ParametersJSON Schema
NameRequiredDescriptionDefault
notebooksYesArray of notebooks to create (max 10)
stop_on_errorNoStop batch if any notebook fails (default: false)
show_browserNoShow browser window for debugging

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate non-read-only, non-destructive, non-idempotent, and open-world hints. The description adds valuable behavioral context beyond annotations: it explains progress reporting, error handling options (stop_on_error), auto-addition to library, delays for rate limiting, and return summary structure. This enriches understanding without contradicting annotations.

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 well-structured with clear sections (What This Tool Does, Example Usage, Limits, Returns), each sentence adds value (e.g., explaining batch limits, error handling, returns), and it avoids redundancy. It is appropriately sized and front-loaded with key information, making it efficient and easy to parse.

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?

Given the tool's complexity (batch creation with multiple parameters) and lack of output schema, the description does a good job covering behavior, limits, and return values. However, it could improve by explicitly mentioning authentication needs or linking to sibling tools for context, slightly reducing completeness for a mutation tool without output schema.

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 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter semantics beyond the schema, such as implying 'notebooks' array structure through the example and mentioning 'stop_on_error' behavior. This meets the baseline for high schema coverage but doesn't significantly enhance parameter understanding.

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

Purpose5/5

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

The description explicitly states the tool 'creates multiple NotebookLM notebooks in one operation,' clearly specifying the verb (create) and resource (notebooks). It distinguishes from sibling tools like 'create_notebook' by emphasizing batch capability and up to 10 notebooks, making the purpose specific and differentiated.

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?

The description provides clear context for when to use this tool (creating multiple notebooks efficiently) and mentions limits like maximum 10 notebooks, which implies when not to use it for larger batches. However, it does not explicitly name alternatives (e.g., 'create_notebook' for single creation) or detail prerequisites, keeping it from a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cleanup_dataCleanup DataA
DestructiveIdempotent

ULTRATHINK Deep Cleanup - Scans entire system for ALL NotebookLM MCP data files across 8 categories. Always runs in deep mode, shows categorized preview before deletion.

⚠️ CRITICAL: Close ALL Chrome/Chromium instances BEFORE running this tool! Open browsers can prevent cleanup and cause issues.

Categories scanned:

  1. Legacy Installation (notebooklm-mcp-nodejs) - Old paths with -nodejs suffix

  2. Current Installation (notebooklm-mcp) - Active data, browser profiles, library

  3. NPM/NPX Cache - Cached installations from npx

  4. Claude CLI MCP Logs - MCP server logs from Claude CLI

  5. Temporary Backups - Backup directories in system temp

  6. Claude Projects Cache - Project-specific cache (optional)

  7. Editor Logs (Cursor/VSCode) - MCP logs from code editors (optional)

  8. Trash Files - Deleted notebooklm files in system trash (optional)

Works cross-platform (Linux, Windows, macOS). Safe by design: shows detailed preview before deletion, requires explicit confirmation.

LIBRARY PRESERVATION: Set preserve_library=true to keep your notebook library.json file while cleaning everything else.

RECOMMENDED WORKFLOW for fresh start:

  1. Ask user to close ALL Chrome/Chromium instances

  2. Run cleanup_data(confirm=false, preserve_library=true) to preview

  3. Run cleanup_data(confirm=true, preserve_library=true) to execute

  4. Run setup_auth or re_auth for fresh browser session

Use cases: Clean reinstall, troubleshooting auth issues, removing all traces before uninstall, cleaning old browser sessions and installation data.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesConfirmation flag. Tool shows preview first, then user confirms deletion. Set to true only after user has reviewed the preview and explicitly confirmed.
preserve_libraryNoPreserve library.json file during cleanup. Default: false. Set to true to keep your notebook library while deleting everything else (browser data, caches, logs).

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations already indicate destructiveHint=true and idempotentHint=true, the description adds significant behavioral context beyond annotations: the critical browser-closing requirement, cross-platform compatibility, safety mechanisms (preview before deletion, explicit confirmation), library preservation option, and detailed workflow guidance. No contradiction with annotations exists.

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 well-structured with clear sections (warning, categories, platform info, preservation option, workflow, use cases). While comprehensive, some sentences could be more concise (e.g., the category list is detailed but necessary). The critical information is front-loaded with the warning and purpose statement.

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

Completeness5/5

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

For a destructive tool with no output schema, the description provides complete context: clear purpose, detailed behavioral guidance, parameter usage examples, platform compatibility, safety mechanisms, prerequisites, and specific use cases. It compensates for the lack of output schema by explaining what happens during execution (preview then deletion).

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?

With 100% schema description coverage, the baseline is 3. The description adds meaningful context about parameter usage: it explains the two-step confirmation workflow, provides specific recommended values (preserve_library=true), and clarifies the library preservation behavior. However, it doesn't add syntax or format details beyond what the schema already documents.

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

Purpose5/5

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

The description clearly states the tool's purpose: scanning and cleaning NotebookLM MCP data files across 8 specific categories. It uses specific verbs ('scans entire system', 'shows categorized preview before deletion') and distinguishes itself from sibling tools by focusing on data cleanup rather than notebook/source management, authentication, or content generation.

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

Usage Guidelines5/5

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

The description provides explicit usage guidelines including when to use ('Clean reinstall, troubleshooting auth issues, removing all traces before uninstall'), prerequisites ('Close ALL Chrome/Chromium instances BEFORE running'), a recommended workflow with specific parameter values, and clear alternatives (preserve_library=true option). It also distinguishes when NOT to use it (when browsers are open).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_sessionClose SessionA
DestructiveIdempotent

Close a specific session by session ID. Ask before closing if the user might still need it.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesThe session ID to close

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations by warning about potential user impact ('Ask before closing if the user might still need it'). Annotations already indicate destructiveHint=true and idempotentHint=true, but the description provides practical usage advice that enhances understanding of the tool's consequences.

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 perfectly concise with two clear sentences that each serve distinct purposes: the first states the core functionality, the second provides crucial usage guidance. There's no wasted language or redundancy.

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?

For a destructive operation with good annotation coverage (destructiveHint, idempotentHint) but no output schema, the description provides adequate context about the action and important usage considerations. The main gap is lack of information about what 'closing' actually means behaviorally or what happens after closure.

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?

With 100% schema description coverage, the input schema fully documents the single 'session_id' parameter. The description doesn't add any additional parameter information beyond what's in the schema, so it meets the baseline expectation without providing extra value.

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

Purpose5/5

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

The description clearly states the specific action ('Close') and target resource ('a specific session by session ID'), distinguishing it from sibling tools like 'list_sessions' or 'reset_session'. It provides a precise verb+resource combination that leaves no ambiguity about what the tool does.

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?

The description provides clear contextual guidance with 'Ask before closing if the user might still need it', which helps determine when to use this tool. However, it doesn't explicitly mention alternatives like 'reset_session' or specify when-not-to-use scenarios, preventing a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_notebookCreate NotebookA

Create a new NotebookLM notebook with sources programmatically.

What This Tool Does

  • Creates a NEW notebook in your NotebookLM account

  • Uploads sources (URLs, text, files) to the notebook

  • Returns the notebook URL for immediate use

  • Optionally adds to your local library

Supported Source Types

  • url: Web page URL (documentation, articles, etc.)

  • text: Raw text content (code, notes, etc.)

  • file: Local file path (PDF, DOCX, TXT)

Example Usage

Create a notebook from API documentation:

{
  "name": "React Docs",
  "sources": [
    { "type": "url", "value": "https://react.dev/reference/react" }
  ]
}

Create a notebook with multiple sources:

{
  "name": "Security Research",
  "sources": [
    { "type": "url", "value": "https://owasp.org/Top10" },
    { "type": "file", "value": "/path/to/security-report.pdf" },
    { "type": "text", "value": "Custom notes...", "title": "My Notes" }
  ],
  "description": "Security best practices and research",
  "topics": ["security", "owasp", "best-practices"]
}

NotebookLM Limits (Free Tier)

  • 100 notebooks maximum

  • 50 sources per notebook

  • 500k words per source

  • 50 queries per day

Notes

  • Requires authentication (run setup_auth first)

  • Creates notebook with sharing set to private by default

  • Large files may take longer to process

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the new notebook
sourcesYesArray of sources to add to the notebook
descriptionNoOptional description for the notebook in your library
topicsNoOptional topics for categorization in your library
auto_add_to_libraryNoWhether to automatically add the created notebook to your library (default: true)
browser_optionsNoOptional browser settings for debugging
show_browserNoShow browser window (shorthand for browser_options.show)

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate this is a non-readOnly, non-destructive, non-idempotent, openWorld operation. The description adds valuable behavioral context beyond annotations: it discloses authentication requirements, rate limits (NotebookLM Free Tier limits), default privacy settings, processing time for large files, and that it returns a notebook URL. This significantly enhances the agent's understanding of the tool's 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?

The description is well-structured with clear sections (What This Tool Does, Supported Source Types, Example Usage, Limits, Notes) and uses bullet points efficiently. However, it includes extensive example JSON blocks that could be considered verbose, though they are informative. Overall, it's front-loaded and most sentences earn their place.

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

Completeness5/5

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

Given the tool's complexity (7 parameters, nested objects, no output schema) and rich annotations, the description is highly complete. It covers purpose, usage, behavioral traits, limits, prerequisites, and provides examples, compensating well for the lack of output schema. No significant gaps remain for agent understanding.

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?

With 100% schema description coverage, the input schema already documents all 7 parameters thoroughly. The description adds minimal parameter semantics beyond the schema, mainly through the example usage which illustrates practical combinations. It does not explain parameter interactions or constraints not in the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description explicitly states the tool creates a new NotebookLM notebook with sources programmatically, clearly distinguishing it from siblings like 'add_notebook' (likely adds to existing) or 'batch_create_notebooks' (multiple). It specifies the verb 'creates' and resource 'notebook' with source uploading functionality.

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?

The description provides clear context for when to use this tool (creating new notebooks with sources) and mentions authentication prerequisites. However, it does not explicitly contrast with alternatives like 'batch_create_notebooks' or 'update_notebook', leaving some ambiguity about sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_audioDownload AudioA
Read-onlyIdempotent

Download the generated audio overview file.

Requirements

  • Audio must be in "ready" status

  • Use get_audio_status to check before downloading

Output

Downloads to specified path or ~/notebooklm-audio-{timestamp}.mp3

Example

{
  "notebook_id": "my-research",
  "output_path": "/path/to/save/podcast.mp3"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID
notebook_urlNoOr direct notebook URL (overrides notebook_id)
output_pathNoOptional output file path

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, indicating safe, repeatable operations. The description adds valuable behavioral context beyond this: it specifies the output location (default path with timestamp) and the prerequisite status check, which aren't covered by annotations. No contradictions with annotations exist.

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 well-structured with clear sections (Description, Requirements, Output, Example), front-loaded with the core purpose. Each sentence serves a specific purpose—stating the action, outlining prerequisites, specifying output behavior, and providing an example—with no wasted words, making it highly efficient.

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?

Given the tool's moderate complexity (download operation with prerequisites), rich annotations (covering safety and idempotency), and full schema coverage, the description is largely complete. It adds useful context like status requirements and default output path. However, without an output schema, it could briefly mention the return type (e.g., success confirmation or error), though the annotations help mitigate this gap.

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 100%, so the schema fully documents the three parameters (notebook_id, notebook_url, output_path). The description adds minimal parameter semantics: it mentions 'output_path' in the 'Output' section and includes it in the example, but doesn't provide additional meaning beyond what the schema already states. This meets the baseline for high schema coverage.

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 clearly states the tool downloads a generated audio overview file, specifying the resource (audio overview file) and action (download). It distinguishes from siblings like 'generate_audio_overview' (which creates the audio) and 'get_audio_status' (which checks status), but doesn't explicitly contrast with all possible alternatives. The purpose is specific but could be slightly more differentiated.

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

Usage Guidelines5/5

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

The description provides explicit usage guidelines in the 'Requirements' section: audio must be in 'ready' status, and it instructs to use 'get_audio_status' to check before downloading. This clearly states when to use (after status check) and references a specific sibling tool as a prerequisite, offering strong guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_audio_overviewGenerate AudioA

Generate an AI-powered audio overview (podcast-style) for a notebook.

What This Tool Does

  • Triggers NotebookLM's audio overview generation

  • Audio overviews are ~5-15 minute podcast-style summaries

  • Generation takes 2-5 minutes typically

  • Returns immediately with status (check with get_audio_status)

Requirements

  • Notebook must have at least one source

  • Audio generation may not be available on all notebooks

Example

{ "notebook_id": "my-research" }
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID
notebook_urlNoOr direct notebook URL (overrides notebook_id)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it specifies that generation 'takes 2-5 minutes typically' and 'returns immediately with status (check with get_audio_status)', which are not covered by annotations (e.g., readOnlyHint=false only indicates it's not read-only). It does not contradict annotations, and while it could mention more about error handling or permissions, it provides useful operational details.

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 well-structured with sections ('What This Tool Does', 'Requirements', 'Example'), front-loaded with key information, and every sentence adds value without redundancy. It efficiently covers purpose, behavior, prerequisites, and an example in a compact format.

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?

Given the tool's complexity (asynchronous generation with status checks), no output schema, and rich annotations, the description is mostly complete: it explains the process, timing, and follow-up action. However, it could benefit from mentioning the output format or error cases, but it adequately covers core usage for an agent.

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 100%, so the schema already documents both parameters (notebook_id and notebook_url) with descriptions. The description does not add meaning beyond the schema, such as explaining parameter interactions or usage nuances, but the baseline is 3 when schema coverage is high.

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

Purpose5/5

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

The description clearly states the tool 'triggers NotebookLM's audio overview generation' for a notebook, specifying it creates '~5-15 minute podcast-style summaries'. This is a specific verb (generate) + resource (audio overview) + distinguishing detail (podcast-style for notebooks), and it differentiates from siblings like 'generate_video_overview' by focusing on audio.

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?

The description provides clear context for when to use this tool: for generating audio overviews of notebooks, with requirements like 'notebook must have at least one source' and notes that 'audio generation may not be available on all notebooks'. However, it does not explicitly state when not to use it or name alternatives (e.g., 'generate_video_overview' for video summaries), which prevents a score of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_data_tableGenerate TableA

Generate a structured Data Table from notebook sources.

What This Tool Does

  • Opens the Studio panel in NotebookLM

  • Generates a structured tabular extraction from notebook content

  • Tables organize key information from sources into rows and columns

  • Generation typically takes 1-3 minutes

  • Returns immediately with status (check with get_data_table)

Requirements

  • Notebook must have at least one source

  • Authentication required (run setup_auth first)

Example

{ "notebook_id": "my-research" }
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID
notebook_urlNoOr direct notebook URL (overrides notebook_id)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide hints (e.g., readOnlyHint=false, destructiveHint=false), but the description adds valuable behavioral context beyond this: it discloses that the tool 'Opens the Studio panel in NotebookLM', 'Generation typically takes 1-3 minutes', and 'Returns immediately with status (check with get_data_table)'. This includes UI effects, timing, and output behavior, which are not covered by annotations. No contradiction with annotations is present.

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 well-structured with sections ('What This Tool Does', 'Requirements', 'Example'), front-loading key actions. It is appropriately sized, but includes some redundancy (e.g., repeating 'Generate' in multiple points) and could be slightly more streamlined without losing clarity.

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?

Given the tool's complexity (involves UI interaction, async processing, and authentication) and lack of output schema, the description is mostly complete: it covers purpose, requirements, behavioral traits, and usage context. However, it does not detail error conditions or what 'status' entails, leaving minor gaps for an agent to infer.

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 100%, so the schema already documents both parameters (notebook_id and notebook_url) with descriptions. The description does not add meaning beyond the schema, such as explaining parameter interactions or usage nuances. With high schema coverage, the baseline score of 3 is appropriate as the description does not compensate but also does not detract.

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

Purpose5/5

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

The description clearly states the tool 'generates a structured tabular extraction from notebook content' and 'tables organize key information from sources into rows and columns', specifying both the verb (generate) and resource (data table from notebook sources). It distinguishes from siblings like 'get_data_table' (which checks status) and 'add_source' (which adds content rather than extracting it).

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?

The description provides explicit context for when to use this tool: 'Notebook must have at least one source' and 'Authentication required (run setup_auth first)'. It also implies an alternative by noting 'Returns immediately with status (check with get_data_table)', but does not explicitly state when not to use it or compare to other extraction tools like 'generate_audio_overview'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_video_overviewGenerate VideoA

Generate an AI-powered Video Overview for a notebook.

What This Tool Does

  • Opens the Studio panel in NotebookLM

  • Generates a visual video summary of notebook content

  • Supports multiple visual styles and formats

  • Generation takes 3-10 minutes typically

  • Returns immediately with status (check with get_video_status)

Visual Styles

  • auto-select — Let NotebookLM choose the best style (default)

  • custom — Custom visual style

  • classic — Classic presentation style

  • whiteboard — Hand-drawn whiteboard style

  • kawaii — Cute kawaii style

  • anime — Anime-inspired visuals

  • watercolour — Watercolour painting style

  • retro-print — Retro print aesthetic

  • heritage — Heritage/traditional style

  • paper-craft — Paper-craft visual style

Formats

  • explainer — Full explanation (5-15 min, default)

  • brief — Quick summary (1-3 min)

Requirements

  • Notebook must have at least one source

  • Authentication required (run setup_auth first)

Example

{ "notebook_id": "my-research", "style": "documentary", "format": "brief" }
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID
notebook_urlNoOr direct notebook URL (overrides notebook_id)
styleNoVisual style for the video overviewauto-select
formatNoVideo format (explainer = full, brief = short summary)explainer

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it discloses the typical generation time (3-10 minutes), the immediate return with status, and authentication requirements. While annotations cover basic hints (e.g., not read-only, open-world), the description enriches this with practical details, though it could mention potential side effects like resource usage.

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 well-structured with clear sections (What This Tool Does, Visual Styles, Formats, Requirements, Example) and uses bullet points efficiently. It's appropriately sized, though some sections like the style list are lengthy but necessary. Every sentence adds value, with no redundant information.

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?

Given the tool's complexity (4 parameters, no output schema, rich annotations), the description is mostly complete. It covers purpose, usage, parameters, and behavioral traits. However, it lacks details on error handling or output format, which could be helpful for an agent. The absence of an output schema makes this a minor gap.

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?

With 100% schema description coverage, the schema fully documents all parameters. The description adds minimal extra meaning (e.g., listing visual styles and formats with brief explanations), but doesn't provide significant additional semantics beyond what's in the schema. This meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the specific action ('Generate an AI-powered Video Overview for a notebook') and distinguishes it from siblings like generate_audio_overview and get_video_status. It specifies the exact resource (notebook) and outcome (visual video summary), making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('Generate an AI-powered Video Overview for a notebook') and provides clear alternatives (e.g., 'check with get_video_status' for status updates). It also lists prerequisites ('Notebook must have at least one source', 'Authentication required'), guiding proper usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_audio_statusAudio StatusA
Read-onlyIdempotent

Check the audio overview generation status for a notebook.

Returns

  • status: "not_started" | "generating" | "ready" | "failed" | "unknown"

  • progress: Generation progress (0-100) if generating

  • duration: Audio duration in seconds if ready

Example

{ "notebook_id": "my-research" }
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID
notebook_urlNoOr direct notebook URL (overrides notebook_id)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it details the return values (status, progress, duration) and their semantics (e.g., progress only applies if generating). Annotations already cover read-only, idempotent, and non-destructive traits, so the description appropriately focuses on output behavior, though it could mention rate limits or auth needs for a 5.

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 well-structured and front-loaded with the core purpose, followed by organized sections for returns and an example. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.

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?

Given the tool's moderate complexity (status checking with two parameters), rich annotations (e.g., readOnlyHint), and no output schema, the description provides good completeness by explaining return values and including an example. It could be a 5 if it explicitly linked to sibling tools like 'generate_audio_overview' for full context.

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 100%, so the schema fully documents the two parameters (notebook_id and notebook_url). The description does not add any parameter-specific information beyond what's in the schema, such as clarifying the relationship between the two parameters. This meets the baseline of 3 for high schema coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verb ('Check') and resource ('audio overview generation status for a notebook'), distinguishing it from siblings like 'generate_audio_overview' (which initiates generation) and 'download_audio' (which retrieves audio). It precisely defines what the tool does without being vague or tautological.

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?

The description implies usage context by specifying it checks status for audio generation, suggesting it should be used after initiating generation (e.g., with 'generate_audio_overview'). However, it does not explicitly state when not to use it or name alternatives, such as noting that 'get_video_status' is for video instead of audio, which would have made it a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_data_tableGet TableA
Read-onlyIdempotent

Extract the generated Data Table content from a notebook.

What This Tool Does

  • Navigates to the notebook's Studio panel

  • Extracts the table data (headers and rows) as structured JSON

  • Returns the full table content for analysis

Returns

  • table.headers: Column headers

  • table.rows: Array of row arrays

  • table.totalRows: Number of rows

  • table.totalColumns: Number of columns

Requirements

  • Data table must be generated first (use generate_data_table)

  • Returns error if table is not yet ready

Example

{ "notebook_id": "my-research" }
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID
notebook_urlNoOr direct notebook URL (overrides notebook_id)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds valuable context beyond this: it specifies the tool navigates to a Studio panel, extracts structured JSON, and returns specific table properties (headers, rows, totals). It also mentions error behavior when the table isn't ready. No contradictions with annotations.

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 well-structured with clear sections ('What This Tool Does', 'Returns', 'Requirements', 'Example'), each sentence adds value, and it's front-loaded with the core purpose. No redundant or verbose content.

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

Completeness5/5

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

For a read-only tool with rich annotations and no output schema, the description is complete: it explains the action, prerequisites, return structure, and error conditions. It compensates for the lack of output schema by detailing the return format, making it sufficient for agent use.

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 100%, with both parameters (notebook_id and notebook_url) fully documented in the schema. The description provides an example showing notebook_id usage but adds no new semantic details about parameters beyond what the schema already states. Baseline 3 is appropriate given high schema coverage.

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

Purpose5/5

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

The description clearly states the specific action ('Extract'), target resource ('Data Table content from a notebook'), and mechanism ('navigates to notebook's Studio panel, extracts table data as structured JSON'). It distinguishes from sibling tools like 'generate_data_table' by focusing on extraction rather than generation.

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

Usage Guidelines5/5

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

The 'Requirements' section explicitly states when to use this tool ('Data table must be generated first') and when not to ('Returns error if table is not yet ready'), naming the alternative tool ('use generate_data_table'). This provides clear guidance on prerequisites and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_healthHealth CheckA
Read-onlyIdempotent

Get server health status including authentication state, active sessions, and configuration. Use this to verify the server is ready before starting research workflows.

Deep Check Mode (v2026.1.1) Set deep_check: true to actually verify the NotebookLM chat UI loads. This catches stale sessions where cookies exist but the UI won't load. Returns chat_ui_accessible: true/false.

If authenticated=false and having persistent issues: Consider running cleanup_data(preserve_library=true) + setup_auth for fresh start with clean browser session.

ParametersJSON Schema
NameRequiredDescriptionDefault
deep_checkNoIf true, actually navigates to NotebookLM and verifies the chat UI loads. More reliable but slower (~5s). Use this before important query sessions.
notebook_idNoNotebook to check (for deep_check). Defaults to active notebook or first available.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering basic safety. The description adds valuable behavioral context beyond annotations: the deep_check mode's performance impact ('slower (~5s)'), reliability benefits ('more reliable'), and specific return field ('chat_ui_accessible: true/false'). It also mentions authentication troubleshooting workflows, though it doesn't detail rate limits or exact error behaviors.

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 appropriately sized and front-loaded with the core purpose and usage. The deep_check section and troubleshooting advice are relevant but slightly verbose. Most sentences earn their place by providing actionable guidance, though the troubleshooting paragraph could be more concise.

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?

Given the tool's moderate complexity (health check with optional deep verification), rich annotations (readOnly, idempotent, non-destructive), and 100% schema coverage, the description is largely complete. It explains the tool's role in workflows, deep check behavior, and troubleshooting steps. The main gap is lack of output schema, but the description partially compensates by mentioning specific return fields like chat_ui_accessible.

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 100%, with both parameters well-documented in the schema. The description adds some context for deep_check ('actually navigates to NotebookLM and verifies the chat UI loads') and notebook_id ('Defaults to active notebook or first available'), but doesn't provide significant additional semantic meaning beyond what's already in the schema descriptions. This meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Get server health status') and resources ('authentication state, active sessions, and configuration'), distinguishing it from sibling tools like get_audio_status or get_video_status. It explicitly identifies what health information is returned, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('to verify the server is ready before starting research workflows') and when to use alternatives (e.g., cleanup_data + setup_auth for authentication issues). It also distinguishes between normal and deep check modes, offering clear usage contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_notebookGet NotebookB
Read-onlyIdempotent

Get detailed information about a specific notebook by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe notebook ID

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover key behavioral traits: readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds minimal context beyond this, only specifying that it retrieves 'detailed information'. It doesn't disclose additional aspects like rate limits, authentication needs, or what 'detailed information' entails, but doesn't contradict annotations either.

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, efficient sentence that front-loads the core purpose ('Get detailed information about a specific notebook by ID'). There's no wasted language or redundancy, making it highly concise and well-structured for quick comprehension.

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?

Given the tool's low complexity (single parameter, no output schema) and rich annotations, the description is minimally adequate. It covers the basic purpose but lacks details on return format, error handling, or integration with sibling tools. For a read-only retrieval tool, this is acceptable but leaves room for more contextual guidance.

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?

The input schema has 100% description coverage, with the 'id' parameter fully documented. The description adds no additional meaning beyond the schema, merely restating that it's 'by ID'. This meets the baseline of 3 for high schema coverage, but doesn't enhance parameter understanding with examples or contextual details.

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 clearly states the verb 'Get' and resource 'notebook' with specificity 'detailed information about a specific notebook by ID'. It distinguishes from siblings like 'list_notebooks' by focusing on single-item retrieval rather than listing. However, it doesn't explicitly contrast with 'search_notebooks' or 'select_notebook', which slightly limits differentiation.

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 provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'get_notebook' over 'list_notebooks' for browsing, 'search_notebooks' for filtering, or 'select_notebook' for selection contexts. There's no indication of prerequisites or exclusions, leaving usage entirely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_notebook_chat_historyChat HistoryA
Read-onlyIdempotent

Extract conversation history from a NotebookLM notebook's chat interface.

This tool uses browser automation to navigate to a notebook and extract all Q&A pairs from the chat UI. This is useful for:

  • Recovering previous research conversations

  • Auditing what queries were made in a notebook

  • Understanding quota usage from direct NotebookLM browser usage

  • Resuming context from previous sessions

Context Management

Use preview_only: true to get a quick count before extracting full content. Use output_file to export to JSON instead of returning to context. Use offset with limit for pagination through large histories.

Examples

Quick audit (preview only):

{ "notebook_id": "my-research", "preview_only": true }

Export to file (avoids context overflow):

{ "notebook_id": "my-research", "output_file": "/tmp/chat-history.json" }

Paginate through history:

{ "notebook_id": "my-research", "limit": 20, "offset": 0 }
{ "notebook_id": "my-research", "limit": 20, "offset": 20 }
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID. Use list_notebooks to see available notebooks.
notebook_urlNoDirect notebook URL (overrides notebook_id). Use for notebooks not in your library.
preview_onlyNoIf true, only returns message count and summary without content. Use this to audit before extracting full history. (default: false)
limitNoMaximum number of message pairs to return (default: 50, max: 200).
offsetNoNumber of message pairs to skip from the start. Use with limit for pagination. (default: 0)
output_fileNoIf provided, exports chat history to this JSON file instead of returning to context. Useful for large histories.
show_browserNoShow browser window for debugging (default: false)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it reveals the tool uses browser automation (implying potential latency and UI interaction), mentions context overflow risks with large histories, and provides practical guidance on managing output size. While it doesn't specify rate limits or authentication requirements, it adds meaningful operational context that annotations don't cover.

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 efficiently structured with clear sections: a purpose statement, bulleted use cases, a 'Context Management' section with parameter guidance, and practical examples. Every sentence earns its place by providing operational guidance or clarifying semantics. The information is front-loaded with the core purpose, followed by progressively detailed guidance. No redundant or verbose content exists.

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?

For a tool with 7 parameters, no output schema, and rich annotations, the description provides excellent contextual coverage. It explains the tool's operational context (browser automation), use cases, parameter interactions, and practical considerations like context overflow. The main gap is the lack of information about return format (though examples imply JSON), but given the annotations cover safety and the description covers usage patterns well, this is a minor omission in an otherwise comprehensive description.

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?

With 100% schema description coverage, the baseline is 3. The description adds significant value by explaining the semantic purpose of key parameters: it clarifies that preview_only gives 'a quick count before extracting full content', output_file 'exports to JSON instead of returning to context' to avoid overflow, and offset/limit enable 'pagination through large histories'. It also provides concrete usage examples showing how these parameters work together. This goes well beyond the schema's technical descriptions.

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

Purpose5/5

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

The description explicitly states the tool's purpose: 'Extract conversation history from a NotebookLM notebook's chat interface' using 'browser automation to navigate to a notebook and extract all Q&A pairs'. It clearly distinguishes this from sibling tools like get_query_history (which might be for different query types) or get_notebook (which retrieves notebook metadata rather than chat content). The verb 'extract' is specific and the resource 'conversation history/Q&A pairs' is well-defined.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: for 'recovering previous research conversations', 'auditing what queries were made', 'understanding quota usage', and 'resuming context from previous sessions'. It also offers practical usage patterns through the 'Context Management' section and examples, showing how to use preview_only for quick audits, output_file to avoid context overflow, and offset/limit for pagination. This gives clear operational context beyond basic invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_query_historyQuery HistoryA
Read-onlyIdempotent

Retrieve past NotebookLM queries and answers for reviewing research sessions.

Use this tool to:

  • Review past research conversations

  • Find specific information from previous queries

  • Track which notebooks and sessions you've used

  • Search through question and answer content

Returns query entries with question, answer, notebook, session, and timing info.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoFilter queries by session ID
notebook_idNoFilter queries by notebook ID (from your library)
dateNoFilter queries by date (format: YYYY-MM-DD)
searchNoSearch pattern to find in questions or answers
limitNoMaximum number of entries to return (default: 50, max: 500)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide key behavioral hints (readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false), covering safety and idempotency. The description adds valuable context beyond this: it specifies the return format ('query entries with question, answer, notebook, session, and timing info') and implies search functionality ('Search through question and answer content'), which helps the agent understand output structure and capabilities. No contradictions with annotations are present.

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 purpose in the first sentence, followed by a bulleted list for usage guidelines and a final sentence on return values. Every sentence earns its place by adding clarity or utility without redundancy. It is appropriately sized for a tool with multiple parameters and clear use cases, avoiding unnecessary verbosity.

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?

Given the tool's moderate complexity (5 parameters, no output schema), the description is largely complete: it explains purpose, usage, and return format. However, it lacks details on pagination or ordering of results, which could be relevant for the 'limit' parameter. Annotations cover safety aspects, but without an output schema, the description could benefit from more specifics on result structure (e.g., pagination behavior).

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 100%, with all 5 parameters well-documented in the input schema (e.g., 'session_id' for filtering by session, 'search' for pattern matching). The description does not add significant parameter semantics beyond the schema, as it only mentions 'Search through question and answer content' which aligns with the 'search' parameter. Given the high schema coverage, a baseline score of 3 is appropriate, as the description provides minimal extra parameter insight.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Retrieve past NotebookLM queries and answers for reviewing research sessions.' It specifies the verb ('Retrieve'), resource ('past NotebookLM queries and answers'), and context ('reviewing research sessions'), distinguishing it from siblings like 'get_notebook_chat_history' or 'list_sessions' by focusing on query-level history rather than broader chat or session listings.

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

Usage Guidelines5/5

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

The description explicitly provides usage guidelines with a bulleted list: 'Use this tool to: - Review past research conversations - Find specific information from previous queries - Track which notebooks and sessions you've used - Search through question and answer content.' This clearly indicates when to use this tool versus alternatives like 'get_notebook_chat_history' (for chat-level history) or 'list_sessions' (for session metadata), offering practical scenarios without misleading exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_quotaGet QuotaA
Read-onlyIdempotent

Get current quota status including license tier, usage, and limits.

Returns:

  • tier: 'free', 'pro', 'ultra', or 'unknown'

  • notebooks: used/limit/remaining/percent

  • sources: limit per notebook

  • queries: used/limit/remaining/percent/should_stop/reset_time

  • warnings: array of warning messages

Quota Limits by Tier:

  • Free: 100 notebooks, 50 sources/notebook, 50 queries/day

  • Pro: 500 notebooks, 300 sources/notebook, 500 queries/day

  • Ultra: 500 notebooks, 600 sources/notebook, 5000 queries/day

Use sync=true to fetch actual quota from Google's NotebookLM UI (requires browser). Without sync, returns locally tracked counts which may differ if you used NotebookLM directly in browser. Query counts reset daily at midnight.

ParametersJSON Schema
NameRequiredDescriptionDefault
syncNoIf true, navigate to NotebookLM and fetch actual quota from Google's UI. More accurate but requires browser automation. Default: false (use local tracking).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it explains the sync parameter's impact on data accuracy, mentions browser automation requirements, describes query count reset timing, and provides detailed tier-based quota limits. While annotations cover read-only/idempotent aspects, the description enriches understanding of real-world behavior without contradicting annotations.

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 well-structured with clear sections (Returns, Quota Limits, Usage notes) and every sentence adds value. It could be slightly more concise by integrating the quota limits into the returns section, but overall it's efficiently organized and front-loaded with core functionality.

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

Completeness5/5

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

Given the tool's moderate complexity, rich annotations, and lack of output schema, the description provides excellent completeness. It details return values, tier-specific limits, parameter behavior implications, and timing considerations. This compensates fully for the missing output schema and aligns well with the structured annotations.

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?

With 100% schema description coverage, the baseline is 3, but the description adds meaningful context about the sync parameter's implications ('fetch actual quota from Google's UI', 'locally tracked counts may differ'). It doesn't just repeat the schema but explains the practical consequences of the parameter choice.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verb ('Get') and resource ('current quota status'), and it distinguishes itself from siblings by focusing exclusively on quota retrieval rather than notebook/source management or query execution. It explicitly lists what information is returned, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use sync=true vs. false, explaining the trade-offs between accuracy and browser automation requirements. It also implicitly distinguishes this tool from siblings by focusing on quota status rather than operations like adding notebooks or executing queries, though it doesn't explicitly name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_video_statusVideo StatusA
Read-onlyIdempotent

Check the Video Overview generation status for a notebook.

Returns

  • status: "not_started" | "generating" | "ready" | "failed" | "unknown"

  • progress: Generation progress (0-100) if generating

  • duration: Video duration in seconds if ready

Example

{ "notebook_id": "my-research" }
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID
notebook_urlNoOr direct notebook URL (overrides notebook_id)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide key behavioral hints (readOnlyHint: true, idempotentHint: true, destructiveHint: false), but the description adds valuable context by detailing the return values (status, progress, duration) and their conditions, which are not covered by annotations. This enhances transparency without contradicting annotations.

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 well-structured and front-loaded with the core purpose, followed by clear sections for returns and an example. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.

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

Completeness5/5

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

Given the tool's moderate complexity, rich annotations (e.g., readOnlyHint, idempotentHint), and no output schema, the description is complete. It explains the tool's purpose, return values, and provides an example, compensating for the lack of output schema and ensuring the agent has all necessary context.

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?

With 100% schema description coverage, the input schema fully documents the two parameters (notebook_id and notebook_url). The description does not add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 for adequate but no extra value.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Check') and resource ('Video Overview generation status for a notebook'), distinguishing it from siblings like 'generate_video_overview' (which creates videos) and 'get_audio_status' (which checks audio status). It precisely defines what status is being checked.

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?

The description implies usage context by specifying it's for checking status after video generation, but it does not explicitly state when to use this tool versus alternatives like 'get_audio_status' or provide exclusions. It offers clear guidance on the tool's role without naming specific alternatives or when-not scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notebooksList NotebooksA
Read-onlyIdempotent

List all library notebooks with metadata (name, topics, use cases, URL). Use this to present options, then ask which notebook to use for the task.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover key traits (read-only, non-destructive, idempotent, closed-world), but the description adds valuable context: it returns metadata fields (name, topics, use cases, URL) and implies a use case for selection workflows. No contradictions with annotations, and it enhances understanding beyond structured data.

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?

Two sentences that are front-loaded with core functionality and followed by usage guidance. Every word earns its place—no redundancy or fluff—making it efficient and easy to parse for an AI agent.

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

Completeness5/5

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

Given the tool's simplicity (0 parameters, no output schema) and rich annotations, the description is complete: it explains what it does, when to use it, output details, and distinguishes from siblings. No gaps remain for effective agent use.

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?

With 0 parameters and 100% schema description coverage, the baseline is high. The description adds no parameter details (as there are none), but it clarifies the output scope (metadata fields) and purpose, which compensates for the lack of an output schema, providing useful semantic context.

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

Purpose5/5

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

The description clearly states the verb ('List') and resource ('all library notebooks'), specifies the metadata included (name, topics, use cases, URL), and distinguishes it from siblings like 'search_notebooks' by emphasizing comprehensive listing without filtering. This provides specific, actionable intent.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool ('to present options') and provides a clear workflow ('then ask which notebook to use for the task'), distinguishing it from alternatives like 'search_notebooks' for filtered queries. This gives strong guidance on context and next steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sessionsList SessionsA
Read-onlyIdempotent

List all active sessions with stats (age, message count, last activity). Use to continue the most relevant session instead of starting from scratch.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, and idempotent behavior, but the description adds useful context about the purpose (continuing sessions) and the stats included (age, message count, last activity). It doesn't contradict annotations and enhances understanding beyond the structured hints.

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 two sentences, front-loaded with the core functionality and followed by usage guidance. Every word earns its place, with no redundancy or fluff, making it efficient and easy to parse.

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?

Given the tool's simplicity (0 parameters, no output schema) and rich annotations, the description is largely complete. It covers purpose, usage, and key stats. A minor gap is the lack of detail on output format or pagination, but this is mitigated by the straightforward nature of listing sessions.

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?

With 0 parameters and 100% schema description coverage, the baseline is high. The description doesn't need to explain parameters, but it implicitly clarifies that no filtering or input is required for listing all active sessions, which aligns with the empty schema. This adds slight value beyond the schema.

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

Purpose5/5

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

The description clearly states the verb ('List') and resource ('all active sessions'), specifies the scope ('with stats (age, message count, last activity)'), and distinguishes from siblings by emphasizing continuation of existing sessions rather than starting new ones. This is specific and actionable.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool ('to continue the most relevant session instead of starting from scratch'), providing clear context and distinguishing it from alternatives like creating new sessions or notebooks. This helps the agent choose appropriately among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sourcesList SourcesA
Read-onlyIdempotent

List all sources in a NotebookLM notebook.

Returns

Array of sources with:

  • id: Source identifier (for use with remove_source)

  • title: Source name/title

  • type: url, text, file, drive, or unknown

  • status: ready, processing, or failed

Example

{ "notebook_id": "my-notebook" }

Or with direct URL:

{ "notebook_url": "https://notebooklm.google.com/notebook/xxx" }
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID
notebook_urlNoDirect notebook URL (overrides notebook_id)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true, covering safety and idempotency. The description adds value by detailing the return structure (array with id, title, type, status) and linking 'id' to 'remove_source', which is useful context beyond annotations. No contradiction with annotations.

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 well-structured with clear sections (purpose, returns, example) and uses bullet points efficiently. It is appropriately sized, but the example section could be slightly condensed. Most sentences earn their place, with minimal waste.

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

Completeness5/5

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

Given the tool's low complexity (list operation), rich annotations (covering safety and behavior), and 100% schema coverage, the description is complete. It adds necessary context like return structure and parameter examples, compensating for the lack of an output schema. No significant gaps remain for agent use.

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 100%, so the input schema fully documents parameters. The description adds minimal semantics by providing example usage and noting that 'notebook_url' overrides 'notebook_id', but this is redundant with the schema's description. Baseline 3 is appropriate as the schema handles most documentation.

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

Purpose5/5

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

The description clearly states the specific action ('List all sources') and resource ('in a NotebookLM notebook'), distinguishing it from siblings like 'list_notebooks' (which lists notebooks) and 'add_source' (which adds sources). It precisely defines the scope and target.

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?

The description implies usage by specifying the context ('in a NotebookLM notebook') and provides examples for input parameters, but it does not explicitly state when to use this tool versus alternatives like 'get_notebook' or 'search_notebooks'. The guidance is clear but lacks explicit exclusions or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

re_authRe-authenticateA
Destructive

Switch to a different Google account or re-authenticate. Use this when:

  • NotebookLM rate limit is reached (50 queries/day for free accounts)

  • You want to switch to a different Google account

  • Authentication is broken and needs a fresh start

This will:

  1. Close all active browser sessions

  2. Delete all saved authentication data (cookies, Chrome profile)

  3. Open browser for fresh Google login

After completion, use 'get_health' to verify authentication.

TROUBLESHOOTING for persistent auth issues: If re_auth fails repeatedly:

  1. Ask user to close ALL Chrome/Chromium instances

  2. Run cleanup_data(confirm=false, preserve_library=true) to preview old files

  3. Run cleanup_data(confirm=true, preserve_library=true) to clean everything except library

  4. Run re_auth again for completely fresh start This removes old installation data and browser sessions that can cause conflicts.

ParametersJSON Schema
NameRequiredDescriptionDefault
show_browserNoShow browser window (simple version). Default: true for re-auth. For advanced control, use browser_options instead.
browser_optionsNoOptional browser settings. Control visibility, timeouts, and stealth behavior.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations: it details the three-step process (closing sessions, deleting auth data, opening browser), mentions post-completion verification with 'get_health', and provides troubleshooting steps. While annotations already indicate destructiveHint=true and readOnlyHint=false, the description enriches this with specific destructive actions and operational consequences, though it doesn't fully cover all behavioral aspects like error handling.

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 well-structured with clear sections (purpose, usage cases, process steps, troubleshooting) and uses bullet points for readability. However, the troubleshooting section is quite detailed and could be considered slightly verbose, though all content is relevant and earns its place by providing actionable guidance.

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

Completeness5/5

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

Given the tool's complexity (destructive authentication reset with nested parameters) and lack of output schema, the description is highly complete. It covers purpose, usage scenarios, step-by-step behavior, post-action verification, and extensive troubleshooting, compensating for the absence of structured output documentation and providing all necessary context for effective use.

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?

With 100% schema description coverage, the input schema already fully documents the two parameters and their nested properties. The description adds no additional parameter semantics, focusing instead on usage and behavior. This meets the baseline score of 3, as the schema carries the parameter documentation burden effectively.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('switch to a different Google account or re-authenticate') and distinguishes it from siblings by focusing exclusively on authentication management. It explicitly names the target resource (Google account) and the action (re-authenticate), making it distinct from tools like 'setup_auth' or 'get_health'.

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

Usage Guidelines5/5

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

The description provides explicit, bulleted guidance on when to use this tool (rate limit reached, switching accounts, broken authentication) and includes a troubleshooting section with step-by-step alternatives for persistent issues. It also references sibling tools like 'cleanup_data' and 'get_health' for related actions, offering comprehensive usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_notebookRemove NotebookA
DestructiveIdempotent

Dangerous — requires explicit user confirmation.

Confirmation Workflow

  1. User requests removal ("Remove the React notebook")

  2. Look up full name to confirm

  3. Ask: "Remove '[notebook_name]' from your library? (Does not delete the actual NotebookLM notebook)"

  4. Only on explicit "Yes" → call remove_notebook

Never remove without permission or based on assumptions.

Example: User: "Delete the old React notebook" You: "Remove 'React Best Practices' from your library?" User: "Yes" → call remove_notebook

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe notebook ID to remove

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations. While annotations indicate destructiveHint=true and idempotentHint=true, the description elaborates on the confirmation workflow, clarifies that removal is from the library (not deletion of the actual NotebookLM notebook), and specifies the dangerous nature requiring explicit user permission. This provides crucial implementation guidance not captured in structured fields.

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 well-structured with clear sections (warning, workflow steps, example) and every sentence serves a purpose. While slightly longer than minimal, the content is front-loaded with the critical warning and workflow, and the example provides valuable clarification without redundancy.

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

Completeness5/5

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

For a destructive operation with comprehensive annotations and full schema coverage, the description provides excellent contextual completeness. It covers the dangerous nature, confirmation requirements, workflow details, and clarifies what 'remove' actually means (library removal vs. notebook deletion). The lack of output schema is compensated by the clear behavioral description.

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?

With 100% schema description coverage (the single 'id' parameter is fully documented in the schema), the description adds no additional parameter information. It doesn't explain what notebook IDs look like, how to obtain them, or provide examples. The baseline score of 3 reflects adequate coverage through the schema alone.

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 clearly states the tool removes a notebook from the user's library with 'Remove Notebook' as the title and 'remove_notebook' as the name. It specifies the action (remove) and resource (notebook), but doesn't explicitly differentiate from sibling 'remove_source' which removes a different resource type. The purpose is clear but sibling differentiation is only implied.

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

Usage Guidelines5/5

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

The description provides explicit, step-by-step guidelines on when to use this tool: only after user confirmation following a specific workflow. It states 'Never remove without permission or based on assumptions' and gives a concrete example with dialogue flow. This clearly defines the required context and preconditions for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_sourceRemove SourceA
DestructiveIdempotent

Remove a source from a NotebookLM notebook.

Usage

  1. First call list_sources to get source IDs

  2. Then call remove_source with the source ID

Example

{
  "notebook_id": "my-notebook",
  "source_id": "source-0"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idNoLibrary notebook ID
notebook_urlNoDirect notebook URL (overrides notebook_id)
source_idYesSource ID from list_sources (e.g., 'source-0')

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide hints (readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true), but the description adds valuable context beyond this. It specifies that source IDs come from 'list_sources' and includes an example with parameter details, enhancing understanding of the tool's behavior and prerequisites without contradicting annotations.

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 well-structured with a clear purpose statement, a 'Usage' section for guidelines, and an 'Example' section with JSON. It is front-loaded and every sentence earns its place, avoiding redundancy and maintaining efficiency.

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?

Given the tool's complexity (destructive operation with 3 parameters), annotations cover key behavioral traits, and schema coverage is high. The description adds usage guidelines and an example, making it fairly complete. However, without an output schema, it doesn't describe return values, leaving a minor gap in full context.

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 100%, so the schema already documents all parameters (notebook_id, notebook_url, source_id). The description adds minimal semantics by mentioning 'source ID from list_sources' in the usage section and showing an example, but this doesn't significantly enhance the schema's information. Baseline 3 is appropriate as the schema does the heavy lifting.

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 clearly states the tool's purpose as 'Remove a source from a NotebookLM notebook,' specifying the verb ('Remove') and resource ('source from a NotebookLM notebook'). It distinguishes from siblings like 'add_source' or 'remove_notebook' by focusing on sources within notebooks, though it doesn't explicitly compare to them in the description text.

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

Usage Guidelines5/5

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

The description provides explicit usage guidelines in a 'Usage' section, stating 'First call list_sources to get source IDs' and 'Then call remove_source with the source ID.' This clearly indicates when to use this tool (after obtaining IDs from list_sources) and implies an alternative (list_sources) for prerequisite steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reset_sessionReset SessionA
DestructiveIdempotent

Reset a session's chat history (keep same session ID). Use for a clean slate when the task changes; ask the user before resetting.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesThe session ID to reset

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true, but the description adds valuable context: it clarifies that resetting only affects chat history (not the session ID) and emphasizes user confirmation. It doesn't contradict annotations (destructive=true aligns with 'reset'), though it could mention rate limits or auth needs for a perfect score.

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 purpose in the first clause, followed by usage guidance and a critical behavioral note. Every sentence earns its place with no wasted words, making it highly efficient and well-structured.

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?

Given the tool's complexity (destructive operation with one parameter), annotations cover key behavioral traits, and the description adds practical context like user confirmation. However, without an output schema, it could briefly mention what happens post-reset (e.g., confirmation message) for full completeness.

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 100%, with the parameter 'session_id' fully documented in the schema. The description doesn't add any parameter-specific details beyond what the schema provides, so it meets the baseline of 3 without compensating for gaps.

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

Purpose5/5

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

The description clearly states the specific action ('Reset a session's chat history') and resource ('session'), with explicit distinction from siblings by noting it 'keep[s] same session ID' (unlike close_session which likely ends the session). It avoids tautology by explaining what resetting entails beyond just the name/title.

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

Usage Guidelines5/5

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

It provides explicit guidance on when to use ('for a clean slate when the task changes') and includes a crucial behavioral directive ('ask the user before resetting'), which distinguishes it from alternatives like close_session or other session management tools. This covers both context and exclusions effectively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_notebooksSearch NotebooksB
Read-onlyIdempotent

Search library by query (name, description, topics, tags). Use to propose relevant notebooks for the task and then ask which to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover key behavioral traits (read-only, non-destructive, idempotent, closed-world), so the bar is lower. The description adds some context about the search scope (name, description, topics, tags) and a suggested workflow, but it doesn't disclose additional behavioral aspects like rate limits, auth needs, or result format. No contradiction with annotations exists.

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 concise with two sentences that efficiently convey the search functionality and usage suggestion. It's front-loaded with the core purpose, though the second sentence could be more tightly integrated. Overall, it avoids waste but isn't perfectly structured for maximum clarity.

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?

Given the tool's low complexity (1 parameter), rich annotations, and no output schema, the description is adequate but incomplete. It covers the search scope and a usage hint, but lacks details on result format, pagination, or error handling, which could aid the agent in interpreting outcomes. It meets minimum viability but has clear gaps.

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 100%, with the 'query' parameter fully documented in the schema. The description adds minimal semantic value by listing searchable fields (name, description, topics, tags), but this doesn't significantly enhance understanding beyond the schema's 'Search query' description. Baseline 3 is appropriate given high schema coverage.

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 clearly states the tool's purpose as searching a library by query across multiple fields (name, description, topics, tags), which is specific and distinguishes it from siblings like 'list_notebooks' or 'get_notebook'. However, it doesn't explicitly differentiate from 'list_notebooks' in terms of filtering scope or output format, keeping it from a perfect score.

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 description provides implied usage guidance by stating 'Use to propose relevant notebooks for the task and then ask which to use', which suggests a workflow context. However, it lacks explicit when-to-use vs. alternatives (e.g., compared to 'list_notebooks' or 'get_notebook'), and no exclusions or prerequisites are mentioned, making it only moderately helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_notebookSelect NotebookA
Idempotent

Set a notebook as the active default (used when ask_question has no notebook_id).

When To Use

  • User switches context: "Let's work on React now"

  • User asks explicitly to activate a notebook

  • Obvious task change requires another notebook

Auto-Switching

  • Safe to auto-switch if the context is clear and you announce it: "Switching to React notebook for this task..."

  • If ambiguous, ask: "Switch to [notebook] for this task?"

Example

User: "Now let's build the React frontend" You: "Switching to React notebook..." (call select_notebook)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe notebook ID to activate

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it explains that this sets a default for 'ask_question', provides auto-switching guidelines with safety considerations (e.g., 'announce it', 'ask if ambiguous'), and includes an example of user-agent interaction. Annotations cover idempotency and non-destructive aspects, but the description enriches this with practical usage patterns without contradicting them.

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 well-structured with clear sections ('When To Use', 'Auto-Switching', 'Example'), front-loading the core purpose. Each sentence earns its place by providing actionable guidance or examples, with no redundant or verbose content, making it efficient and easy to parse.

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

Completeness5/5

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

Given the tool's moderate complexity (single parameter, no output schema) and rich annotations, the description is complete: it covers purpose, usage scenarios, behavioral nuances like auto-switching, and ties into sibling tools ('ask_question'). It provides all necessary context for an agent to use the tool effectively without needing output schema details.

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 100%, with the parameter 'id' fully documented in the schema as 'The notebook ID to activate'. The description does not add any additional semantic details about the parameter beyond what the schema provides, such as format or sourcing, so it meets the baseline of 3 for high schema coverage.

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

Purpose5/5

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

The description clearly states the specific action ('Set a notebook as the active default') and the resource ('notebook'), distinguishing it from siblings like 'create_notebook', 'update_notebook', or 'list_notebooks'. It explicitly explains the functional purpose: to determine which notebook is used when 'ask_question' has no notebook_id.

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

Usage Guidelines5/5

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

The description provides explicit guidance in a dedicated 'When To Use' section with three concrete scenarios (user switches context, asks explicitly, or task change requires another notebook). It also includes 'Auto-Switching' rules with clear conditions for when to auto-switch versus ask for clarification, and references the sibling tool 'ask_question' as context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_authSetup AuthA

Google authentication for NotebookLM access - opens a browser window for manual login to your Google account. Returns immediately after opening the browser. You have up to 10 minutes to complete the login. Use 'get_health' tool afterwards to verify authentication was saved successfully. Use this for first-time authentication or when auto-login credentials are not available. For switching accounts or rate-limit workarounds, use 're_auth' tool instead.

TROUBLESHOOTING for persistent auth issues: If setup_auth fails or you encounter browser/session issues:

  1. Ask user to close ALL Chrome/Chromium instances

  2. Run cleanup_data(confirm=true, preserve_library=true) to clean old data

  3. Run setup_auth again for fresh start This helps resolve conflicts from old browser sessions and installation data.

ParametersJSON Schema
NameRequiredDescriptionDefault
show_browserNoShow browser window (simple version). Default: true for setup. For advanced control, use browser_options instead.
browser_optionsNoOptional browser settings. Control visibility, timeouts, and stealth behavior.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it discloses that the tool 'returns immediately after opening the browser' (asynchronous behavior), gives a time constraint ('up to 10 minutes to complete the login'), and provides troubleshooting steps for persistent auth issues. While annotations cover basic hints (readOnlyHint=false, etc.), the description adds practical implementation details.

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 well-structured with clear sections: main purpose, usage instructions, and troubleshooting. While slightly longer than minimal, every sentence serves a purpose. The troubleshooting section could be considered somewhat verbose but provides valuable operational guidance.

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

Completeness5/5

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

Given the tool's authentication complexity and lack of output schema, the description provides comprehensive context: it explains the authentication flow, success verification method ('get_health'), time constraints, troubleshooting procedures, and differentiation from sibling tools. This adequately compensates for the absence of output schema documentation.

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?

With 100% schema description coverage, the schema already fully documents both parameters and their properties. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3. The description focuses on tool usage rather than parameter semantics.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Google authentication for NotebookLM access - opens a browser window for manual login to your Google account.' It specifies the exact action (opens browser for manual login) and resource (Google account for NotebookLM), and distinguishes it from sibling 're_auth' tool for different use cases.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('first-time authentication or when auto-login credentials are not available') and when to use alternatives ('For switching accounts or rate-limit workarounds, use re_auth tool instead'). It also instructs to use 'get_health' afterwards to verify success.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_librarySync LibraryA
Idempotent

Sync your local library with actual NotebookLM notebooks.

What This Tool Does

  • Navigates to NotebookLM and extracts all your notebooks

  • Compares with local library entries

  • Detects stale entries (notebooks deleted or URLs changed)

  • Identifies notebooks not in your library

  • Optionally auto-removes stale entries

When To Use

  • Library seems out of sync with NotebookLM

  • After deleting notebooks in NotebookLM

  • To discover new notebooks to add

  • Before setting up automation workflows

Output

Returns a sync report with:

  • matched: Library entries that match actual notebooks

  • staleEntries: Library entries with no matching notebook (candidates for removal)

  • missingNotebooks: NotebookLM notebooks not in library (candidates for adding)

  • suggestions: Recommended actions

Example Usage

{ "auto_fix": false }

With auto-fix to remove stale entries:

{ "auto_fix": true }
ParametersJSON Schema
NameRequiredDescriptionDefault
auto_fixNoAutomatically remove stale library entries (default: false)
show_browserNoShow browser window for debugging

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it explains the sync process (e.g., 'Navigates to NotebookLM', 'Compares with local library'), details output structure, and mentions optional auto-removal of stale entries. Annotations cover safety (non-destructive, idempotent) and openness, but the description enriches this with operational specifics without contradiction.

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 well-structured with clear sections (What This Tool Does, When To Use, Output, Example Usage) and uses bullet points for readability. It's appropriately sized but could be slightly more concise by integrating the example into the parameter section, as some redundancy exists.

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?

Given the tool's moderate complexity (2 parameters, no output schema), the description is mostly complete: it explains purpose, usage, process, and output details. However, it lacks explicit mention of authentication needs or rate limits, which could be relevant given the 'navigates to NotebookLM' action, leaving a minor gap.

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 100%, so the schema fully documents both parameters. The description adds minimal param semantics through example usage showing 'auto_fix' values, but doesn't explain 'show_browser' or provide additional meaning beyond the schema's descriptions. This meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('sync', 'navigates', 'extracts', 'compares', 'detects', 'identifies') and resources ('local library', 'NotebookLM notebooks'). It distinguishes from siblings by focusing on synchronization rather than creation, listing, or removal operations, making its unique role evident.

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

Usage Guidelines5/5

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

The 'When To Use' section explicitly lists four scenarios for using this tool (e.g., 'Library seems out of sync', 'After deleting notebooks'), providing clear context. It implicitly distinguishes from alternatives by focusing on sync tasks rather than direct notebook management, though it doesn't name specific sibling tools as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_notebookUpdate NotebookA
Idempotent

Update notebook metadata based on user intent.

Pattern

  1. Identify target notebook and fields (topics, description, use_cases, tags, url)

  2. Propose the exact change back to the user

  3. After explicit confirmation, call this tool

Examples

  • User: "React notebook also covers Next.js 14" You: "Add 'Next.js 14' to topics for React?" User: "Yes" → call update_notebook

  • User: "Include error handling in n8n description" You: "Update the n8n description to mention error handling?" User: "Yes" → call update_notebook

Tip: You may update multiple fields at once if requested.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe notebook ID to update
nameNoNew display name
descriptionNoNew description
topicsNoNew topics list
content_typesNoNew content types
use_casesNoNew use cases
tagsNoNew tags
urlNoNew notebook URL

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false (mutation), destructiveHint=false (non-destructive), and idempotentHint=true (safe to retry). The description adds valuable behavioral context beyond annotations by specifying a confirmation workflow ('After explicit confirmation, call this tool'), which is a critical safety measure for mutations. It doesn't contradict annotations, and the added context about user confirmation enhances transparency for a write operation.

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 well-structured with a clear pattern, examples, and a tip, all in a concise format. Each sentence serves a purpose: the first states the goal, the pattern outlines the workflow, examples illustrate usage, and the tip adds efficiency. It's front-loaded with key information, though slightly longer than minimal, it avoids waste and is easy to follow.

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?

Given the tool's complexity (8 parameters, mutation operation) and rich annotations (covering safety and idempotency), the description is largely complete. It adds crucial usage workflow and examples, compensating for the lack of output schema. However, it could mention error handling or response format, which is a minor gap in an otherwise comprehensive description for a mutation tool.

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 100%, so the schema already documents all 8 parameters thoroughly. The description lists fields (topics, description, use_cases, tags, url) in step 1, but this merely repeats what's in the schema without adding deeper meaning or usage nuances. With high schema coverage, the baseline is 3, as the description doesn't significantly enhance parameter understanding beyond the structured data.

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 clearly states the tool's purpose as updating notebook metadata based on user intent, specifying the verb 'update' and resource 'notebook metadata'. It distinguishes from siblings like 'create_notebook' or 'remove_notebook' by focusing on updates rather than creation or deletion. However, it doesn't explicitly contrast with tools like 'get_notebook' or 'list_notebooks', which is why it's not a perfect 5.

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

Usage Guidelines5/5

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

The description provides explicit usage guidelines with a three-step pattern: identify target and fields, propose change to user, and call after confirmation. It includes examples illustrating when to use the tool and mentions updating multiple fields if requested. This gives clear context on when and how to invoke the tool, with no misleading information.

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. 31 tool updatesv2026.2.3
    • First observedadd_notebook
    • First observedadd_source
    • First observedask_question
    • First observedbatch_create_notebooks
    • First observedcleanup_data
    • First observedclose_session
    • First observedcreate_notebook
    • First observeddownload_audio
    • First observedgenerate_audio_overview
    • First observedgenerate_data_table
    • First observedgenerate_video_overview
    • First observedget_audio_status
    • First observedget_data_table
    • First observedget_health
    • First observedget_notebook
    • First observedget_notebook_chat_history
    • First observedget_query_history
    • First observedget_quota
    • First observedget_video_status
    • First observedlist_notebooks
    • First observedlist_sessions
    • First observedlist_sources
    • First observedre_auth
    • First observedremove_notebook
    • First observedremove_source
    • First observedreset_session
    • First observedsearch_notebooks
    • First observedselect_notebook
    • First observedsetup_auth
    • First observedsync_library
    • First observedupdate_notebook

TDQS

A3.8/5.0

Scored across 31 tools

Disambiguation3/5

The tool set has clear distinct purposes for core operations like notebook management (add_notebook, create_notebook, list_notebooks) and media generation (generate_audio_overview, generate_video_overview), but there is significant overlap between tools like ask_question, get_notebook_chat_history, and get_query_history, which all involve querying or retrieving chat data, potentially causing confusion. Additionally, cleanup_data and re_auth both handle authentication/session cleanup with overlapping functions.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as add_notebook, create_notebook, list_notebooks, generate_audio_overview, get_health, and sync_library. All tools use snake_case without deviation, making them predictable and easy to parse for agents.

Tool Count2/5

With 31 tools, the count is excessive for the server's purpose of managing NotebookLM notebooks and media. Many tools could be consolidated (e.g., multiple chat history tools, overlapping cleanup/auth tools), leading to a bloated interface that may overwhelm agents and increase misselection risk.

Completeness4/5

The tool surface provides comprehensive coverage for NotebookLM operations, including CRUD for notebooks and sources, media generation (audio, video, data tables), session management, authentication, and library syncing. Minor gaps exist, such as no direct tool for editing source content or managing sharing settings, but agents can work around these with existing tools.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers