Tools

May 1, 2026 · View on GitHub

Every tool registered in v2.0.0, with parameter schema, an example invocation (MCP tools/call arguments shape), and the expected return shape. New v2 tools are flagged.

The server returns each tool result wrapped as { "success": true, "data": <object> } (or { "success": false, "error": <string> }). The shapes below describe the inner data.


ask_question

Ask a question against a notebook. Reuses an existing browser session when session_id is supplied. Citation extraction reads the DOM citation panel after the answer settles.

v2 additions: source_format, _provenance envelope on the result, AI-generated answer prefix.

Parameters

NameTypeRequiredNotes
questionstringyesThe question to ask.
session_idstringnoReuse an existing session for context. Omit to create a new one.
notebook_idstringnoLibrary notebook ID. Falls back to active notebook.
notebook_urlstringnoAd-hoc NotebookLM URL. Overrides notebook_id.
source_formatnone | inline | footnotes | jsonnoCitation rendering. Default none.
show_browserboolnoShorthand for browser_options.show.
browser_optionsobjectnoPer-call browser overrides — see docs/configuration.md.

Example

{
  "name": "ask_question",
  "arguments": {
    "question": "How does the OAuth refresh token rotation work?",
    "notebook_id": "auth-notebook",
    "source_format": "footnotes"
  }
}

Return shape

{
  "status": "success",
  "question": "How does the OAuth refresh token rotation work?",
  "answer": "[AI-GENERATED ...] The refresh token is rotated each ...\n\nSources:\n[1] auth-spec.pdf — ...",
  "session_id": "ses_…",
  "notebook_url": "https://notebooklm.google.com/notebook/…",
  "session_info": {
    "age_seconds": 12,
    "message_count": 3,
    "last_activity": "2026-04-30T12:00:00.000Z"
  },
  "_provenance": {
    "provider": "google-notebooklm",
    "model": "gemini-2.5",
    "via": "chrome-automation",
    "grounding": "user-uploaded-documents",
    "ai_generated": true
  },
  "source_format": "footnotes",
  "sources": [
    { "index": 1, "title": "auth-spec.pdf", "excerpt": "Refresh tokens MUST be rotated…" }
  ]
}

sources is omitted when source_format=none or when no citations were found.


add_source — new in v2

Add a source to a notebook. v2 supports type=url (web crawl) and type=text (paste). File / YouTube / Drive uploads are not supported.

Parameters

NameTypeRequiredNotes
typeurl | textyes
contentstringyesURL when type=url, raw text when type=text.
titlestringnoOptional display title. NotebookLM picks a default.
session_idstringnoReuse an existing browser session.
notebook_idstringnoLibrary notebook ID.
notebook_urlstringnoAd-hoc URL. Overrides notebook_id.

Example

{
  "name": "add_source",
  "arguments": {
    "type": "url",
    "content": "https://docs.n8n.io/code/builtin/json-jmespath/",
    "title": "n8n JMESPath builtin"
  }
}

Return shape

{
  "status": "success",
  "type": "url",
  "title": "n8n JMESPath builtin",
  "source_count_before": 12,
  "source_count_after": 13,
  "added": true
}

generate_audio — new in v2

Generate a podcast-style Audio Overview for a notebook. Resolves when the audio element is ready.

Parameters

NameTypeRequiredNotes
custom_promptstringnoOptional focus prompt.
timeout_msnumbernoWait ceiling. Default 600000.
session_idstringno
notebook_idstringno
notebook_urlstringno

Example

{
  "name": "generate_audio",
  "arguments": {
    "custom_prompt": "Focus on the migration strategy",
    "timeout_ms": 900000
  }
}

Return shape

{
  "status": "success",
  "ready": true,
  "duration_ms": 412000
}

Pair with download_audio to persist the file. Video / Infographic / Slides are not in v2.0.0.


download_audio — new in v2

Download the most recent Audio Overview to disk.

Parameters

NameTypeRequiredNotes
destination_dirstringyesAbsolute directory. Created if missing.
session_idstringno
notebook_idstringno
notebook_urlstringno

Example

{
  "name": "download_audio",
  "arguments": {
    "destination_dir": "/Users/me/Downloads/notebooklm"
  }
}

