Skip to main content
Glama
paolodalprato

NotebookLM MCP Structured

NotebookLM MCP Structured

Project status (2026-08-20): Development of notebooklm-mcp-structured is frozen as of this date and the repository is archived. The server is feature-complete and working: v1.1.0 ships the singleton backend (concurrent Claude Desktop surfaces share one browser) and is built on MCP SDK 1.30.0, the latest release for version 1 of the MCP protocol. The project remains available as-is; no further development is planned. Future work will continue in a successor project built on version 2 of the MCP protocol.

Google renamed NotebookLM (July 2026): the product is now Gemini Notebook and moved from notebooklm.google.com to notebook.google.com, with new notebook URLs and a redesigned UI. That change is what prompted the final revision cycle of this server: v1.1.0 targets the new host, the new answer UI, and Google's redirect chain. The project keeps its historical name.

Enhanced MCP server for NotebookLM with client-side prompt structuring for source fidelity.

Requirements: This MCP server is designed to work with Claude Desktop. It requires Claude Desktop to be installed and configured to use MCP servers.

This is a modified version of notebooklm-mcp that adds comprehensive structuring instructions to guide Claude in crafting prompts that enforce document fidelity for professional use cases (legal analysis, research, fact-checking).

Key Features

Client-Side Prompt Structuring

The MCP tool description includes comprehensive guidelines that instruct Claude on how to structure questions before sending them to NotebookLM. This ensures:

  • Source fidelity: Responses come ONLY from uploaded documents

  • Citation requirements: Every claim includes source attribution

  • Missing information handling: Explicit declaration when data is unavailable

  • Multi-language support: Works naturally with any language Claude supports

  • Question type adaptation: Different structures for comparisons, lists, analyses, explanations, and extractions

How It Works:

  1. User asks a simple question in any language

  2. Claude reads the structuring guidelines from the tool description

  3. Claude transforms the question into a well-structured prompt

  4. NotebookLM receives the structured prompt and responds accordingly

  5. Claude is instructed to present the response faithfully without adding external knowledge

Why This Matters:

NotebookLM already provides source fidelity by design (Gemini grounded on documents). The real problem this fork solves is different: preventing Claude from "improving" NotebookLM's responses with external knowledge when presenting them to the user.

Design Intent (what the fork aims to achieve):

┌─────────────────────────────────────────────────────┐
│ Without structuring (original MCP):                 │
│ • NotebookLM: "Document states X [Source: doc.pdf]"│
│ • Risk: Claude may add external knowledge          │
│   "Document states X. Also, based on my knowledge, │
│   Y is important to consider..."                   │
│   └─ External knowledge added! ─┘                  │
│                                                     │
│ With structuring (this fork):                       │
│ • NotebookLM: "Document states X [Source: doc.pdf]"│
│ • Claude reads Response Handling instruction        │
│ • Goal: Claude presents faithfully                  │
│   "Document states X [Source]"                     │
│   └─ Faithful presentation, no additions ─┘        │
└─────────────────────────────────────────────────────┘

The structuring guidelines include two critical instruction phases:

  1. Pre-send: Transform questions with explicit constraints (but preserve original wording)

  2. Post-receive: Instruct Claude to present responses faithfully WITHOUT external knowledge

This dual-phase approach is designed to maintain document fidelity throughout the workflow.

Verification & Transparency

How to verify the workflow:

Since NotebookLM saves chat history in your notebooks, you can verify the entire process:

  1. Ask a question through Claude using this MCP

  2. Open your notebook on the Gemini Notebook web interface (https://notebook.google.com — formerly notebooklm.google.com)

  3. View the saved chat to see:

    • The structured prompt that Claude sent (via the MCP)

    • The original NotebookLM response with all internal reference links

What you can verify:

  • That structuring was applied correctly to your question

  • The raw NotebookLM response before Claude presents it

  • How Claude interpreted the Response Handling instructions

  • Which language was used for structured prompts (useful for multilingual testing)

This transparency mechanism lets you empirically verify the client-side structuring approach and understand each phase of the workflow.

Example Transformation:

Simple question:

What are the main findings in the research papers?

Claude structures it as:

What are the main findings in the research papers?

Organize the response by thematic topics. Cover all aspects discussed in the documents.
For each topic:
- TOPIC: [identifying title]
- DESCRIPTION: [synthesis with context, connecting information across documents]
- EVIDENCE: "direct quote" [Source: document]

If a topic appears in multiple documents, show evidence from each.
If information is not found: [NOT FOUND IN DOCUMENTS]

Critical Formatting Rule:

  • NO decorative lines (no === or ---) as they cause NotebookLM timeouts

Language Support

Multilingual by design - The fork works with multiple languages without requiring server-side configuration.

How it works:

The structuring guidelines in the tool description instruct Claude to "adapt to user's language". Claude interprets these instructions and applies them based on the conversational context.

What we know for certain:

  • ✅ No server-side language detection in the MCP code

  • ✅ No language-specific templates to maintain

  • ✅ Tested successfully with Italian users and documents

  • ✅ The approach is language-agnostic by design

Expected behavior:

  • The system works best when using a consistent language throughout the conversation

  • Claude interprets the structuring guidelines contextually

  • Results may vary based on conversational context

Important: Using a language different from your Claude account/profile language may produce unpredictable structuring results. For consistent behavior, use your account's primary language throughout the conversation.

Tested with Italian - works reliably with Italian users asking questions in Italian.

Other languages: The architecture supports any language Claude can work with. If you use it in other languages, please share your experience to help us understand the behavior patterns!

Automatic Connection Verification

The MCP server automatically verifies the connection to NotebookLM before executing any operation that requires it. This ensures a smooth user experience:

How it works:

  1. When you make a request that requires NotebookLM (e.g., asking a question), the server checks if authentication is valid

  2. If authentication is expired or missing, a browser window opens automatically for Google login

  3. After successful login, your original request proceeds automatically

No manual intervention needed - the server handles authentication seamlessly within the conversation flow, even if Chrome is already running.

Related MCP server: Memory Bank MCP

Installation

Prerequisites

  • Claude Desktop - Required to use this MCP server

  • Node.js >= 18.0.0

  • npm

  • A Google account for NotebookLM access

Install from GitHub

# Clone the repository
git clone https://github.com/paolodalprato/notebooklm-mcp-structured.git

# Enter directory
cd notebooklm-mcp-structured

# Install dependencies
npm install

# Build
npm run build

Configure Claude Desktop

Add to your claude_desktop_config.json:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "notebooklm": {
      "command": "node",
      "args": [
        "/absolute/path/to/notebooklm-mcp-structured/dist/index.js"
      ]
    }
  }
}

