MCP server for Google NotebookLM API with HTTP REST API - Zero hallucinations from your notebooks. Provides session-based conversational research with Gemini 2.5 through NotebookLM with human-like behavior and persistent browser fingerprinting.
The server defines 35 tools with explicit schemas and descriptions, but quality is inconsistent across the tool set. Strengths: all tools have descriptions (>20 chars), all input schemas are visible with type definitions, verb-noun naming convention is consistently applied, and parameter descriptions are generally present. Weaknesses: descriptions are often generic or vague (e.g., 'Chat sessions with metadata' instead of explaining WHEN to use it), many descriptions lack actionable guidance about prerequisites or next steps, output schemas are not documented, error handling guidance is minimal, and several tools expose multiple responsibilities (e.g., library_add performs both ADD and DISCOVERY in one call; notebook_ask supports both session creation and reuse without clear branching). Tool naming is verb-first and mostly clear, but some parameter choices accept both IDs and URLs without disambiguation (notebook_id vs notebook_url in ~15 tools), forcing LLMs to reason about which to use. No enum constraints are visible for multi-option parameters like 'source_type' (file|url|youtube|drive|text) or 'content_type', these are documented in descriptions but not enforced structurally. Schema inspection of sample tools shows parameters have descriptions but no min/max bounds on numeric types, no pattern constraints on IDs, and no documented defaults. Baseline: 549 production tools average 4 params per tool (observed: 35 tools with 1-10 params each, median ~3.5 ✓); 90% of A+ tools have action verbs (observed: 100% ✓); 100% of A+ tools have docstrings (observed: 100% ✓); but 100% of A+ tool params have descriptions (observed: ~85%, many params like 'days_old' in server_cleanup lack detail about behavior at boundary values). Output schema documentation is the largest gap: tool descriptions state WHAT the tool does but never document the response structure, which violates mxe:response-shaper and mxe:include-chaining-ids patterns.
Log out from NotebookLM (clear authentication and browser state)
Interactively set up Google authentication for NotebookLM (requires browser access)
Switch to a different Google account by re-authenticating
Delete generated Studio content from a notebook
Download generated Studio content (audio, video, infographic, report, presentation, or data table)
Generate Studio content from notebook sources (audio overview, video, study guide, briefing, infographic, report, presentation, data table)
No output schemas documented. Tool descriptions state WHAT is returned (e.g., 'answers grounded on sources with citations') but never document the actual response structure (fields, types, nesting). LLMs cannot plan chaining or extract nested data without knowing the response shape.
Dual parameters (notebook_id vs notebook_url) in ~15 tools without disambiguation guidance. Many tools accept 'Notebook ID (optional, uses active if not specified)' OR 'Direct notebook URL (optional)', LLMs must reason about which to use. Should either consolidate into a single smart resolver, or provide separate verbs (get_notebook_by_id vs get_notebook_by_url).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 66 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
List all generated Studio content in a notebook with metadata (type, status, creation time, download URLs)
Add a notebook to your local library from a NotebookLM URL or auto-discover metadata from a URL
Auto-discover and populate notebook metadata (name, description, topics, use cases) from a NotebookLM URL by opening it in the browser
Get detailed information about a specific notebook in the library
List all notebooks in your local library with metadata (name, description, topics, use cases, URL, statistics)
Remove a notebook from the local library (does not delete from NotebookLM)
Search the local notebook library by name, description, tags, or topics
Select a notebook from the library as the active notebook for subsequent operations
Get statistics about your notebook library (total notebooks, total sessions, total messages, most used notebooks)
Update metadata for a notebook in the library (name, description, tags, topics, use cases)
Create a new note in the notebook's Studio section
Get the full content of a specific note
List all notes in a notebook's Studio section
Save a chat session or conversation excerpt to a notebook note
Convert a Studio note to a source document (makes it available for chat and content generation)
Ask a question to NotebookLM with optional session support for contextual follow-ups. Returns Gemini 2.5 answer grounded on notebook sources with citations to minimize hallucinations.
Create a new notebook in NotebookLM (requires authentication)
Delete one or more notebooks from NotebookLM (requires authentication)
List all notebooks in NotebookLM account (requires authentication)
Clean up server data including old sessions, temporary files, and cached browser state
Get server health status including authentication state, active sessions, message counts, and library statistics
Close a specific chat session and clean up resources
List all active chat sessions with metadata (ID, notebook, message count, creation time, last activity)
Reset a session's chat history while keeping the session active (clears all previous messages)
Add a source (document, URL, YouTube video, Google Drive file, or pasted text) to a notebook
Delete one or more sources from a notebook
List all sources in a notebook with metadata (name, type, size, upload date, processing status)
Read the full content of a source in a notebook
Batch convert notebook questions and answers to offline vault format for fast lookup without authentication
Multi-option string parameters without enum constraints. 'source_type' accepts file|url|youtube|drive|text, 'content_type' accepts audio|video|study_guide|..., but these are documented only in description text, not enforced as JSON Schema enums. LLMs frequently hallucinate invalid values.
Descriptions lack actionable guidance about prerequisites and next steps. E.g., 'notebook_ask' states it returns 'answers with citations' but does NOT explain 'If you need session history, pass session_id; if creating new session, omit it.' Similarly, 'library_add' combines two responsibilities: ADD a URL and AUTO-DISCOVER metadata in one tool, forcing LLMs to reason about when discovery is applied.
No numeric bounds or format constraints. 'limit' in library_search has no min/max; 'days_old' in server_cleanup lacks boundary guidance; 'content_language' has no enum. Unconstrained parameters invite invalid input from LLMs (e.g., limit=-1, days_old=999999).
Error handling guidance is absent. No tool description explains what to do if a notebook is not found, a session is invalid, or authentication fails. Responses likely return raw API errors rather than recovery hints (e.g., 'User not found. Try search_users()...'). per pattern:recovery-guide.
Destructive operations (notebook_delete, session_reset, content_delete, server_cleanup) lack confirmation/dry-run support. Description does NOT mention whether a confirmation step exists, whether the operation is reversible, or whether the agent should warn the user. pattern:confirmation-request.
Tool composition gaps. 'notebook_ask' accepts both notebook_id and notebook_url, and also accepts an optional session_id. If the agent does not know the session_id, should it call session_list first? The description does not guide this flow. Similarly, 'source_add' requires knowing notebook_id or notebook_url upfront, no guidance if the user only gives a notebook name.