{"name":"io.github.Pantheon-Security/notebooklm-mcp-secure","slug":"pantheon-security-notebooklm-mcp-secure","title":null,"description":"Security-hardened NotebookLM MCP with post-quantum encryption","url":"https://mcp.market/server/pantheon-security-notebooklm-mcp-secure","rating":null,"grade":"A","score":91,"certified":false,"status":"active","category":"security","tags":["security"],"presence":{"score":44,"stars":84,"forks":18,"downloads_week":101,"last_push_at":"2026-09-03T06:15:38.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Pantheon-Security/notebooklm-mcp-secure","website":null,"version":"2026.5.0","remotes":[],"packages":[{"registryType":"npm","identifier":"@pan-sec/notebooklm-mcp","version":"2026.5.0","transport":{"type":"stdio"}}],"tools":[{"name":"add_folder","description":"Add all files from a local folder as sources to a NotebookLM notebook. ## Use this when - User wants to add a folder of PDFs, docs, or text files to a notebook - Adding 5+ files at once (faster than calling add_source repeatedly) ## Behaviour - Scans the folder for supported file types (default: .pdf, .txt, .md, .docx) - Adds each file one-by-one with progress updates - Skips files that fail and r","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_notebook","description":"Add a NotebookLM notebook to the local library after explicit user confirmation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_source","description":"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.exampl","write_action":false,"price_micros":0,"input_schema":null},{"name":"batch_create_notebooks","description":"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://r","write_action":true,"price_micros":0,"input_schema":null},{"name":"cleanup_data","description":"Preview or delete NotebookLM MCP data across known install, browser, cache, log, backup, and trash locations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"close_session","description":"Close a specific session by session ID. Ask before closing if the user might still need it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"collect_audit_evidence","description":"Collect evidence package for compliance audits. Creates a verifiable package with checksums.","write_action":false,"price_micros":0,"input_schema":null},{"name":"compliance_dashboard","description":"Get comprehensive compliance dashboard with GDPR, SOC2, and CSSF status. Shows overall compliance score, health status, and key metrics.","write_action":false,"price_micros":0,"input_schema":null},{"name":"compliance_score","description":"Get current compliance score (0-100) for each regulation and overall. Includes detailed breakdown by category.","write_action":false,"price_micros":0,"input_schema":null},{"name":"configure_webhook","description":"Add or update a webhook endpoint for event notifications.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_notebook","description":"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, note","write_action":true,"price_micros":0,"input_schema":null},{"name":"deep_research","description":"Perform deep research using Gemini's Deep Research agent. > **⚠️ REQUIRES GEMINI_API_KEY** - Do NOT use this tool unless GEMINI_API_KEY is configured. For notebook queries, use ask_question instead (no API key needed). This runs in the background and can take 1-5 minutes to complete. ## When to Use - ONLY when GEMINI_API_KEY is configured - You need comprehensive research on a topic NOT in your no","write_action":false,"price_micros":0,"input_schema":null},{"name":"delete_document","description":"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","write_action":true,"price_micros":0,"input_schema":null},{"name":"download_audio","description":"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\" } ```","write_action":false,"price_micros":0,"input_schema":null},{"name":"export_library","description":"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\": \"","write_action":false,"price_micros":0,"input_schema":null},{"name":"export_user_data","description":"Export all user data in machine-readable format (GDPR Article 20 - Right to Data Portability).","write_action":false,"price_micros":0,"input_schema":null},{"name":"gemini_query","description":"Quick query to Gemini model with optional grounding tools. > **⚠️ REQUIRES GEMINI_API_KEY** - Do NOT use this tool unless GEMINI_API_KEY is configured. For notebook queries, use ask_question instead (no API key needed). Supports: - Google Search grounding for current information - Code execution for calculations - URL analysis for web content ## Requirements - GEMINI_API_KEY environment variable M","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_audio_overview","description":"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 availa","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_compliance_report","description":"Generate a compliance audit report. Supports multiple report types and formats.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_data_table","description":"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 leas","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_video_overview","description":"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 throug","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_audio_status","description":"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\" } ```","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_consent_status","description":"Get current consent status for all data processing purposes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_data_table","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_health","description":"Get server health status including authentication state, active sessions, and configuration.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_incident_status","description":"Get status of security incidents including open, investigating, and resolved counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_library_stats","description":"Get statistics about your notebook library (total notebooks, usage, etc.)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_notebook","description":"Get detailed information about a specific notebook by ID","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_notebook_chat_history","description":"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 ##","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_policy","description":"Get detailed information about a specific compliance policy.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project_info","description":"Get current project context and library location.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_query_history","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_quota","description":"Get current quota status including license tier, usage, and limits.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_research_status","description":"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)","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_video_status","description":"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\" } ```","write_action":false,"price_micros":0,"input_schema":null},{"name":"grant_consent","description":"Grant consent for a specific data processing purpose.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_documents","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_evidence_packages","description":"List all saved evidence packages with their metadata.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_notebooks","description":"List all library notebooks with metadata (name, topics, use cases, URL).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_policies","description":"List all compliance policies with their status and review dates.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_sessions","description":"List all active sessions with stats (age, message count, last activity).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_sources","description":"List sources in a notebook. Provide notebook_id or notebook_url; if neither is provided,","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_webhooks","description":"List all configured webhooks with their status and statistics.","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_chunked_document","description":"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 W","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_document","description":"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 additi","write_action":false,"price_micros":0,"input_schema":null},{"name":"remove_notebook","description":"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","write_action":true,"price_micros":0,"input_schema":null},{"name":"remove_source","description":"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\" } ```","write_action":true,"price_micros":0,"input_schema":null},{"name":"remove_webhook","description":"Remove a configured webhook by ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"report_security_incident","description":"Report a security incident for investigation and tracking.","write_action":false,"price_micros":0,"input_schema":null},{"name":"request_data_erasure","description":"Request erasure of personal data (GDPR Article 17 - Right to Erasure). Creates an erasure request for review.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reset_session","description":"Reset a session's chat history (keep same session ID).","write_action":false,"price_micros":0,"input_schema":null},{"name":"revoke_consent","description":"Revoke previously granted consent for a data processing purpose.","write_action":false,"price_micros":0,"input_schema":null},{"name":"run_health_check","description":"Run a comprehensive health check of all compliance components.","write_action":true,"price_micros":0,"input_schema":null},{"name":"search_notebooks","description":"Search library by query (name, description, topics, tags).","write_action":false,"price_micros":0,"input_schema":null},{"name":"select_notebook","description":"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: \"Swit","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_quota_tier","description":"Manually set your NotebookLM license tier.","write_action":false,"price_micros":0,"input_schema":null},{"name":"submit_dsar","description":"Submit a Data Subject Access Request (GDPR Article 15-17, 20). Initiates the DSAR workflow.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sync_library","description":"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 note","write_action":false,"price_micros":0,"input_schema":null},{"name":"test_webhook","description":"Send a test event to a webhook to verify it's working.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_notebook","description":"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 hand","write_action":true,"price_micros":0,"input_schema":null},{"name":"upload_document","description":"Upload a document (PDF, text, etc.) to Gemini for querying. > **⚠️ REQUIRES GEMINI_API_KEY** - For adding documents to NotebookLM notebooks (no API key), use create_notebook or add_source instead. ## 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 o","write_action":true,"price_micros":0,"input_schema":null},{"name":"verify_audit_log_integrity","description":"Verify the integrity of compliance audit logs using hash chain verification.","write_action":false,"price_micros":0,"input_schema":null},{"name":"verify_evidence_integrity","description":"Verify the integrity of an evidence package using cryptographic checksums.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":91,"grade":"A","scanned_at":"2026-09-20T16:19:01.743Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T16:19:01.699Z","components":{"code":{"score":25,"max":25,"notes":["212 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 17 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@pan-sec/notebooklm-mcp","version":"2026.5.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":8,"publishedAt":"2026-08-29T08:35:18.353Z","repositoryUrl":"git+https://github.com/Pantheon-Security/notebooklm-mcp-secure.git","weeklyDownloads":101}],"repo":{"found":true,"owner":"Pantheon-Security","repo":"notebooklm-mcp-secure","archived":false,"pushedAt":"2026-09-03T06:15:38Z","stars":84,"forks":18,"openIssues":1,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/244360889?v=4","ownerCreatedAt":"2025-11-16T16:44:28Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/244360889?v=4&s=128","source":"github"},"presence":{"stars":84,"forks":18,"downloadsWeek":101,"license":"MIT","lastPushAt":"2026-09-03T06:15:38.000Z","score":44}}}},"grade_history":[],"reviews":[]}