Windows example:

{
  "mcpServers": {
    "notebooklm": {
      "command": "node",
      "args": [
        "D:\\path\\to\\notebooklm-mcp-structured\\dist\\index.js"
      ]
    }
  }
}

First-time Authentication

After restarting Claude Desktop:

  1. Ask Claude to check NotebookLM health: Check notebooklm health

  2. If not authenticated, ask: Setup notebooklm authentication

  3. A browser window will open for Google login

  4. Complete login and close the browser

Use Cases

  • Extract specific clauses with citations

  • Compare rulings across cases

  • Identify patterns in jurisprudence

  • Ensure responses come only from case documents

Research

  • Literature review with source tracking

  • Fact extraction from multiple documents

  • Cross-reference verification

  • Prevent mixing document content with external knowledge

Professional Fact-Checking

  • Verify claims against source documents

  • Identify what's explicitly stated vs. inferred

  • Maintain audit trail with citations

  • Ensure complete transparency of information sources

Architecture

Process Architecture: Proxy, Backend, Direct

Claude Desktop starts one MCP server process per surface (Chat, Cowork). Both used to fight over the same persistent Chrome profile, so whichever surface started second could not query NotebookLM until the first one released it. Since v1.1.0 this is fixed: dist/index.js takes one of three roles, decided automatically at startup. Claude Desktop's configuration does not change — it still launches the same command.

Role

When

What it does

Proxy

Default; what Claude Desktop launches

A thin stdio server: pipes JSON-RPC between Claude Desktop's stdio and the shared backend over localhost Streamable HTTP. Spawns the backend if none is running, and reconnects with a handshake replay if the backend dies mid-session.

Backend

Internal --backend flag, never set by users

The full server (browser, sessions, tools), bound to 127.0.0.1 on an ephemeral port with bearer-token auth. Exactly one runs per machine, shared by every proxy — one per Claude Desktop surface.

Direct

NOTEBOOK_SINGLETON=false

The legacy behavior: the full server directly on stdio, no proxy/backend split. Used for development (e.g. npm run dev under tsx), since the proxy can only spawn a compiled dist/index.js, never a .ts file.

Result: Chat and Cowork can now query NotebookLM concurrently — one Chrome profile, one browser, shared behind the scenes. This was the bug the singleton backend was built to fix.

Lifecycle: the backend exits automatically NOTEBOOK_BACKEND_GRACE_MS (default 60000 ms) after its last client disconnects; a cleanly-closed proxy also sends an HTTP DELETE, so shutdown is prompt rather than waiting out the grace period. If no client ever connects (e.g. the spawning proxy died first), the backend exits after a 120s startup guard. Client liveness is tracked with a 30s proxy heartbeat against a 90s backend-side session TTL, swept every 15s.

Runtime files, in the data directory:

  • singleton.json - the backend's port, bearer token, pid, and version, written atomically once it is listening

  • singleton.lock - spawn lock, held briefly by whichever proxy is starting the backend

  • logs/backend.log - the backend's log output (color codes stripped), truncated at the start of each run

Development note: npm run dev (tsx watch src/index.ts) cannot be spawned by the proxy, which always launches a compiled dist/index.js with --backend. Under tsx, either set NOTEBOOK_SINGLETON=false (direct mode) or hand-start a --backend process separately.

Request Workflow

This diagram shows the complete flow of a request through the system:

sequenceDiagram
    participant U as 👤 User
    participant C as 🤖 Claude
    participant TD as 📋 Tool Description
    participant MCP as ⚙️ MCP Server
    participant NLM as 📚 NotebookLM<br/>(Gemini)

    Note over U,NLM: PHASE 1: PRE-SEND (Client-Side Structuring)
    U->>C: Simple question<br/>"Analyze the rulings in the documents"
    C->>TD: Reads tool description
    TD-->>C: Returns Structuring Guidelines<br/>+ Response Handling instructions
    Note over C: Transforms simple question<br/>into structured prompt<br/>(constraints, citations, missing info)

    Note over U,NLM: PHASE 2: MCP TRANSIT
    C->>MCP: Structured prompt<br/>(with operational constraints)
    Note over MCP: Passes question<br/>WITHOUT modifications
    MCP->>NLM: Structured prompt
    Note over NLM: Gemini processes<br/>against documents

    Note over U,NLM: PHASE 3: RETURN FLOW
    NLM-->>MCP: Response from documents
    Note over MCP: Adds FOLLOW_UP_REMINDER<br/>("Need more info?")
    MCP-->>C: Response + Reminder
    Note over C: Applies "Response Handling"<br/>(instructions read in Phase 1)<br/>= presents faithfully
    C-->>U: Source-faithful response<br/>with citations

