io.github.Pantheon-Security/notebooklm-mcp-secure
NPM · @PAN-SEC/NOTEBOOKLM-MCP · SCANNED SEP 20
Security-hardened NotebookLM MCP with post-quantum encryption
Available components
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 → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 64 of 172 dependencies flagged as unhealthy (1 deprecated). View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 21 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability69
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4692 tokens (~187/item across 25 items; 25 tools + 0 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 Management39
- Stability check failed: the tool surface changed between 2026.1.6 and 2026.5.0: 22 tool removals, 0 breaking changes, 4 additions. See how to fix → Fail
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
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.Pantheon-Security/notebooklm-mcp-secure server?
io.github.Pantheon-Security/notebooklm-mcp-secure runs locally as an npm package, launched with npx -y @pan-sec/notebooklm-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @pan-sec/notebooklm-mcp
claude mcp add pantheon-security-notebooklm-mcp-secure -- npx -y @pan-sec/notebooklm-mcp
{
"mcpServers": {
"pantheon-security-notebooklm-mcp-secure": {
"command": "npx",
"args": [
"-y",
"@pan-sec/notebooklm-mcp"
]
}
}
} {
"servers": {
"pantheon-security-notebooklm-mcp-secure": {
"command": "npx",
"args": [
"-y",
"@pan-sec/notebooklm-mcp"
]
}
}
} codex mcp add pantheon-security-notebooklm-mcp-secure -- npx -y @pan-sec/notebooklm-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"pantheon-security-notebooklm-mcp-secure": {
"type": "local",
"command": [
"npx",
"-y",
"@pan-sec/notebooklm-mcp"
],
"enabled": true
}
}
} openclaw mcp add pantheon-security-notebooklm-mcp-secure --command npx --arg -y --arg @pan-sec/notebooklm-mcp
mcp_servers:
pantheon-security-notebooklm-mcp-secure:
command: "npx"
args: ["-y", "@pan-sec/notebooklm-mcp"] {
"McpServers": {
"pantheon-security-notebooklm-mcp-secure": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@pan-sec/notebooklm-mcp"
]
}
}
} assistant mcp add pantheon-security-notebooklm-mcp-secure -t stdio -c npx -a -y @pan-sec/notebooklm-mcp
{
"mcpServers": {
"pantheon-security-notebooklm-mcp-secure": {
"command": "npx",
"args": [
"-y",
"@pan-sec/notebooklm-mcp"
]
}
}
} 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.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 36 to 39.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 29 to 32.
- 16 Sept 26 −3
No change was recorded against any check on this day. Stability & Change Management went from 49 to 26.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 42 to 46.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 36 to 39.
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 29 to 32.
- 9 Sept 26 −3
No change was recorded against any check on this day. Stability & Change Management went from 49 to 29.
- 7 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 42 to 46.
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 20 Sept 2026 · Analysed npm/@pan-sec/notebooklm-mcp@2026.5.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 172 packages
| Packages resolved | 172 |
|---|---|
| Deprecated | 1 |
| Stale | 63 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_notebook Add Notebook ~196
Add a NotebookLM notebook to the local library after explicit user confirmation. Provide the NotebookLM URL plus concise metadata: name, description, topics, and optional use cases/tags. Do not infer missing metadata; ask the user first.
| Name | Type | Req | Description |
|---|---|---|---|
| content_types | array | – | Types of content (e.g., ['documentation', 'examples', 'best practices']) |
| description | string | yes | What knowledge/content is in this notebook |
| name | string | yes | Display name for the notebook (e.g., 'n8n Documentation') |
| tags | array | – | Optional tags for organization |
| topics | array | yes | Topics covered in this notebook |
| url | string | yes | The NotebookLM notebook URL (must be a NotebookLM URL, e.g. https://notebook.google.com/notebook/<id>) |
| use_cases | array | – | When should Claude use this notebook (e.g., ['Implementing n8n workflows']) |
No output schema declared.
No examples provided.
add_source Add Source ~166
Add a source to an existing NotebookLM notebook. If neither `notebook_id` nor `notebook_url` is provided, this tool uses the currently active notebook from the local library. ## 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" } } ```
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | – | Library notebook ID |
| notebook_url | string | – | Direct notebook URL (overrides notebook_id) |
| source | object | yes | – |
No output schema declared.
No examples provided.
ask_question Ask NotebookLM ~253
NotebookLM notebook Q&A via browser automation. No active notebook is selected. Use list_notebooks and select_notebook to choose one, or pass notebook_url. No Gemini API key is required, but browser authentication must be valid. If login is required, use the setup_auth tool and verify with get_health (or ask the user to run the notebooklm.auth-setup prompt for a guided walkthrough).
| Name | Type | Req | Description |
|---|---|---|---|
| browser_options | object | – | Optional browser behavior settings. Claude can control everything: visibility, typing speed, stealth mode, timeouts. Useful for debugging or fine-tuning. |
| notebook_id | string | – | Optional notebook ID from your library. If omitted, uses the active notebook. Use list_notebooks to see available notebooks. |
| notebook_url | string | – | Optional notebook URL (overrides notebook_id). Use this for ad-hoc queries to notebooks not in your library. |
| question | string | yes | The question to ask NotebookLM |
| session_id | string | – | Optional session ID for contextual conversations. If omitted, a new session is created. |
| show_browser | boolean | – | Show 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 Batch Create ~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
| Name | Type | Req | Description |
|---|---|---|---|
| notebooks | array | yes | Array of notebooks to create (max 10) |
| show_browser | boolean | – | Show browser window for debugging |
| stop_on_error | boolean | – | Stop batch if any notebook fails (default: false) |
No output schema declared.
No examples provided.
create_notebook 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
| Name | Type | Req | Description |
|---|---|---|---|
| auto_add_to_library | boolean | – | Whether to automatically add the created notebook to your library (default: true) |
| browser_options | object | – | Optional browser settings for debugging |
| description | string | – | Optional description for the notebook in your library |
| name | string | yes | Display name for the new notebook |
| show_browser | boolean | – | Show browser window (shorthand for browser_options.show) |
| sources | array | yes | Array of sources to add to the notebook |
| topics | array | – | Optional topics for categorization in your library |
No output schema declared.
No examples provided.
download_audio Download Audio ~141
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" } ```
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | – | Library notebook ID |
| notebook_url | string | – | Or direct notebook URL (overrides notebook_id) |
| output_path | string | – | Optional output file path (absolute, no .. or ~ allowed) |
No output schema declared.
No examples provided.
generate_audio_overview Generate Audio ~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" } ```
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | – | Library notebook ID |
| notebook_url | string | – | Or direct notebook URL (overrides notebook_id) |
No output schema declared.
No examples provided.
generate_data_table Generate Table ~147
Generate a structured Data Table from notebook sources. ## What This Tool Does - Opens the Studio panel in NotebookLM - Generates a structured tabular extraction from notebook content - Tables organize key information from sources into rows and columns - Generation typically takes 1-3 minutes - Returns immediately with status (check with get_data_table) ## Requirements - Notebook must have at least one source - Authentication required (run setup_auth first) ## Example ```json { "notebook_id": "my-research" } ```
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | – | Library notebook ID |
| notebook_url | string | – | Or direct notebook URL (overrides notebook_id) |
No output schema declared.
No examples provided.
generate_video_overview Generate Video ~364
Generate an AI-powered Video Overview for a notebook. ## What This Tool Does - Opens the Studio panel in NotebookLM - Generates a visual video summary of notebook content - Supports multiple visual styles and formats - Generation takes 3-10 minutes typically - Returns immediately with status (check with get_video_status) - NotebookLM does not currently expose a supported video download path through this MCP server; use the NotebookLM UI to download ready videos. ## Visual Styles - **auto-select** — Let NotebookLM choose the best style (default) - **custom** — Custom visual style - **classic** — Classic presentation style - **whiteboard** — Hand-drawn whiteboard style - **kawaii** — Cute kawaii style - **anime** — Anime-inspired visuals - **watercolour** — Watercolour painting style - **retro-print** — Retro print aesthetic - **heritage** — Heritage/traditional style - **paper-craft** — Paper-craft visual style ## Formats - **explainer** — Full explanation (5-15 min, default) - **brief** — Quick summary (1-3 min) ## Requirements - Notebook must have at least one source - Authentication required (run setup_auth first) ## Example ```json { "notebook_id": "my-research", "style": "whiteboard", "format": "brief" } ```
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Video format (explainer = full, brief = short summary) |
| notebook_id | string | – | Library notebook ID |
| notebook_url | string | – | Or direct notebook URL (overrides notebook_id) |
| style | string | – | Visual style for the video overview |
No output schema declared.
No examples provided.
get_audio_status 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" } ```
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | – | Library notebook ID |
| notebook_url | string | – | Or direct notebook URL (overrides notebook_id) |
No output schema declared.
No examples provided.
get_data_table Get Table ~170
Extract the generated Data Table content from a notebook. ## What This Tool Does - Navigates to the notebook's Studio panel - Extracts the table data (headers and rows) as structured JSON - Returns the full table content for analysis ## Returns - table.headers: Column headers - table.rows: Array of row arrays - table.totalRows: Number of rows - table.totalColumns: Number of columns ## Requirements - Data table must be generated first (use generate_data_table) - Returns error if table is not yet ready ## Example ```json { "notebook_id": "my-research" } ```
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | – | Library notebook ID |
| notebook_url | string | – | Or direct notebook URL (overrides notebook_id) |
No output schema declared.
No examples provided.
get_health Health Check ~201
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: Suggest to the user that a fresh start (cleanup_data with preserve_library=true, followed by setup_auth) may help, and ask for their confirmation before running any cleanup, since cleanup_data deletes browser/session data.
| Name | Type | Req | Description |
|---|---|---|---|
| deep_check | boolean | – | If true, actually navigates to NotebookLM and verifies the chat UI loads. More reliable but slower (~5s). Use this before important query sessions. |
| notebook_id | string | – | Notebook to check (for deep_check). Defaults to active notebook or first available. |
No output schema declared.
No examples provided.
get_notebook Get Notebook ~29
Get detailed information about a specific notebook by ID
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The notebook ID |
No output schema declared.
No examples provided.
get_quota 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.
| Name | Type | Req | Description |
|---|---|---|---|
| sync | boolean | – | If 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_video_status Video Status ~117
Check the Video Overview generation status for a notebook. ## Returns - status: "not_started" | "generating" | "ready" | "failed" | "unknown" - progress: Generation progress (0-100) if generating - duration: Video duration in seconds if ready ## Example ```json { "notebook_id": "my-research" } ```
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | – | Library notebook ID |
| notebook_url | string | – | Or direct notebook URL (overrides notebook_id) |
No output schema declared.
No examples provided.
list_notebooks 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_sources List Sources ~74
List sources in a notebook. Provide notebook_id or notebook_url; if neither is provided, the active notebook from the local library is used. Returns source id, title, type, and status.
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | – | Library notebook ID |
| notebook_url | string | – | Direct notebook URL (overrides notebook_id) |
No output schema declared.
No examples provided.
re_auth Re-authenticate ~286
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, suggest these steps to the user and ask for their confirmation before running any cleanup (cleanup_data deletes browser/session and installation data): 1. Ask the user to close ALL Chrome/Chromium instances 2. Run cleanup_data(confirm=false, preserve_library=true) to preview the files that would be removed 3. Only after the user reviews the preview and confirms, run cleanup_data(confirm=true, preserve_library=true) to clean everything except the library 4. Run re_auth again for a completely fresh start This removes old installation data and browser sessions that can cause conflicts.
| Name | Type | Req | Description |
|---|---|---|---|
| browser_options | object | – | Optional browser settings. Control visibility, timeouts, and stealth behavior. |
| show_browser | boolean | – | Show 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 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
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The notebook ID to remove |
No output schema declared.
No examples provided.
remove_source Remove Source ~149
Remove a source from a NotebookLM notebook. If neither `notebook_id` nor `notebook_url` is provided, this tool uses the currently active notebook from the local library. ## 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" } ```
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | – | Library notebook ID |
| notebook_url | string | – | Direct notebook URL (overrides notebook_id) |
| source_id | string | yes | Source ID from list_sources (e.g., 'source-0') |
No output schema declared.
No examples provided.
search_notebooks 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.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Search query |
No output schema declared.
No examples provided.
select_notebook 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)
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The notebook ID to activate |
No output schema declared.
No examples provided.
setup_auth Setup Auth ~245
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, suggest these steps to the user and get their confirmation before running any cleanup (cleanup_data deletes browser/session data): 1. Ask the user to close ALL Chrome/Chromium instances 2. Ask the user before running cleanup_data(confirm=true, preserve_library=true) to clean old data 3. Run setup_auth again for a fresh start This helps resolve conflicts from old browser sessions and installation data.
| Name | Type | Req | Description |
|---|---|---|---|
| browser_options | object | – | Optional browser settings. Control visibility, timeouts, and stealth behavior. |
| show_browser | boolean | – | Show browser window (simple version). Default: true for setup. For advanced control, use browser_options instead. |
No output schema declared.
No examples provided.
sync_library 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 } ```
| Name | Type | Req | Description |
|---|---|---|---|
| auto_fix | boolean | – | Automatically remove stale library entries (default: false) |
| show_browser | boolean | – | Show browser window for debugging |
No output schema declared.
No examples provided.
update_notebook Update Notebook ~260
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.
| Name | Type | Req | Description |
|---|---|---|---|
| content_types | array | – | New content types |
| description | string | – | New description |
| id | string | yes | The notebook ID to update |
| name | string | – | New display name |
| tags | array | – | New tags |
| topics | array | – | New topics list |
| url | string | – | New notebook URL (must be a NotebookLM URL, e.g. https://notebook.google.com/notebook/<id>) |
| use_cases | array | – | New use cases |
No output schema declared.
No examples provided.
What is the io.github.Pantheon-Security/notebooklm-mcp-secure server?
io.github.Pantheon-Security/notebooklm-mcp-secure is listed in the public MCP registry as io.github.Pantheon-Security/notebooklm-mcp-secure. Security-hardened NotebookLM MCP with post-quantum encryption. This page covers its npm package (@pan-sec/notebooklm-mcp).
Is the io.github.Pantheon-Security/notebooklm-mcp-secure server safe to use?
io.github.Pantheon-Security/notebooklm-mcp-secure scores 75 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.Pantheon-Security/notebooklm-mcp-secure server expose?
io.github.Pantheon-Security/notebooklm-mcp-secure exposes 25 tools: ask_question, add_notebook, list_notebooks, get_notebook, select_notebook, and 20 more. Their descriptions and schemas cost roughly 4,692 tokens of context every time the server is loaded.
Is the io.github.Pantheon-Security/notebooklm-mcp-secure server still maintained?
io.github.Pantheon-Security/notebooklm-mcp-secure is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.Pantheon-Security/notebooklm-mcp-secure server under?
io.github.Pantheon-Security/notebooklm-mcp-secure declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.