Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NLM_PROFILE_DIRNoOverride the OS user-data directory for saving the Google session.OS default user-data directory

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
notebook_listA

List notebooks visible to the signed-in Google account.

Returns { id, title, icon, source_count, updated_at, url, ownership }. ownership is "mine" (user-created) or "shared" (subscribed/public).

Known limitation: wXbhsf returns the user's most-recent owned notebook only. Bulk pagination for many owned notebooks isn't yet discovered.

notebook_createA

Create a brand-new, empty notebook. Returns { id, title, url }.

Uses NotebookLM's CCqFvf RPC, which always creates a fresh notebook (unlike the idempotent "get recent draft" endpoint). title is accepted but NotebookLM's create RPC produces an untitled notebook; it will auto-title once sources are added.

notebook_deleteA

Delete a notebook permanently. Returns { id, deleted: True }.

Irreversible — NotebookLM has no trash/undo. Caller confirms.

notebook_queryA

Ask a question inside a notebook and return the grounded answer.

The exchange is persisted in the NotebookLM web UI's chat history. Returns { answer, source_count, session_ids, chunks }.

notebook_share_publicB

Toggle the public share link on a notebook. Returns the share URL when enabled.

notebook_share_inviteA

Invite collaborators by email to a notebook.

source_addA

Add a source to a notebook and return { id, title, word_count }.

  • kind="text": value is the raw text to paste. title defaults to "붙여넣은 텍스트" (NotebookLM's own default).

  • kind="url": value is a webpage URL. NotebookLM fetches + extracts the content server-side; title is ignored (NotebookLM uses the page's own ).

Not yet implemented: drive, file.

source_sync_driveB

Refresh Drive-linked sources. If source_id is None, refresh all.

source_get_contentB

Return the extracted text/metadata of a single source.

studio_createA

Start generating a Studio artifact (audio/podcast by default).

Returns immediately with { artifact_id, status, title } — generation is asynchronous and typically takes 2-5 minutes. Poll download_artifact to check progress and retrieve the file when complete.

Currently implemented: audio (Audio Overview / podcast). Other artifact types (video, slides, etc.) raise NotImplementedError.

studio_reviseA

Revise an existing slide deck (and any revisable artifact) with new instructions.

download_artifactA

Check an artifact's status and, if complete, download it to disk.

If artifact_id is None, returns the most recent artifact in the notebook. Returns { artifact_id, status, title, duration_sec, path?, mime? }. path is only present when download succeeded.

research_startA

Kick off NotebookLM's Discover (Fast Research) flow on a topic.

Returns { query, sources: [{ url, title, description }, ...] }.

The candidate sources are NOT automatically added to the notebook. Use source_add(kind="url", value=<chosen_url>) to import selected ones.

Requires an EMPTY notebook — NotebookLM disables Discover once the notebook has content. Create one with notebook_create first if needed.

research_and_askA

One-shot: create ephemeral notebook → research → import sources → Q&A.

Full workflow wrapped in a single call:

  1. Create a fresh empty notebook.

  2. research_start(topic) → candidate URLs.

  3. Import the top max_sources URLs as sources.

  4. For each question in questions, run notebook_query.

  5. If keep_notebook is False (default), delete the notebook.

Returns { notebook_id, # str if kept, None if deleted topic, sources_imported, # [{url, title, word_count}, ...] qa, # [{question, answer, source_count, chunks}, ...] kept, # bool }

cross_notebook_queryA

Ask the same question across multiple notebooks and return per-notebook answers.

Returns { question, results: { : { answer, source_count, session_ids, chunks } | { error: }, ... }, ok_count, error_count, }

Per-notebook failures (no sources, RPC errors) are captured in error so one bad notebook doesn't abort the fan-out.

batchB

Run a single tool operation across many notebooks (e.g. operation="notebook_query").

pipelineA

Run a sequence of tool invocations. Each step: { tool, params }.

Output of step N is available as $prev inside step N+1's params.

tagA

Add/remove tags on one or more notebooks. mode in {"add","remove","set"}.

refresh_authA

Re-validate the stored Google session. Returns { logged_in: bool, email?: str }.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gracelee087/notebooklm-mcp-lisa'

If you have feedback or need assistance with the MCP directory API, please join our Discord server