What Happens at Each Phase

Phase

Actor

Action

Content Added/Read

1a

Claude

Reads tool description

Structuring Guidelines: how to transform the question

1b

Claude

Reads tool description

Response Handling: how to present the response

1c

Claude

Transforms question

Adds operational constraints, citation requirements, missing info handling

2

MCP Server

Transits question

No modifications - passes structured prompt as-is

3a

MCP Server

Modifies response

FOLLOW_UP_REMINDER: prompts Claude to check if more questions needed

3b

Claude

Presents response

Applies Response Handling (source fidelity) read in Phase 1

Three-Level Instruction Architecture

The MCP server orchestrates two LLMs (Claude and NotebookLM/Gemini) using three distinct instruction mechanisms, each targeting a different actor:

Level

Where

Target

Purpose

Code Reference

1. Tool Description

ask-question.ts

Claude

How to structure prompts, when to do follow-ups, session management

buildAskQuestionDescription()

2. Structured Prompt

structuring-guidelines.ts

NotebookLM

Source fidelity constraints, citation format, missing info handling

buildStructuringGuidelines()

3. Response Suffix

handlers.ts

Claude

Push Claude to verify completeness before replying to the user

FOLLOW_UP_REMINDER constant

Key distinction: The structured prompt (Level 2) is sent to NotebookLM to constrain its response. But some instructions in the tool description (Level 1) and the response suffix (Level 3) never reach NotebookLM — they guide Claude's behavior before and after the NotebookLM interaction.

Dual-purpose instructions in the tool description:

  • For NotebookLM (via the structured prompt Claude generates): operational constraints, citation requirements, output format

  • For Claude only (never sent to NotebookLM): "present faithfully WITHOUT adding external knowledge", "pause, compare with the user's goal", follow-up strategy

Key Architectural Insight

The MCP server does not add constraints on source fidelity after receiving the response. The fidelity instructions are read by Claude before sending the question, in the tool description. The server only adds an operational reminder ("do you need more information?"), not a behavioral constraint.

This architecture relies on Claude's ability to follow instructions read in advance, not on post-hoc technical controls. The structuring happens client-side (in Claude), making the system simpler, more flexible, and naturally multilingual.

Why Client-Side Structuring?

Advantages:

  1. Multilingual by default: Claude naturally handles any language

  2. Simpler architecture: No server-side template management

  3. Flexible adaptation: Claude adjusts structure based on context

  4. Future-proof: Updates to structuring logic just require tool description changes

Why No Decorative Lines?

NotebookLM interprets lines of = or - characters as invalid formatting, causing the system to timeout. The structuring guidelines specify plain text headers only, avoiding any decorative typography.

Question Type Detection

Claude automatically detects question type and applies appropriate structure:

Type

Trigger Words

Output Structure

Comparison

"compare", "vs", "difference"

Elements, Similarities, Differences, Synthesis

List

"list", "identify", "which"

Thematic topics with descriptions, evidence, cross-references

Analysis

"analyze", "examine", "evaluate"

Thematic topics with cross-document connections

Explanation

"explain", "why", "how"

Core concept, examples, related concepts, limitations

Extraction

(default)

Thematic topics with descriptions, evidence, cross-references

Tools Available

Core Tools (require NotebookLM connection)

  • ask_question - Ask questions to NotebookLM with session management (triggers auto-auth if needed)

  • reset_session - Reset a session to start fresh (triggers auto-auth if needed)

Session Management

  • list_sessions - View all active conversation sessions

  • close_session - Close a specific session

Authentication & Diagnostics

  • get_health - Check authentication, connection status, and Chrome state (enhanced diagnostics)

  • setup_auth - Initial Google login

  • re_auth - Switch Google accounts or recover from rate limits

Notebook Library Management

  • add_notebook - Add a notebook to your library

  • list_notebooks - View all notebooks in your library

  • get_notebook - Get details of a specific notebook

  • select_notebook - Set active notebook

  • update_notebook - Update notebook metadata

  • remove_notebook - Remove notebook from library

  • search_notebooks - Search notebooks by keywords

  • get_library_stats - View library statistics

Maintenance

  • cleanup_data - Clean up browser data and authentication files

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

Credits

  • Original notebooklm-mcp: Gérôme Dexheimer

  • Client-side structuring approach: Paolo Dalprato

License

MIT


FAQ

Q: Does this work with Claude Code or other MCP clients? A: This MCP server is specifically designed for Claude Desktop. While other MCP-compatible clients might work, the automatic connection verification and authentication flow are optimized for the Claude Desktop experience.

Q: Does this work with languages other than Italian? A: The system is designed to work with any language Claude supports. It has been tested with Italian and works perfectly. If you use another language, the system should adapt automatically to your profile language. We're seeking feedback from users of other languages!

Q: Why not use server-side templates? A: Client-side structuring is simpler, more flexible, and naturally multilingual. Claude can adapt the structure to context better than fixed templates.

Q: Can I customize the structuring guidelines? A: The guidelines are embedded in the tool description (src/tools/definitions/ask-question.ts). You can modify them and rebuild.

Q: What happens if I don't structure my prompts? A: NotebookLM might mix document content with its general knowledge. Structured prompts enforce source fidelity.