Return shape

{
  "status": "success",
  "file_path": "/Users/me/Downloads/notebooklm/overview-2026-04-30.wav",
  "size_bytes": 9_412_000
}

Run generate_audio first if no Audio Overview exists yet.


add_notebook

Add a NotebookLM share-URL to the local library. The tool description enforces a confirmation workflow on the host agent — do not call without explicit user consent.

Parameters

NameTypeRequiredNotes
urlstringyesNotebookLM share URL.
namestringyesDisplay name.
descriptionstringyesShort description of the notebook content.
topicsstring[]yesTopics covered.
content_typesstring[]noe.g. ["documentation", "examples"].
use_casesstring[]noWhen to consult this notebook.
tagsstring[]noOptional organizational tags.

Return shape

{
  "status": "added",
  "id": "nb_abcd",
  "name": "n8n Documentation",
  "active": true
}

list_notebooks

No parameters. Returns the full library.

Return shape

{
  "active_notebook_id": "nb_abcd",
  "notebooks": [
    {
      "id": "nb_abcd",
      "name": "n8n Documentation",
      "url": "https://notebooklm.google.com/notebook/…",
      "description": "n8n core + builtin nodes",
      "topics": ["workflow automation", "n8n"],
      "use_cases": ["building n8n workflows"],
      "tags": ["docs"],
      "use_count": 42
    }
  ]
}

get_notebook

NameTypeRequired
idstringyes

Returns one entry from list_notebooks.


select_notebook

Set a notebook as the active default.

NameTypeRequired
idstringyes

Return shape

{ "status": "active", "id": "nb_abcd", "name": "n8n Documentation" }

update_notebook

NameTypeRequired
idstringyes
namestringno
descriptionstringno
topicsstring[]no
content_typesstring[]no
use_casesstring[]no
tagsstring[]no
urlstringno

Returns the updated entry.


remove_notebook

Removes the entry from the local library only — does not delete the notebook in NotebookLM.

NameTypeRequired
idstringyes

search_notebooks

Searches name, description, topics, tags.

NameTypeRequired
querystringyes

Returns an array of matching entries.


get_library_stats

No parameters. Returns total notebooks, total queries, top-used notebooks.


list_sessions

No parameters. Returns active sessions with age, message count, last-activity timestamp.


close_session

NameTypeRequired
session_idstringyes

reset_session

Clears chat history while keeping the same session_id.

NameTypeRequired
session_idstringyes

get_health

No parameters.

Return shape

{
  "status": "ok",
  "authenticated": true,
  "active_sessions": 1,
  "version": "2.0.0",
  "config": {
    "headless": true,
    "stealth_enabled": true,
    "max_sessions": 10,
    "answer_timeout_ms": 600000
  }
}

When authenticated=false the response also carries a troubleshooting_tip pointing at setup_auth / cleanup_data.


setup_auth

Opens a visible Chrome for first-time Google login.

NameTypeRequiredNotes
show_browserboolnoDefault true for setup.
browser_optionsobjectnoSame shape as ask_question.

Returns immediately after the window is opened. The user has up to 10 minutes to complete the login. Verify with get_health afterwards.


re_auth

Closes all sessions, deletes saved cookies + Chrome profile, opens a fresh login window.

NameTypeRequiredNotes
show_browserboolnoDefault true.
browser_optionsobjectno

cleanup_data

Categorised preview + delete of every NotebookLM MCP file the server can find on the system. Designed for fresh-start workflows.

NameTypeRequiredNotes
confirmboolyesfalse = preview only. true = delete after preview was reviewed.
preserve_libraryboolnoKeep library.json while wiping everything else. Default false.

Workflow:

  1. cleanup_data({ confirm: false, preserve_library: true }) — see what will be deleted.
  2. Close all Chrome instances.
  3. cleanup_data({ confirm: true, preserve_library: true }) — execute.

Resources (read-only)

URIPurpose
notebooklm://libraryJSON view of the full library.
notebooklm://library/{id}One notebook by ID. The {id} template autocompletes from the library.
notebooklm://metadataDeprecated. Use notebooklm://library instead.

The MCP server does not respond to mcp://notebooklm — that URI scheme never existed. Use notebooklm://.