Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.Pantheon-Security/notebooklm-mcp-secure

NPM · @PAN-SEC/NOTEBOOKLM-MCP · SCANNED AUG 3

Security-hardened NotebookLM MCP with post-quantum encryption

+41 this week 65 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security87
  • No malware found by supply-chain analysis.Pass
  • Only part of the dependency tree could be resolved (171 of 175), so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (171 of 175), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability54
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (poor).Fail
  • Context-footprint check failed: tool/resource definitions use about 7568 tokens (~172/item across 44 items; 43 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @pan-sec/notebooklm-mcp

# add to Claude Code
claude mcp add pantheon-security-notebooklm-mcp-secure -- npx -y @pan-sec/notebooklm-mcp
# add to Codex CLI
codex mcp add pantheon-security-notebooklm-mcp-secure -- npx -y @pan-sec/notebooklm-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pantheon-security-notebooklm-mcp-secure": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@pan-sec/notebooklm-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add pantheon-security-notebooklm-mcp-secure --command npx --arg -y --arg @pan-sec/notebooklm-mcp
# ~/.hermes/config.yaml
mcp_servers:
  pantheon-security-notebooklm-mcp-secure:
    command: "npx"
    args: ["-y", "@pan-sec/notebooklm-mcp"]
// mcp.json
{
  "mcpServers": {
    "pantheon-security-notebooklm-mcp-secure": {
      "command": "npx",
      "args": [
        "-y",
        "@pan-sec/notebooklm-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 2 Aug 26 +24
    • Provenance: unverified → fail security
    • Known CVEs: unverified → partial security
    • Install scripts: unverified → pass security
    • Schema quality: unverified → poor functional
    • Stability: unverified → 0.23 functional
    • MCP protocol: unverified → pass functional
    • Maintenance: unverified → pass functional
    • Dependency health: unverified → partial functional
    • License: unverified → pass functional
    • Licence: MIT functional
  • 1 Aug 26 +7
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 31 Jul 26 −18
    • Malware scan: pass → unverified security
  • 30 Jul 26 +27
    • Security disclosure: unverified → fail functional
    • Schema quality: unverified → 100 functional
    • Tool coverage: unverified → 100 functional
    • First check of Schema quality: unverified functional
    • First check of Schema quality: fail functional
    • First check of Tool coverage: 99 functional
    • First check of Schema quality: fail functional
  • 28 Jul 26 0
    • Security disclosure: fail → unverified functional
  • 27 Jul 26 24

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/@pan-sec/[email protected]

Provenance none

Ecosystem: npm · Outcome: none

Dependencies 171 packages

171 packages in the resolved dependency tree · 170 deprecated · 62 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 43 exposed · ~7,506 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
add_notebook ~468

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 ## How to Get a NotebookLM Share Link 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)

NameTypeReqDescription
content_typesarrayTypes of content (e.g., ['documentation', 'examples', 'best practices'])
descriptionstringyesWhat knowledge/content is in this notebook
namestringyesDisplay name for the notebook (e.g., 'n8n Documentation')
tagsarrayOptional tags for organization
topicsarrayyesTopics covered in this notebook
urlstringyesThe NotebookLM notebook URL
use_casesarrayWhen should Claude use this notebook (e.g., ['Implementing n8n workflows'])

No output schema declared.

No examples provided.

add_source ~138

Add a source to an existing NotebookLM notebook. ## Source Types - **url**: Web page URL - **text**: Text content (paste) - **file**: Local file path (PDF, DOCX, TXT) ## Example ```json { "notebook_id": "my-notebook", "source": { "type": "url", "value": "https://docs.example.com/api" } } ```

NameTypeReqDescription
notebook_idstringLibrary notebook ID
notebook_urlstringDirect notebook URL (overrides notebook_id)
sourceobjectyes

No output schema declared.

No examples provided.

ask_question ~336

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

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

No output schema declared.

No examples provided.

batch_create_notebooks ~312

Create multiple NotebookLM notebooks in one operation. ## What This Tool Does - Creates up to 10 notebooks in a single batch operation - Reports progress for each notebook - Optionally continues on error or stops on first failure - Auto-adds created notebooks to your library ## Example Usage ```json { "notebooks": [ { "name": "React Documentation", "sources": [ { "type": "url", "value": "https://react.dev/reference" } ], "topics": ["react", "frontend"] }, { "name": "Node.js API", "sources": [ { "type": "url", "value": "https://nodejs.org/api/" } ], "topics": ["nodejs", "backend"] } ], "stop_on_error": false } ``` ## Limits - Maximum 10 notebooks per batch - Each notebook follows individual source limits (50-600 based on tier) - Delays between notebooks to avoid rate limiting ## Returns Summary with: - total: Number of notebooks attempted - succeeded: Successfully created count - failed: Failed count - results: Array of individual results

NameTypeReqDescription
notebooksarrayyesArray of notebooks to create (max 10)
show_browserbooleanShow browser window for debugging
stop_on_errorbooleanStop batch if any notebook fails (default: false)

No output schema declared.

No examples provided.

cleanup_data ~409

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.

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

No output schema declared.

No examples provided.

close_session ~40

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

NameTypeReqDescription
session_idstringyesThe session ID to close

No output schema declared.

No examples provided.

configure_webhook ~276

Add or update a webhook endpoint for event notifications. ## Supported Formats - generic: Standard JSON payload - slack: Slack webhook format - discord: Discord webhook format - teams: Microsoft Teams format ## Events Subscribe to specific events or use '*' for all events: - question_answered, notebook_created, notebook_deleted - source_added, source_removed - session_created, session_expired - auth_required, rate_limit_hit, security_incident - quota_warning, audio_generated, batch_complete ## Example ```json { "name": "Slack Notifications", "url": "https://hooks.slack.com/...", "format": "slack", "events": ["notebook_created", "security_incident"] } ```

NameTypeReqDescription
enabledbooleanEnable/disable the webhook (default: true)
eventsarrayEvents to subscribe to. Use ["*"] for all events.
formatstringPayload format (default: generic)
idstringWebhook ID (for updates). Omit to create new.
namestringyesDisplay name for the webhook
secretstringSecret for HMAC signature (X-Webhook-Signature header)
urlstringyesWebhook endpoint URL

No output schema declared.

No examples provided.

create_notebook ~476

Create a new NotebookLM notebook with sources programmatically. ## What This Tool Does - Creates a NEW notebook in your NotebookLM account - Uploads sources (URLs, text, files) to the notebook - Returns the notebook URL for immediate use - Optionally adds to your local library ## Supported Source Types - **url**: Web page URL (documentation, articles, etc.) - **text**: Raw text content (code, notes, etc.) - **file**: Local file path (PDF, DOCX, TXT) ## Example Usage Create a notebook from API documentation: ```json { "name": "React Docs", "sources": [ { "type": "url", "value": "https://react.dev/reference/react" } ] } ``` Create a notebook with multiple sources: ```json { "name": "Security Research", "sources": [ { "type": "url", "value": "https://owasp.org/Top10" }, { "type": "file", "value": "/path/to/security-report.pdf" }, { "type": "text", "value": "Custom notes...", "title": "My Notes" } ], "description": "Security best practices and research", "topics": ["security", "owasp", "best-practices"] } ``` ## NotebookLM Limits (Free Tier) - 100 notebooks maximum - 50 sources per notebook - 500k words per source - 50 queries per day ## Notes - Requires authentication (run setup_auth first) - Creates notebook with sharing set to private by default - Large files may take longer to process

NameTypeReqDescription
auto_add_to_librarybooleanWhether to automatically add the created notebook to your library (default: true)
browser_optionsobjectOptional browser settings for debugging
descriptionstringOptional description for the notebook in your library
namestringyesDisplay name for the new notebook
show_browserbooleanShow browser window (shorthand for browser_options.show)
sourcesarrayyesArray of sources to add to the notebook
topicsarrayOptional topics for categorization in your library

No output schema declared.

No examples provided.

deep_research ~185

Perform deep research using Gemini's Deep Research agent. This runs in the background and can take 1-5 minutes to complete. ## When to Use - You need comprehensive research on a topic - No specific NotebookLM notebook is relevant - You want web-grounded answers with citations ## Requirements - GEMINI_API_KEY environment variable must be set ## Notes - Deep Research is a premium feature that may incur costs - Results are grounded in web sources with citations - For notebook-specific queries, use ask_question instead

NameTypeReqDescription
max_wait_secondsnumberMaximum wait time in seconds (default 5 min, max 10 min)
querystringyesThe research question or topic to investigate
wait_for_completionbooleanWait for research to complete (polls every 10s). Set to false to run in background.

No output schema declared.

No examples provided.

delete_document ~103

Delete an uploaded document from Gemini. ## What This Does - Removes a file from Gemini Files API - File will no longer be available for queries - Frees up storage space ## Notes - Files auto-delete after 48 hours anyway - Use this to immediately remove sensitive documents ## Requirements - GEMINI_API_KEY environment variable must be set

NameTypeReqDescription
file_namestringyesFile name/ID to delete (from upload_document or list_documents)

No output schema declared.

No examples provided.

download_audio ~133

Download the generated audio overview file. ## Requirements - Audio must be in "ready" status - Use get_audio_status to check before downloading ## Output Downloads to specified path or ~/notebooklm-audio-{timestamp}.mp3 ## Example ```json { "notebook_id": "my-research", "output_path": "/path/to/save/podcast.mp3" } ```

NameTypeReqDescription
notebook_idstringLibrary notebook ID
notebook_urlstringOr direct notebook URL (overrides notebook_id)
output_pathstringOptional output file path

No output schema declared.

No examples provided.

export_library ~156

Export your notebook library to a backup file. ## Formats - **json**: Full backup with all metadata (recommended for restore) - **csv**: Simple list for spreadsheets (name, url, topics, last_used) ## Default Location If no output_path specified, saves to: ~/notebooklm-library-backup-{date}.{format} ## Example Usage ```json { "format": "json" } ``` Export to specific location: ```json { "format": "csv", "output_path": "/path/to/backup.csv" } ```

NameTypeReqDescription
formatstringExport format (default: json)
output_pathstringOutput file path (optional, defaults to home directory)

No output schema declared.

No examples provided.

gemini_query ~182

Quick query to Gemini model with optional grounding tools. Faster than deep_research for simpler questions. Supports: - Google Search grounding for current information - Code execution for calculations - URL analysis for web content ## Requirements - GEMINI_API_KEY environment variable must be set ## When to Use - Quick factual questions - Current events (with google_search tool) - Code calculations (with code_execution tool) - Web page analysis (with url_context tool)

NameTypeReqDescription
modelstringModel to use (flash is faster, pro is more capable)
previous_interaction_idstringContinue a previous conversation (for multi-turn)
querystringyesThe question or prompt
toolsarrayBuilt-in tools to enable for grounding
urlsarrayURLs to analyze (automatically enables url_context)

No output schema declared.

No examples provided.

generate_audio_overview ~148

Generate an AI-powered audio overview (podcast-style) for a notebook. ## What This Tool Does - Triggers NotebookLM's audio overview generation - Audio overviews are ~5-15 minute podcast-style summaries - Generation takes 2-5 minutes typically - Returns immediately with status (check with get_audio_status) ## Requirements - Notebook must have at least one source - Audio generation may not be available on all notebooks ## Example ```json { "notebook_id": "my-research" } ```

NameTypeReqDescription
notebook_idstringLibrary notebook ID
notebook_urlstringOr direct notebook URL (overrides notebook_id)

No output schema declared.

No examples provided.

get_audio_status ~117

Check the audio overview generation status for a notebook. ## Returns - status: "not_started" | "generating" | "ready" | "failed" | "unknown" - progress: Generation progress (0-100) if generating - duration: Audio duration in seconds if ready ## Example ```json { "notebook_id": "my-research" } ```

NameTypeReqDescription
notebook_idstringLibrary notebook ID
notebook_urlstringOr direct notebook URL (overrides notebook_id)

No output schema declared.

No examples provided.

get_health ~179

Get server health status including authentication state, active sessions, and configuration. Use this to verify the server is ready before starting research workflows. **Deep Check Mode (v2026.1.1)** Set `deep_check: true` to actually verify the NotebookLM chat UI loads. This catches stale sessions where cookies exist but the UI won't load. Returns `chat_ui_accessible: true/false`. If authenticated=false and having persistent issues: Consider running cleanup_data(preserve_library=true) + setup_auth for fresh start with clean browser session.

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

No output schema declared.

No examples provided.

get_library_stats ~23

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_notebook ~29

Get detailed information about a specific notebook by ID

NameTypeReqDescription
idstringyesThe notebook ID

No output schema declared.

No examples provided.

get_notebook_chat_history ~434

Extract conversation history from a NotebookLM notebook's chat interface. This tool uses browser automation to navigate to a notebook and extract all Q&A pairs from the chat UI. This is useful for: - Recovering previous research conversations - Auditing what queries were made in a notebook - Understanding quota usage from direct NotebookLM browser usage - Resuming context from previous sessions ## Context Management Use `preview_only: true` to get a quick count before extracting full content. Use `output_file` to export to JSON instead of returning to context. Use `offset` with `limit` for pagination through large histories. ## Examples Quick audit (preview only): ```json { "notebook_id": "my-research", "preview_only": true } ``` Export to file (avoids context overflow): ```json { "notebook_id": "my-research", "output_file": "/tmp/chat-history.json" } ``` Paginate through history: ```json { "notebook_id": "my-research", "limit": 20, "offset": 0 } { "notebook_id": "my-research", "limit": 20, "offset": 20 } ```

NameTypeReqDescription
limitnumberMaximum number of message pairs to return (default: 50, max: 200).
notebook_idstringLibrary notebook ID. Use list_notebooks to see available notebooks.
notebook_urlstringDirect notebook URL (overrides notebook_id). Use for notebooks not in your library.
offsetnumberNumber of message pairs to skip from the start. Use with limit for pagination. (default: 0)
output_filestringIf provided, exports chat history to this JSON file instead of returning to context. Useful for large histories.
preview_onlybooleanIf true, only returns message count and summary without content. Use this to audit before extracting full history. (default: false)
show_browserbooleanShow browser window for debugging (default: false)

No output schema declared.

No examples provided.

get_project_info ~113

Get current project context and library location. Detects the project from the current working directory using: 1. Git repository root (looks for .git directory) 2. package.json location (for npm projects) 3. Current directory as fallback Returns: - project: { id, name, path, type } or null if using global library - library_path: Path to the active library.json file - is_project_library: Whether using per-project or global library Use this to understand which library context is active.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_query_history ~158

Retrieve past NotebookLM queries and answers for reviewing research sessions. Use this tool to: - Review past research conversations - Find specific information from previous queries - Track which notebooks and sessions you've used - Search through question and answer content Returns query entries with question, answer, notebook, session, and timing info.

NameTypeReqDescription
datestringFilter queries by date (format: YYYY-MM-DD)
limitnumberMaximum number of entries to return (default: 50, max: 500)
notebook_idstringFilter queries by notebook ID (from your library)
searchstringSearch pattern to find in questions or answers
session_idstringFilter queries by session ID

No output schema declared.

No examples provided.

get_quota ~221

Get current quota status including license tier, usage, and limits. Returns: - tier: 'free', 'pro', 'ultra', or 'unknown' - notebooks: used/limit/remaining/percent - sources: limit per notebook - queries: used/limit/remaining/percent/should_stop/reset_time - warnings: array of warning messages Quota Limits by Tier: - Free: 100 notebooks, 50 sources/notebook, 50 queries/day - Pro: 500 notebooks, 300 sources/notebook, 500 queries/day - Ultra: 500 notebooks, 600 sources/notebook, 5000 queries/day Use sync=true to fetch actual quota from Google's NotebookLM UI (requires browser). Without sync, returns locally tracked counts which may differ if you used NotebookLM directly in browser. Query counts reset daily at midnight.

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

No output schema declared.

No examples provided.

get_research_status ~83

Check the status of a background deep research task. Use this when you started deep_research with wait_for_completion=false. ## Returns - status: pending | running | completed | failed - answer: The research result (if completed) - error: Error message (if failed)

NameTypeReqDescription
interaction_idstringyesThe interaction ID returned from deep_research

No output schema declared.

No examples provided.

list_documents ~105

List all documents uploaded to Gemini. ## What This Does - Shows all files currently stored in Gemini Files API - Files expire 48 hours after upload - Returns file names, sizes, and expiration times ## Use Cases - Check what documents are available for querying - Find file IDs for query_document - Monitor storage usage ## Requirements - GEMINI_API_KEY environment variable must be set

NameTypeReqDescription
page_sizenumberMaximum number of files to return

No output schema declared.

No examples provided.

list_notebooks ~41

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_sessions ~36

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_sources ~145

List all sources in a NotebookLM notebook. ## Returns Array of sources with: - id: Source identifier (for use with remove_source) - title: Source name/title - type: url, text, file, drive, or unknown - status: ready, processing, or failed ## Example ```json { "notebook_id": "my-notebook" } ``` Or with direct URL: ```json { "notebook_url": "https://notebooklm.google.com/notebook/xxx" } ```

NameTypeReqDescription
notebook_idstringLibrary notebook ID
notebook_urlstringDirect notebook URL (overrides notebook_id)

No output schema declared.

No examples provided.

list_webhooks ~39

List all configured webhooks with their status and statistics. Returns array of webhooks with: id, name, url, enabled, events, format.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

query_chunked_document ~271

Query a large document that was automatically chunked during upload. ## What This Does - Queries each chunk of a large document - Aggregates results into a single coherent answer - Handles documents of any size (1000+ pages) ## When to Use - After upload_document returns wasChunked=true - When you have multiple chunk file IDs to query together - For comprehensive analysis of large PDFs ## How It Works 1. Queries each chunk with your question 2. Collects answers from all chunks 3. Uses Gemini to synthesize a unified response 4. Returns aggregated answer with all sources ## Example If upload_document returned: { wasChunked: true, allFileNames: ["files/a", "files/b", "files/c"] } Call this tool with: { file_names: ["files/a", "files/b", "files/c"], query: "What are the main findings?" } ## Requirements - GEMINI_API_KEY environment variable must be set - Document chunks must be uploaded first

NameTypeReqDescription
file_namesarrayyesArray of chunk file IDs (from upload_document's allFileNames)
modelstringModel to use for querying and aggregation
querystringyesQuestion to ask about the document

No output schema declared.

No examples provided.

query_document ~214

Ask questions about an uploaded document. ## What This Does - Queries a document previously uploaded with upload_document - Uses Gemini's document understanding (text, images, charts, tables) - Returns answers grounded in the document content ## Features - Full document understanding (not just text extraction) - Can analyze charts, diagrams, and tables in PDFs - Multi-document queries (pass additional file IDs) - Fast API-based (no browser automation) ## When to Use - Quick document analysis without browser - Comparing multiple documents - Extracting specific information ## Requirements - GEMINI_API_KEY environment variable must be set - Document must be uploaded first with upload_document

NameTypeReqDescription
additional_filesarrayAdditional file IDs to include in the query (for multi-document analysis)
file_namestringyesFile name/ID returned from upload_document
modelstringModel to use (flash is faster, pro is more capable)
querystringyesQuestion to ask about the document

No output schema declared.

No examples provided.

re_auth ~244

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.

NameTypeReqDescription
browser_optionsobjectOptional browser settings. Control visibility, timeouts, and stealth behavior.
show_browserbooleanShow browser window (simple version). Default: true for re-auth. For advanced control, use browser_options instead.

No output schema declared.

No examples provided.

remove_notebook ~135

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

NameTypeReqDescription
idstringyesThe notebook ID to remove

No output schema declared.

No examples provided.

remove_source ~121

Remove a source from a NotebookLM notebook. ## Usage 1. First call list_sources to get source IDs 2. Then call remove_source with the source ID ## Example ```json { "notebook_id": "my-notebook", "source_id": "source-0" } ```

NameTypeReqDescription
notebook_idstringLibrary notebook ID
notebook_urlstringDirect notebook URL (overrides notebook_id)
source_idstringyesSource ID from list_sources (e.g., 'source-0')

No output schema declared.

No examples provided.

remove_webhook ~28

Remove a configured webhook by ID.

NameTypeReqDescription
idstringyesWebhook ID to remove

No output schema declared.

No examples provided.

reset_session ~49

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

NameTypeReqDescription
session_idstringyesThe session ID to reset

No output schema declared.

No examples provided.

search_notebooks ~46

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

NameTypeReqDescription
querystringyesSearch query

No output schema declared.

No examples provided.

select_notebook ~150

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)

NameTypeReqDescription
idstringyesThe notebook ID to activate

No output schema declared.

No examples provided.

set_quota_tier ~117

Manually set your NotebookLM license tier. Use this if: - Auto-detection failed (shows 'unknown') - You want to override the detected tier - You upgraded/downgraded your plan Tiers: - free: 100 notebooks, 50 sources, 50 queries/day - pro: 500 notebooks, 300 sources, 500 queries/day - ultra: 500 notebooks, 600 sources, 5000 queries/day

NameTypeReqDescription
tierstringyesLicense tier to set

No output schema declared.

No examples provided.

setup_auth ~217

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.

NameTypeReqDescription
browser_optionsobjectOptional browser settings. Control visibility, timeouts, and stealth behavior.
show_browserbooleanShow browser window (simple version). Default: true for setup. For advanced control, use browser_options instead.

No output schema declared.

No examples provided.

sync_library ~248

Sync your local library with actual NotebookLM notebooks. ## What This Tool Does - Navigates to NotebookLM and extracts all your notebooks - Compares with local library entries - Detects stale entries (notebooks deleted or URLs changed) - Identifies notebooks not in your library - Optionally auto-removes stale entries ## When To Use - Library seems out of sync with NotebookLM - After deleting notebooks in NotebookLM - To discover new notebooks to add - Before setting up automation workflows ## Output Returns a sync report with: - **matched**: Library entries that match actual notebooks - **staleEntries**: Library entries with no matching notebook (candidates for removal) - **missingNotebooks**: NotebookLM notebooks not in library (candidates for adding) - **suggestions**: Recommended actions ## Example Usage ```json { "auto_fix": false } ``` With auto-fix to remove stale entries: ```json { "auto_fix": true } ```

NameTypeReqDescription
auto_fixbooleanAutomatically remove stale library entries (default: false)
show_browserbooleanShow browser window for debugging

No output schema declared.

No examples provided.

test_webhook ~49

Send a test event to a webhook to verify it's working. Sends a sample 'question_answered' event and returns success/failure.

NameTypeReqDescription
idstringyesWebhook ID to test

No output schema declared.

No examples provided.

update_notebook ~239

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.

NameTypeReqDescription
content_typesarrayNew content types
descriptionstringNew description
idstringyesThe notebook ID to update
namestringNew display name
tagsarrayNew tags
topicsarrayNew topics list
urlstringNew notebook URL
use_casesarrayNew use cases

No output schema declared.

No examples provided.

upload_document ~293

Upload a document (PDF, text, etc.) to Gemini for querying. ## What This Does - Uploads a local file to Gemini's Files API - File is retained for 48 hours - Returns a file ID for use with query_document ## Auto-Chunking for Large PDFs (v1.10.0) - PDFs over 50MB or 1000 pages are automatically split into chunks - Each chunk is uploaded separately and tracked - Use query_chunked_document or pass all chunk IDs to query_document - Returns wasChunked=true and allFileNames array when chunked ## Supported File Types - PDF (any size - auto-chunked if needed) - TXT, MD, HTML, CSV, JSON, XML - DOCX, DOC - Images (PNG, JPG, GIF, WebP) - Audio (MP3, WAV) - Video (MP4) ## When to Use - You have a local document to analyze - You want fast, API-based document queries (no browser needed) - For temporary analysis (48h retention) ## For Permanent Storage Use create_notebook instead for permanent document storage with NotebookLM. ## Requirements - GEMINI_API_KEY environment variable must be set

NameTypeReqDescription
display_namestringOptional friendly name for the file
file_pathstringyesAbsolute path to the file to upload

No output schema declared.

No examples provided.