Q: Are there any rate limits? A: Free Google accounts have 50 queries/day to NotebookLM. Google AI Pro/Ultra accounts have 5x higher limits.

Available Tools

16 tools
add_notebookA

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')
tagsNoOptional tags for organization
topicsYesTopics covered in this notebook
use_casesNoWhen should Claude use this notebook (e.g., ['Implementing n8n workflows'])
descriptionYesWhat knowledge/content is in this notebook
content_typesNoTypes of content (e.g., ['documentation', 'examples', 'best practices'])

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the mutating nature and the need for explicit user permission, which is important. However, it does not mention what happens on success or failure, whether duplicates are possible, or whether API authentication is required, leaving behavioral gaps.

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 overlong and repetitive, restating the permission requirement multiple times ('Only when user explicitly asks', 'Do not add without user permission', 'Only after explicit Yes'). The 'How to Get a NotebookLM Share Link' section, including quota details, is auxiliary and not necessary for tool invocation.

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?

It provides enough workflow detail for an agent to successfully call the tool, including how to obtain a share link and how to confirm metadata. However, there is no output schema and no description of return values, error handling, or authentication requirements, especially given the presence of setup_auth and re_auth among siblings.

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?

The schema already documents all seven parameters, so the baseline is 3. The description adds meaning by explaining how parameter values should be elicited from the user (URL first, then content, topics, use cases) and how metadata should be proposed and confirmed before calling.

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 identifies the verb 'add' and resource 'notebook', and narrows invocation to explicit user requests. This distinguishes it from sibling tools like list_notebooks, update_notebook, and remove_notebook without needing to inspect their schemas.

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 the tool ('Only when user explicitly asks to add a notebook'), when not to ('Do not add without user permission'), and provides a mandatory conversational workflow. The example further reinforces the correct timing and confirmation step.

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

ask_questionA

Conversational Research Partner (NotebookLM • Gemini 2.5 • Session RAG)

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. If authentication later fails (e.g., expired cookies), use the prompt 'notebooklm.auth-repair'.

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

PROMPT STRUCTURING GUIDELINES

Before sending any question to NotebookLM, structure it to get a well-organized, evidence-based response.

Core rules:

  • Write the prompt in the user's language

  • Keep the user's original question wording intact

  • Never use decorative lines (===, ---) as they cause NotebookLM timeouts

  • Always include: thematic output format, citation format, completeness signal, and the [NOT FOUND] placeholder

How to structure: Pick the matching question type below and adapt its pattern to the user's question.

Question Type Patterns

1. Comparison (compare, vs, difference, similarities)

[user's question]

Organize the response by points of comparison. Cover all aspects discussed in the documents.
For each point:
1. How each element addresses it, with direct quotes ("text" [Source: document])
2. Similarities and differences, with textual evidence

Cross-references: highlight where documents agree or contradict each other.
If information is not found: [NOT FOUND IN DOCUMENTS]

2. List / Identification (list, identify, which, what are the)

[user's question]

Organize the response by thematic topics. Cover all aspects discussed in the documents.
For each topic:
- TOPIC: [identifying title]
- DESCRIPTION: [synthesis with context, connecting information across documents]
- EVIDENCE: "direct quote" [Source: document]

If the same item appears in multiple documents, show all occurrences and any discrepancies.
If information is not found: [NOT FOUND IN DOCUMENTS]

3. Analysis (analyze, examine, evaluate, assess)

[user's question]

Organize the response by thematic topics. Cover all aspects discussed in the documents.
For each topic:
- TOPIC: [identifying title]
- DESCRIPTION: [synthesis with context, connecting information across documents]
- EVIDENCE: "direct quote" [Source: document]

Cross-document connections: where different documents address the same topic, show evidence from each.
If information is not found: [NOT FOUND IN DOCUMENTS]

4. Explanation (explain, why, how, what does it mean)

[user's question]

Answer based on what the documents explain. Cover all aspects discussed in the documents.
1. Core concept or answer, with supporting quotes ("text" [Source])
2. Examples or cases mentioned in the documents
3. Related concepts that the documents connect to this topic
4. Limitations or caveats noted in the documents

If information is not found: [NOT FOUND IN DOCUMENTS]

5. Extraction (default for all other questions)

[user's question]

Organize the response by thematic topics. Cover all aspects discussed in the documents.
For each topic:
- TOPIC: [identifying title]
- DESCRIPTION: [synthesis with context, connecting information across documents]
- EVIDENCE: "direct quote" [Source: document]

If a topic appears in multiple documents, show evidence from each.
If information is not found: [NOT FOUND IN DOCUMENTS]

Language Adaptation

Translate the entire prompt to the user's language. Examples:

  • "Organize the response by thematic topics" → "Organizza la risposta per argomenti tematici"

  • "Cover all aspects" → "Cerca di coprire tutti gli aspetti trattati nei documenti"

  • "TOPIC/DESCRIPTION/EVIDENCE" → "ARGOMENTO/DESCRIZIONE/EVIDENZE"

  • "Source:" → "Fonte:"

  • "[NOT FOUND IN DOCUMENTS]" → "[NON PRESENTE NEI DOCUMENTI]"

Response Handling (for Claude, not NotebookLM)

After receiving NotebookLM's answer, present it faithfully to the user WITHOUT adding external knowledge or "improvements".

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.8/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden, and it does disclose important behavioral traits: decorative lines can cause NotebookLM timeouts, answers must be presented faithfully without adding external knowledge, and authentication can expire and require repair. It does not explicitly state that the tool automates a browser or creates sessions, but browser_options and session_id in the schema cover some of that context.

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

Conciseness3/5

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

The description is well-organized with clear headings, code blocks, and front-loaded setup guidance, which aids scanning. However, it is very long due to five near-identical prompt templates and language-adaptation examples, so it is not concise and much of the content is redundant for tool selection and basic invocation.

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 no output schema, the description is remarkably complete: it covers the no-notebook workflow, auth setup and repair, prompt structuring, browser timeout tuning, and response handling. It never directly states the return format, but it tells the agent how to present the answer, which is the practical information needed.

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 baseline is 3. The description adds limited meaning beyond the schema, mostly tying notebook_id to list_notebooks/select_notebook and implicitly connecting question to the prompt-structuring guidelines. It does not meaningfully clarify session_id, notebook_url, or browser_options beyond what the schema already says.

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 identifies the tool as a 'Conversational Research Partner' for NotebookLM and repeatedly mentions sending questions to NotebookLM and presenting its answer. It lacks a crisp one-line 'Asks NotebookLM a question' statement and the title is null, but the workflow and response-handling sections make the purpose unambiguous and distinguish it from notebook-management siblings.

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 gives a clear usage workflow: create a notebook, add it with add_notebook, list notebooks, select an active one, then ask questions. It also includes auth-repair guidance and a tip to tell the user about notebook management. It does not explicitly state when NOT to use this tool or name alternatives, but the context is sufficient for correct use.

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

cleanup_dataA

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.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden of behavior disclosure. It clearly indicates destructive deletion, preview-before-deletion, explicit confirmation, deep mode, Chrome/Chromium prerequisite, cross-platform behavior, and the library preservation option. This is far beyond minimal disclosure and fully prepares an agent for the tool's safety profile.

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?

Although the description is long, it is well-structured with a critical warning front-loaded, a scannable categorized list, and clear sections for workflow and use cases. Every element serves the operational needs of a destructive, cross-platform tool; there is no filler or 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?

Given the tool's complexity, destructive nature, absence of annotations, and absence of an output schema, the description is remarkably complete. It covers prerequisites, the eight categories scanned, the preservation escape hatch, a step-by-step workflow, and use cases. No critical detail needed to invoke the tool safely is missing.

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 coverage is 100% for both parameters, so the baseline is 3. The description adds a recommended workflow that maps confirm=false to preview and confirm=true to execution, and clarifies preserve_library as keeping library.json 'while cleaning everything else.' This usage-level guidance goes beyond the schema's parameter 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 states a specific verb (cleanup) and resource ('all NotebookLM MCP data files across 8 categories'), with explicit scope. It is clearly differentiated from sibling tools, which are about notebooks, sessions, auth, or health, none of which perform system-wide data deletion. The 'Always runs in deep mode' detail adds further precision.

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

Usage Guidelines4/5

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

It provides explicit use cases (clean reinstall, troubleshooting auth issues, removing all traces before uninstall, cleaning old browser sessions) and a recommended workflow that sequences preview and execute calls, followed by setup_auth/re_auth. It does not explicitly state when not to use the tool, but since no sibling tool is an alternative for cleanup, the guidance is sufficient.

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

close_sessionA

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/5.0
Behavior3/5

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

With no annotations available, the description carries the safety burden. The 'ask before closing' guardrail signals that closing can be disruptive and requires user consent, but it never states what closing actually does, whether it can be undone, or side effects on the current workflow.

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 short sentences with no filler. The core action is front-loaded, and the safety instruction earns its place.

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 single-parameter tool with no output schema and a simple action, this definition is nearly sufficient: it gives the target, the ID source, and the key caution. It is only missing a clear statement of consequences and a pointer to the related reset_session alternative.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already documents session_id as 'The session ID to close.' The description's 'by session ID' adds no new parameter semantics, so the baseline of 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 uses a specific verb and target ('Close a specific session by session ID'), making the tool's purpose unambiguous. The action is distinct from siblings like list_sessions and reset_session, even though no sibling is named.

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

Usage Guidelines4/5

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

It gives an explicit behavioral rule: ask before closing if the user might still need the session, which tells the agent when invocation is appropriate. It does not name alternatives or list when not to use it, so it falls just short of full guidance.

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

get_healthA

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

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

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Because annotations are absent, the description carries the burden. 'Get' implies read-only behavior and the returned categories are named, but there is no explicit statement that the call has no side effects, no authentication requirements, or no impact on sessions. The recovery note adds some useful behavioral context, but not full transparency.

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 three compact, purposeful sentences: purpose, usage context, and an actionable troubleshooting fallback. It front-loads the core definition and every sentence earns its place.

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?

The description tells an agent what to call, why, and what to inspect (authentication state, active sessions, configuration), plus how to recover from a failed health check. Since there is no output schema, a slightly more explicit return-shape note would make it fully complete, but the existing guidance is sufficient for a health check 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?

The tool takes zero parameters and schema coverage is complete, so there are no undocumented parameters to clarify. The rubric baseline for zero-parameter tools is 4, and the description does not need to add parameter-level detail.

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 states a clear action ('Get server health status') and specifies the resource by enumerating what is included: authentication state, active sessions, and configuration. This makes the tool's function immediately identifiable and distinct from the other notebook/session tools.

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

Usage Guidelines4/5

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

It explicitly says to use this tool to verify the server is ready before starting research workflows, which is a concrete usage context. It also gives a conditional recovery path (cleanup_data + setup_auth when authenticated=false with persistent issues), but it does not explicitly contrast the tool with siblings such as list_sessions or setup_auth.

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

get_library_statsA

Get statistics about your notebook library (total notebooks, usage, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It clearly indicates a read-only statistics operation, which is sufficient for this simple zero-parameter tool, though it does not detail what 'usage' includes or specify return structure.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundancy. It communicates the core purpose efficiently and includes concrete examples without unnecessary detail.

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 zero-parameter, read-only statistics tool, the description is largely complete. The absence of an output schema is partially mitigated by the examples given, though exact fields and format remain unspecified.

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?

The tool has zero parameters, so parameter semantics are not applicable; the baseline of 4 reflects that no parameter guidance is needed. The description's mention of the statistics content compensates for the lack of an output schema.

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

Purpose4/5

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

The description states a clear verb ('get') and a specific resource ('statistics about your notebook library'), with examples like total notebooks and usage. It is distinguishable from sibling tools like list_notebooks or get_notebook, though it does not explicitly name them.

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

Usage Guidelines2/5

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

The description implies this tool is for high-level library statistics, but gives no explicit guidance on when to use it versus listing notebooks or querying individual notebook details. There are no stated exclusions or alternative tool references.

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

get_notebookA

Get detailed information about a specific notebook by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe notebook ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. 'Get detailed information' clearly signals a read-only operation, but it does not specify what 'detailed' includes, how errors are handled (e.g., invalid ID), or any response format expectations. Adequate but shallow.

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?

A single sentence that is direct and front-loaded, with no filler. Every word contributes meaning.

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 simple one-parameter read tool, the description is sufficient to invoke correctly: provide an ID and receive detailed notebook info. The lack of an output schema makes 'detailed information' somewhat vague, but this is a minor gap given the tool's simplicity.

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 id parameter is already well documented in the schema. The description's 'by ID' merely restates the parameter's purpose without adding format, source, or usage details. Baseline 3 applies.

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 uses a specific verb ('Get') + resource ('notebook') + scope ('specific notebook by ID'), making it easy to distinguish from sibling tools like list_notebooks or search_notebooks. The intent is unambiguous.

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

Usage Guidelines3/5

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

The phrase 'by ID' implies usage when a notebook ID is available, but there is no explicit guidance on when to prefer this over list_notebooks, search_notebooks, or select_notebook. Alternatives are not named or excluded, so the usage context remains implied rather than stated.

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

list_notebooksA

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

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of conveying behavior. It reveals that the tool returns list metadata (name, topics, use cases, URL), but it does not mention pagination, ordering, authentication requirements, or potential side effects. For a simple list operation this is adequate but not richly transparent.

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 with no filler: the first states exactly what is listed and what metadata is included; the second gives a clear next-step workflow. Well front-loaded and economical.

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 simple parameterless list tool, the description covers what it returns and how to use the result. It lacks details like whether the result is sorted or limited, but the core invocation context is complete.

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?

The tool has zero parameters, so there is nothing for the description to explain beyond confirming it needs no input. The baseline for a parameterless tool is 4, and the description does not mislead.

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

Purpose4/5

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

The description states a specific verb ('List') and resource ('library notebooks'), and includes the metadata fields returned. It is clearly a listing operation, distinct from 'get_notebook' or 'search_notebooks', though it does not explicitly name those siblings or explain the difference.

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 gives clear workflow guidance: use this tool to present options, then ask which notebook to use. It does not mention alternative tools or when to prefer search_notebooks or get_notebook, but the provided context is actionable.

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

list_sessionsA

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.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the operation ('List all active sessions') and the returned stats, so an agent can infer a read-only listing, but it does not specify sorting, pagination, or what makes a session 'active.'

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 with no filler: the first states the action and output shape, the second states the intended use case. Everything earns its 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?

For a no-parameter listing tool, the description gives the resource, the returned stats, and a usage directive. There is no output schema, but the stat list is spelled out, so the agent has what it needs to invoke and interpret the 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?

The tool has zero parameters and 100% schema description coverage, so the schema already fully handles parameter meaning. Per the baseline for zero-parameter tools, a 4 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 states a specific verb-resource pair ('List all active sessions') and enumerates the returned data ('age, message count, last activity'), distinguishing it from notebook-focused siblings like list_notebooks.

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 second sentence explicitly frames when to use the tool—'continue the most relevant session instead of starting from scratch'—which gives clear context. It does not name alternatives or list explicit exclusions, so it stops short of a 5.

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

re_authA

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.5/5.0
Behavior5/5

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

Even with no annotations, the description fully discloses the destructive side effects: closing all browser sessions, deleting cookies and the Chrome profile, and opening a fresh login. It also sets expectations about repeated failures and cleanup steps. This is far more transparent than a minimal 're-authenticate' statement.

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 purpose and usage triggers, then moves through effects, verification, and troubleshooting in a logical order. Although long, every section earns its place given the destructive and potentially repeating nature of re-authentication, and there is no filler.

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 tool with no output schema and no annotations, the description is complete enough to call correctly: it explains what will happen, when to use it, how to verify success, and how to recover if re_auth fails repeatedly. The parameter schema fills in the remaining 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%, so the input schema already documents both parameters and their defaults. The description adds some framing around 'simple version' vs 'browser_options' but does not meaningfully expand on parameter semantics beyond what the schema provides.

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 opens with a specific action ('Switch to a different Google account or re-authenticate'), names the resource, and lists concrete triggers: rate limit reached, account switch, and broken authentication. This clearly communicates what the tool does and differentiates it from initial auth/setup by emphasizing re-authentication.

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 'Use this when' bullets covering rate limits, account switching, and broken authentication, plus follow-up verification with get_health and recovery steps involving cleanup_data. However, it does not explicitly contrast with setup_auth or state when not to use this tool, so it stops short of full when/when-not guidance.

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

remove_notebookA

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
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does so well: it flags the tool as 'Dangerous,' requires explicit confirmation, and clarifies that the call removes from the library but 'Does not delete the actual NotebookLM notebook.' It does not mention error behavior or reversibility, but the destructive semantics and limits are disclosed.

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 warning is front-loaded and the numbered workflow is well organized. The example is slightly redundant with the steps, but it does not bloat the description and reinforces the confirmation behavior.

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 single-parameter destructive tool with no output schema, the description is complete: it covers the prerequisite lookup, exact confirmation wording, permission rule, and scope boundary. An agent has everything needed to decide and perform the call safely.

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 only parameter id is already fully described in the schema ('The notebook ID to remove'), so the schema carries the semantic weight. The description's workflow implies the id should be resolved by looking up the full notebook name, but it never explicitly connects id to list_notebooks or explains required format.

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 makes the operation clear through the quoted confirmation prompt 'Remove '[notebook_name]' from your library?' and explicitly scopes it to the library, adding 'Does not delete the actual NotebookLM notebook.' This distinguishes removal from the sibling update and add operations even without a direct declarative sentence.

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?

Provides a numbered confirmation workflow: wait for user request, look up full name, ask explicit confirmation, and only call on 'Yes'. Explicitly states 'Never remove without permission or based on assumptions,' giving strong when-to-use guidance and a safety exclusion.

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

reset_sessionA

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/5.0
Behavior3/5

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

With no annotations provided, the description reveals the key behavior: chat history is discarded while the session ID is preserved, and it flags that user consent is needed. However, it does not explicitly state that the reset is irreversible or what happens to the session immediately after reset.

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 short sentences carry the purpose, the behavioral caveat, and user guidance with no filler. Important information is front-loaded before the usage note.

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 one-parameter tool with no output schema, the description covers what is reset, that the session ID persists, when to use it, and the consent requirement. It could mention irreversibility or return behavior, but the tool is simple enough that nothing critical is missing.

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 fully documents session_id. The description adds no parameter-specific detail, which is acceptable given the single parameter is self-explanatory.

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 starts with a specific verb and resource: 'Reset a session's chat history.' The parenthetical '(keep same session ID)' further distinguishes it from close_session and makes the tool's scope unambiguous.

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

Usage Guidelines4/5

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

It explicitly states when to use the tool ('Use for a clean slate when the task changes') and provides an important guardrail ('ask the user before resetting'). It does not explicitly name alternative tools, but the purpose and condition are clear enough for an agent.

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

search_notebooksA

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

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It adds useful context by explaining that results should be proposed and the user asked which to use, implying a non-destructive, candidate-returning search. However, it does not explicitly state that the operation is read-only, how results are returned, or any failure behaviors.

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 short sentences, no filler, with the core function front-loaded. Every sentence earns its place: the first defines what it searches, the second defines how to use the results.

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 single-parameter search tool with no output schema, the description covers the search fields and the intended follow-up workflow, which is enough to invoke correctly. It does not spell out the exact return structure, but that is a minor gap given the tool's simplicity.

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?

The schema only describes 'query' as 'Search query', while the tool description adds that the query applies to name, description, topics, and tags. This enriches the otherwise minimal schema description and tells the agent what the query parameter will match.

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 states a specific action ('Search library by query') and defines the resource scope plus the fields being searched (name, description, topics, tags). This clearly distinguishes it from sibling tools like list_notebooks, which would list without query matching.

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 gives clear usage context: use it to propose relevant notebooks for the task and then ask which to use. It does not explicitly name alternatives or list when-not-to-use cases, so it stops short of a 5.

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

select_notebookA

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.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the side effect of changing the active default for future ask_question calls and gives auto-switching guidance. It does not cover persistence, errors, or return behavior, but it is honest about the state mutation.

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 a one-sentence purpose, then organized into clear sections. The bullets and example are concise and directly useful for an agent deciding when and how to invoke the tool.

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 one-parameter tool with no output schema, the description is remarkably complete: it defines the effect, gives usage triggers, and provides an example. It could mention how to obtain the notebook ID (e.g., via list_notebooks) and what happens on an invalid ID, but those are minor 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 coverage for the single 'id' parameter is 100%, so the schema already explains it as 'The notebook ID to activate'. The description adds context about the default mechanism but not much additional parameter-level meaning.

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 opens with a specific verb and resource: 'Set a notebook as the active default'. It also clarifies its role relative to ask_question, which distinguishes it from the notebook CRUD siblings.

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 'When To Use' section gives explicit trigger conditions such as context switches and explicit user requests. It stops short of naming alternatives or stating when not to use the tool, but the provided contexts are clear and actionable.

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

setup_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.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden and does so well: it explains the browser window opens, the tool returns immediately, the user has 10 minutes to log in, and get_health should verify success. It could go further by specifying what happens if the login times out or whether existing credentials are overwritten, but it is still notably transparent.

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-organized and front-loaded with the core behavior, then alternatives, then troubleshooting. It is longer than minimal but every section earns its place, especially the troubleshooting block that tells an agent exactly how to recover from auth failures.

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 no annotations and no output schema, the description covers the main operational context: what it does, how long login takes, how to verify success, when to use an alternative, and how to recover from persistent failures. Minor gaps remain around exact return behavior and edge cases like expired browser sessions, but overall it is complete enough to call correctly.

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 already provides 100% parameter coverage, describing show_browser and browser_options with defaults and guidance. The description itself does not add significant parameter-level meaning, but that is acceptable because the schema is already rich and the baseline for full schema coverage is 3.

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 via a manual browser login. It also explicitly contrasts setup_auth with re_auth, so an agent can distinguish them without opening schemas.

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 gives concrete usage guidance: use setup_auth for first-time authentication or when auto-login credentials are unavailable, use re_auth for account switching/rate-limit workarounds, and verify with get_health afterward. It even includes a troubleshooting sequence involving cleanup_data, which fully covers when and how to use this tool.

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

update_notebookA

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
urlNoNew notebook URL
nameNoNew display name
tagsNoNew tags
topicsNoNew topics list
use_casesNoNew use cases
descriptionNoNew description
content_typesNoNew content types

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that metadata is updated but does not explain overwrite vs. merge semantics, permissions, reversibility, or return behavior. The example says 'Add Next.js 14 to topics' while the schema says 'New topics list', leaving ambiguity about whether array fields replace or augment existing values.

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 a one-sentence purpose, followed by compact Pattern, Examples, and Tip sections. Each section earns its place, and the examples make the intended confirmation flow concrete without adding filler.

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

Completeness3/5

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

The tool is reasonably complete for an update operation because the pattern and examples specify the call flow and the schema documents all parameters. However, with no annotations and no output schema, important gaps remain: overwrite semantics are ambiguous and the description's field enumeration is incomplete, which could lead to incorrect 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%, so the baseline is 3. The description adds useful context by listing common fields and noting that multiple fields may be updated at once, but its field list omits name and content_types, and it does not clarify whether array parameters replace or merge with existing values.

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 operation: 'Update notebook metadata based on user intent' and identifies the resource and relevant fields. This distinguishes it from siblings like add_notebook, remove_notebook, and get_notebook because it is the only tool that mutates an existing notebook's metadata.

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 Pattern section provides explicit conditions: identify the target notebook and fields, propose the exact change back to the user, and only call the tool after explicit confirmation. The examples reinforce this confirmation workflow. It does not explicitly name alternatives or when not to use it, so it stops short of a 5.

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. 16 tool updatesv1.1.0
    • First observedadd_notebook
    • First observedask_question
    • First observedcleanup_data
    • First observedclose_session
    • First observedget_health
    • First observedget_library_stats
    • First observedget_notebook
    • First observedlist_notebooks
    • First observedlist_sessions
    • First observedre_auth
    • First observedremove_notebook
    • First observedreset_session
    • First observedsearch_notebooks
    • First observedselect_notebook
    • First observedsetup_auth
    • First observedupdate_notebook

TDQS

A4/5.0

Scored across 16 tools

Disambiguation4/5

Most tools have clearly distinct roles: notebook CRUD, search/stats, question asking, session lifecycle, and auth/maintenance are separated cleanly. The only notable overlap is setup_auth vs re_auth, though their descriptions do differentiate use cases.

Naming Consistency5/5

Tool names consistently follow a snake_case verb_noun pattern: list_notebooks, get_notebook, add_notebook, update_notebook, remove_notebook, search_notebooks, close_session, reset_session. Even the auth tools (setup_auth, re_auth, get_health) and cleanup_data fit the same predictable convention.

Tool Count4/5

At 16 tools, the surface is slightly above the ideal range but each tool maps to a real need: notebook library management, question answering, session lifecycle, and authentication/support. The auth/maintenance cluster adds weight, but it is coherent with the server's operational scope.

Completeness4/5

The notebook lifecycle is well covered with list/get/add/update/remove/search, plus select, ask_question, and library stats. Minor gaps exist: there is no source-level management and no way to create a brand-new NotebookLM notebook from within the tool set, which are workable limitations.

Maintenance

ActivityMaintained
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Augments MCP Server - A comprehensive framework documentation provider for Claude Code

  • The CustomGPT.ai MCP server is a fully managed, RAG-powered endpoint that connects large language models with private knowledge bases and external data sources. It provides tools for retrieval-augmented generation queries (send_message), data ingestion (upload_file), and source listing, enabling AI agents to query private documents like PDFs with high accuracy and real-time citations.

  • MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.

  • The Grafbase MCP server sits in front of a GraphQL API and exposes an MCP protocol-compliant interface that allows AI agents and LLMs to explore and query GraphQL APIs using natural language. It provides tools to search schemas, introspect types and fields, and execute GraphQL queries while minimizing context bloat by returning only relevant schema subsets, with built-in support for authentication, authorization, and configurable access control.

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    A BM25-based MCP server that enables document search and retrieval across structured domains of knowledge content, allowing Claude to search and reference documentation when answering questions.
    4
    1
    -
  • A
    license
    C
    quality
    D
    maintenance
    An MCP server that enables persistent memory, structured thinking sessions, and project-based knowledge management for Claude. It includes specialized coding tools for package discovery and reinvention prevention by validating code against existing libraries and APIs.
    17
    3
    -
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that automatically enhances user prompts by applying advanced engineering techniques like chain-of-thought and few-shot reasoning based on identified intent. It optimizes technique selection through local learning and integrates directly into Claude sessions to improve output quality without additional API costs.
    6
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for Google NotebookLM that lets AI agents chat with notebooks, add sources, generate audio overviews, and extract citations via a real Chrome browser.
    MIT