nblm-mcp
nblm-mcp
Google NotebookLM(2026년 7월 Gemini Notebook으로 리브랜딩)에 AI 에이전트가 접근할 수 있게 해주는 MCP 서버입니다: 노트북을 나열하고 생성하고, 소스를 관리하고, 해당 소스에서 인용과 함께 답변되는 질문을 하고, 오디오 개요, 브리핑 문서, 퀴즈, 마인드 맵 같은 Studio 아티팩트를 생성합니다.
핵심은 근거 기반(grounding)입니다. NotebookLM은 사용자가 제공한 자료에서만 답변하므로, ask를 호출할 수 있는 에이전트는 추측 대신 사용자 자신의 문서에서 인용된 답변을 얻습니다. 그리고 Gemini가 서버 측에서 읽기를 수행하므로 자체 컨텍스트 토큰이 들지 않습니다.
⚠️ 비공식 — 먼저 읽어주세요
Google에는 NotebookLM용 공개 소비자 API가 없습니다. 이 서버는 notebooklm.google.com UI가 호출하는 동일한 비공개 웹 엔드포인트를 구동하며, MIT 라이선스
notebooklm-py라이브러리를 통해 사용자 자신의 브라우저 세션 쿠키로 인증합니다.
Google과 제휴하거나 보증하지 않습니다.
내부 API는 예고 없이 변경되어 이 서버를 손상시킬 수 있습니다.
사용자 Google 계정의 속도 제한과 일일 Studio 할당량이 적용됩니다.
자동화에 편한 계정을 사용하세요. 개인 프로젝트, 연구, 프로토타입에 가장 적합합니다.
Google은 Gemini Notebook Enterprise용 공식 API를 문서화합니다. 해당 기능이 있는 Workspace/Cloud 조직이라면 이 서버보다 공식 API를 우선 사용하세요.
설치
아직 PyPI에 없습니다 — 이 저장소에서 바로 설치하세요. uvx가 요청 시 빌드하고 실행하므로 수동으로 업데이트할 것이 없습니다:
uvx --from git+https://github.com/Diego-Dev-Moros/nblm-mcp nblm-mcpRelated MCP server: NotebookLM MCP Server
한 번 로그인
로그인에는 auth 추가 기능(Playwright)과 키보드 앞의 사람이 필요합니다:
uvx --from "nblm-mcp[auth] @ git+https://github.com/Diego-Dev-Moros/nblm-mcp" nblm-mcp-login브라우저 창이 열립니다. 평소처럼 NotebookLM에 로그인하세요. 세션 쿠키는 ~/.notebooklm/ 아래에 저장됩니다(notebooklm-py가 사용하는 것과 동일한 프로필 구조이므로 기존 notebooklm login도 작동합니다). MCP 서버는 자체적으로 로그인하지 않습니다 — MCP 호스트가 제공할 수 없는 대화형 브라우저가 필요합니다.
Playwright에 아직 브라우저가 없으면 먼저 playwright install chromium을 실행하세요.
쿠키는 만료됩니다. 만료되면 도구가 인증 오류를 반환하기 시작합니다. 로그인 명령을 다시 실행하세요.
클라이언트에 연결
Claude Code — -s user를 사용하면 모든 프로젝트에서 사용할 수 있습니다:
claude mcp add notebooklm -s user -- \
uvx --from git+https://github.com/Diego-Dev-Moros/nblm-mcp nblm-mcpClaude Desktop — claude_desktop_config.json에 다음을 추가하고 앱을 다시 시작하세요(macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\, Linux: ~/.config/Claude/):
{
"mcpServers": {
"notebooklm": {
"command": "uvx",
"args": ["--from", "git+https://github.com/Diego-Dev-Moros/nblm-mcp", "nblm-mcp"]
}
}
}Claude Desktop은 GUI에서 실행되므로 셸의 PATH를 상속하지 않습니다. 서버가 시작되지 않으면 "uvx"를 절대 경로(which uvx, 일반적으로 ~/.local/bin/uvx)로 바꾸세요.
어느 쪽이든 에이전트에게 auth_status를 호출하도록 요청하여 작동을 확인하세요.
도구
도구 | 기능 |
| 실제 요청으로 저장된 세션을 검증합니다. 다시 로그인해야 하는지 알려줍니다. |
| 계정이 접근할 수 있는 모든 노트북을 ID와 소스 수와 함께 나열합니다. |
| 하나의 노트북과 그 소스, 선택적으로 NotebookLM 자체 요약을 반환합니다. |
| 빈 노트북을 생성합니다. |
| 노트북과 그 안의 모든 것을 삭제합니다. |
| 노트북의 소스와 처리 상태를 표시합니다. |
| URL(웹, YouTube, Drive), 붙여넣은 텍스트 또는 로컬 파일에서 소스 하나를 추가합니다. |
| 소스를 제거합니다. |
| 노트북에 질문합니다. 답변과 소스 제목으로 확인된 인용을 반환합니다. |
| 노트북 대화의 과거 질문/답변 턴을 표시합니다. |
| 생성된 Studio 아티팩트와 상태를 표시합니다 — 실행 중인 생성 작업을 폴링하는 방법이기도 합니다. |
| 오디오, 비디오, 보고서, study_guide, quiz, flashcards, infographic, slide_deck 또는 mind_map을 생성합니다. |
| 완료된 아티팩트를 서버가 실행 중인 머신의 파일로 다운로드합니다. |
동작 참고 사항
파괴적 도구는 게이트가 있습니다.
delete_notebook과delete_source는confirm=true없이는 실행을 거부하므로 잘못된 도구 호출이 노트북을 파괴할 수 없습니다.생성은 느리고 할당량 제한이 있습니다.
generate_artifact는 작업이 대기열에 들어가면 즉시 반환하고(wait=false, 기본값) 에이전트에게list_artifacts를 폴링하라고 알려줍니다. 대신wait=true를 전달하면 차단됩니다.NBLM_GENERATION_TIMEOUT초까지 기다립니다.파일 경로는 서버 측입니다.
add_source(file_path=...)와download_artifact는 MCP 서버가 실행 중인 호스트에서 읽고 쓰며, 이는 사용자의 채팅 클라이언트가 실행되는 곳과 반드시 같지는 않습니다.
구성
모두 선택 사항입니다 — .env.example을 참조하세요. 작업 디렉토리에 .env가 있으면 로드됩니다.
변수 | 기본값 | 용도 |
| 활성 프로필 | 여러 Google 계정에 대해 사용할 저장된 로그인을 지정합니다. |
| 프로필에서 확인 |
|
|
|
|
|
|
|
|
| 새 소스가 처리를 완료할 때까지 기다리는 시간(초). |
개발
uv venv && uv pip install -e ".[dev]"
uv run pytest
uv run ruff check src tests테스트 스위트는 인메모리 가짜 클라이언트에 대해 도구를 실행합니다 — Google에 접촉하지 않으므로 어디서든 안전하고 빠르게 실행할 수 있습니다.
선행 작업
notebooklm-py가 어려운 부분 — 비공개 batchexecute 프로토콜의 리버스 엔지니어링과 유지보수 —을 담당하고 자체적으로 더 큰 MCP 서버를 제공합니다. 이 프로젝트는 그 라이브러리 위에 더 작고 의견이 반영된 도구 표면입니다: 더 적은 도구, 파괴적 작업에 대한 확인 게이트, 인용이 확인된 답변.
라이선스
MIT — LICENSE를 참조하세요.
Available Tools
13 toolsadd_sourceA
Add one source to a notebook, from a URL, pasted text, or a local file.
Pass exactly one of url, text, or file_path.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Web page, YouTube video, or Google Docs/Slides link to ingest. | |
| text | No | Raw text to paste as a source. Requires `title`. | |
| wait | No | Block until the source finishes processing so it is usable immediately. Turn off for bulk imports and poll list_sources. | |
| title | No | Display title. Required for `text`, optional otherwise. | |
| file_path | No | Absolute path to a local file (PDF, txt, md, audio...). Read from the machine running this server, not the user's client. | |
| notebook_id | Yes | Notebook to add the source to. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and it only partially does so. It implies a mutation on a notebook but says nothing about permissions, duplicate handling, or processing latency; the wait/blocking behavior is documented only in the schema description, not the tool description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose first then the critical constraint, with zero filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full schema and an output schema present, the description need not cover return values or parameter formats, and it covers the core action plus the exclusivity rule. It leaves gaps only around invocation behavior (latency, permissions) that a no-annotation mutation tool arguably warrants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description contributes the mutual-exclusion constraint among url/text/file_path that the schema itself does not encode. That is real added meaning beyond the per-parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (add) and resource (source to a notebook) and enumerates the three accepted input modalities (URL, pasted text, local file). This cleanly separates it from sibling list_sources and delete_source without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction 'Pass exactly one of url, text, or file_path' is a genuine usage rule that is not enforced by the schema (which only sets additionalProperties: false and does not declare a oneOf), so it adds value. However, there is no guidance on when to choose this tool over siblings, nor when to prefer one input modality over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
askA
Ask a notebook a question and get an answer grounded in its sources.
The answer comes from Gemini reading the notebook's own sources, with citations back to them — use this instead of summarizing the sources yourself when a notebook already holds the material.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | Natural-language question. Specific questions cite better than broad ones. | |
| source_ids | No | Restrict the answer to these sources. Omit to use all. | |
| notebook_id | Yes | The notebook to query. | |
| conversation_id | No | Continue a specific conversation. Omit to continue the notebook's current one, matching the web UI. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, and it does disclose the key mechanism: the answer is produced by Gemini reading the notebook's own sources and is returned with citations. It says nothing about latency, cost, persistence of the Q&A, or auth requirements, so it is only partially transparent for a query tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and immediately followed by the grounding/citation guarantee and the when-to-use rule. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the description covers the mechanism, grounding, and citations an agent needs to trust the result. Only minor gaps remain around cost/latency and whether the interaction is persisted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains notebook_id, source_ids scoping, conversation_id continuation, and the 'specific questions cite better' hint. The description adds no parameter meaning beyond that, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('ask') and resource ('a notebook'), plus states the output is an answer 'grounded in its sources' with citations, which is concrete and distinguishable from sibling listing/generation tools like list_sources or generate_artifact. It stops short of naming any sibling it competes with, so the differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage condition — 'use this instead of summarizing the sources yourself when a notebook already holds the material' — which tells the agent when this beats doing the work manually. No explicit exclusions or named alternative tools are provided, so it lands at 'clear context, no exclusions' rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_statusA
Check whether this server has a working NotebookLM session.
Call this first when any other tool reports an auth problem. It performs a real (cheap) request, so it distinguishes "no cookies stored" from "cookies stored but expired".
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: it makes a real (cheap) network request and can distinguish 'no cookies stored' from 'cookies stored but expired'. It does not mention permissions, rate limits, or failure modes, but for a diagnostic probe this is substantive disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose before the routing advice and the behavioral caveat. Every sentence adds information; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. For a zero-parameter diagnostic tool, the description supplies everything needed to call it correctly: what it checks, when to call it, and that it costs a real request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the 4 baseline applies. The prose adds no parameter detail, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: checks whether the server has a working NotebookLM session. It is unmistakably distinct from every sibling (which act on notebooks, sources, artifacts, or chat), so an agent can identify it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger condition: call it first when any other tool reports an auth problem. It does not state the inverse (e.g., that it need not be called before routine operations), so it is clear context without full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_historyB
Read past question/answer turns for a notebook's current conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of turns to return, newest conversation first. | |
| notebook_id | Yes | The notebook whose conversation to read. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it supplies almost nothing beyond the word "Read." It does not state read-only guarantees, auth/permission requirements, ordering behavior, or what happens when the conversation is empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and scope are stated in the first few words and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and both parameters are documented. The only shortfall is the absence of any safety/behavioral note, which matters more here because there are no annotations to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both notebook_id and limit fully documented in-schema (including the newest-first ordering), so the baseline is 3. The description's "current conversation" phrasing adds only marginal scope nuance over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ("Read") with a specific resource ("past question/answer turns") scoped to "a notebook's current conversation." That is enough to distinguish it from siblings like ask or get_notebook, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the "current conversation" framing suggests using it alongside ask to recover prior turns, but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent must infer the trigger condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_notebookA
Create an empty notebook.
A notebook with no sources cannot answer questions — follow up with add_source before calling ask.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Display title for the new notebook. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a non-obvious behavioral trait: the created notebook starts empty and is functionally useless for answering questions until sources are added. It omits any mention of permissions/auth or duplicate-title behavior, but the key post-condition is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the operation is stated first and the follow-up prerequisite second. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers the essential behavior for a simple one-parameter creation tool. The only missing pieces are permission/error context, which is minor at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter (title) and schema description coverage is 100%, so the schema already explains it fully. The description adds no format, length, or uniqueness constraints beyond the schema, which is the baseline-3 situation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create an empty notebook') and immediately qualifies the result as empty, which tells an agent what state the object will be in. It does not name a sibling to contrast with, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: an empty notebook cannot answer questions, so call add_source before ask. That is real workflow guidance tying this tool to the next step. It lacks an explicit 'when not to use' clause or a comparison against list_notebooks/get_notebook, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_notebookA
Permanently delete a notebook and everything in it.
This cannot be undone and deletes the notebook's sources, chats, and generated artifacts along with it.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true. The guard exists so a mistaken tool call cannot destroy a notebook; ask the user before setting it. | |
| notebook_id | Yes | The notebook to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it explicitly says the deletion is permanent, cannot be undone, and cascades to sources, chats, and generated artifacts. It omits permissions/authorization requirements and the confirmation ceremony, though the latter is covered by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both front-loaded, with the irreversible nature placed immediately after the core action. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the destructive scope is fully described. The only gap is the absence of any authorization or prerequisite context for a permanently destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both notebook_id and the confirm guard, including the instruction to ask the user. The description adds no parameter-level detail beyond what structured fields provide, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a precise verb and resource ('delete_notebook') and specifies the blast radius ('everything in it', enumerated as sources, chats, and generated artifacts). This is enough to separate it from delete_source without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states no conditions for when to use this tool, no prerequisites, and never points to alternatives such as delete_source for removing a single source. It conveys only that the action is destructive, which is informational rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sourceC
Remove a source from a notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true. Removing a source also drops the citations that point at it, so ask the user first. | |
| source_id | Yes | The source to remove, from list_sources. | |
| notebook_id | Yes | The notebook holding the source. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says 'Remove' but omits that citations pointing at the source are dropped and that confirmation is required; those details live only in the schema's confirm parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is appropriately sized, though for a destructive action it is perhaps under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the input schema covers the required confirm flag and its consequences, so an agent has key operational details. However, the description itself adds almost no usage or behavioral context for a destructive removal tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameters are richly documented (including the confirm requirement and citation consequence), so the baseline is 3. The description adds no additional parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with its scope: removing a source from a notebook. This distinguishes it from the sibling add_source, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance or alternatives. The schema's confirm parameter says to ask the user first, but the description itself gives none of that routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_artifactB
Download a completed Studio artifact to a file on the server host.
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_id | Yes | The artifact to download, from list_artifacts. | |
| notebook_id | Yes | The notebook holding the artifact. | |
| output_path | No | Destination path. A bare filename lands in the configured download directory; omit it to name the file after the artifact. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the key behavioral trait that the file is written to the server host rather than returned to the caller, but says nothing about overwrite behavior, required permissions, or error handling for incomplete artifacts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the action and destination are both established immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the parameters are fully documented. However, for a tool with no annotations that writes a file to a host, the description omits permission requirements and overwrite semantics, leaving gaps an agent would want covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and output_path's path-resolution rules are already documented in the schema. The description adds only the 'server host' framing, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Download) and resource (Studio artifact) plus the destination (a file on the server host). It clearly separates itself from list_artifacts and generate_artifact, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'completed' hints that only finished artifacts are downloadable, but there is no explicit when-to-use, prerequisite, or alternative (e.g., list_artifacts to find the artifact) guidance. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_artifactA
Generate a Studio artifact (podcast, report, quiz, mind map...).
Generation runs server-side and is slow — an audio overview commonly takes several minutes — and it consumes the account's daily Studio quota. Prefer the default wait=false and poll with list_artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | One of audio, video, report, study_guide, quiz, flashcards, infographic, slide_deck, mind_map. | |
| wait | No | Block until the artifact is ready (or the configured timeout elapses) instead of returning as soon as it is queued. | |
| language | No | BCP-47 language code for the output, e.g. "en", "es". | en |
| quantity | No | quiz/flashcards only — fewer, standard, or more. | |
| difficulty | No | quiz/flashcards only — easy, medium, or hard. | |
| source_ids | No | Restrict generation to these sources. Omit to use all. | |
| notebook_id | Yes | Notebook whose sources feed the generation. | |
| audio_format | No | audio only — deep_dive, brief, critique, or debate. | |
| audio_length | No | audio only — short, default, or long. | |
| instructions | No | Free-text steer for the output ("focus on the pricing section", "explain it for beginners"). | |
| report_format | No | report only — briefing_doc, study_guide, or blog_post. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses that generation is server-side, slow (audio can take minutes), and consumes the account's daily Studio quota. It stops short of covering auth requirements or failure behavior when the quota is exhausted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences: purpose first, then cost/latency, then the recommended call pattern. Every sentence carries load and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be explained, and all 11 parameters are schema-documented; the description supplies the missing quota and latency context plus the preferred invocation pattern. Only auth/prerequisite and failure-mode details are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (including wait, kind, and the kind-conditional options) is already documented in the schema. The description adds meaning to wait by pairing it with the polling workflow, but adds nothing else beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Generate) and resource (Studio artifact) and enumerates concrete artifact types (podcast, report, quiz, mind map), which lets an agent distinguish it from sibling read tools like list_artifacts and download_artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit operational guidance: prefer wait=false and poll with list_artifacts rather than blocking. It names the alternative tool and the condition that selects it, but says nothing about when NOT to use this tool (e.g., versus ask).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notebookC
Get one notebook with its sources.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | The notebook id, as returned by list_notebooks. | |
| include_summary | No | Also fetch NotebookLM's own generated summary of the notebook. Costs an extra round-trip and can be slow on large notebooks, so it is off by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it says almost nothing: no permission requirements, no error behavior for an invalid or missing notebook_id, no mention that the sources payload may be large. 'With its sources' hints at return content, but the output schema already covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is efficient, though arguably under-specified rather than genuinely well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read tool with a full output schema and 100%-covered parameters, the description is minimally sufficient. The missing piece is routing guidance against list_notebooks/list_sources and any note on behavior when the id is unknown.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: notebook_id is tied to list_notebooks output and include_summary's cost/latency tradeoff is fully documented in the schema. The description adds nothing for either parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get one notebook') and adds scope detail ('with its sources') that distinguishes it from list_notebooks. It stops short of naming the sibling explicitly, but the singular 'one' makes the contrast inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this tool versus list_notebooks, list_sources, or ask. The only implicit guidance is that a notebook_id must already be known, which is not stated in the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_artifactsA
List generated Studio artifacts in a notebook.
Use this to poll a generation started with wait=false: the artifact reports
status: completed when it is ready to download.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter by type — audio, video, report, quiz, flashcards, mind_map, infographic, slide_deck, or data_table. | |
| notebook_id | Yes | The notebook to inspect. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It helpfully discloses that artifacts expose a status field that flips to 'completed' — a real behavioral detail beyond the schema. However, it omits any mention of pagination, ordering, or permission requirements for a list endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed immediately by the polling use case. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter list tool with a full output schema and 100% schema coverage, the description supplies the key missing operational context (the polling workflow). It is close to complete; only ordering/pagination expectations are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both notebook_id and the kind filter's enumerated values are documented in the schema itself. The description adds nothing about parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource+scope: listing generated Studio artifacts within a notebook. It naturally separates itself from siblings like generate_artifact and download_artifact by virtue of the 'list' verb and the notebook scoping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete usage scenario — polling a generation started with wait=false — and explains the readiness signal to look for. This is clear context, but it does not state when NOT to use it or point to alternatives (e.g. download_artifact once status is completed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notebooksA
List the notebooks reachable by the signed-in Google account.
Returns id, title, and source count for each. Use the ids with every other tool — NotebookLM has no lookup by title.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a read-only, account-scoped listing and previews the returned fields, but says nothing about pagination, result limits, or ordering, which matters for a list tool that may return many notebooks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and followed by the return summary and the key routing rule. No filler and the most decision-relevant fact (ids are mandatory elsewhere) is kept.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with an output schema present, the description supplies everything needed to select and invoke it: what it lists, whose scope, what comes back, and why the result matters downstream.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so there is no parameter semantics to clarify; the baseline for a parameterless tool applies. Nothing in the description misleads about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the notebooks') plus scope ('reachable by the signed-in Google account'). It also implicitly separates itself from get_notebook and other id-based siblings by noting that ids are the required handle throughout the toolset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use the ids with every other tool' tells the agent exactly when this tool is needed as a prerequisite step. It also rules out the title-based alternative ('NotebookLM has no lookup by title'), though it doesn't give explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sourcesB
List the sources in a notebook, with their processing status.
A source that is not ready is still being ingested and will not ground
answers yet.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the meaning of processing status (non-ready sources do not ground answers), but it omits permissions, ordering, and pagination details for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded, with no filler. The second sentence efficiently explains the status semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an existing output schema and a single self-evident notebook_id parameter, the description covers the tool's core purpose and status behavior sufficiently for correct invocation. The main gap is the undocumented notebook_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, notebook_id, has 0% schema description coverage, and the description merely says 'in a notebook' without defining the identifier format or where to obtain it. It adds almost no semantic meaning beyond the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('sources in a notebook') plus the processing-status dimension. It does not explicitly contrast itself with siblings like list_notebooks or add_source, but the scope is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining that non-ready sources are still being ingested and will not ground answers. However, it does not say when to prefer this over alternatives or what a caller should do with the returned statuses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v0.1.0- First observed
add_source - First observed
ask - First observed
auth_status - First observed
chat_history - First observed
create_notebook - First observed
delete_notebook - First observed
delete_source - First observed
download_artifact - First observed
generate_artifact - First observed
get_notebook - First observed
list_artifacts - First observed
list_notebooks - First observed
list_sources
TDQS
Scored across 13 tools
Most tools target a distinct resource+action (notebook CRUD, source add/delete/list, artifact generate/list/download, ask, auth). Minor overlap between get_notebook (returns notebook with sources) and list_sources (sources with processing status), but descriptions clarify the difference.
Strong verb_noun pattern for most tools (add_source, list_notebooks, create_notebook, list_artifacts, generate_artifact, download_artifact). A few deviations—ask (bare verb), chat_history and auth_status (noun phrases)—but overall readable and predictable.
13 tools is well-scoped for the NotebookLM domain, cleanly grouped into notebooks, sources, artifacts, and query/auth concerns. Each tool earns its place with no filler.
Good CRUD/lifecycle coverage: notebook create/get/list/delete, source add/delete/list, artifact generate/list/download, plus ask, chat_history, and auth_status. Minor gaps like notebook rename/update and source update, but core workflows are covered.
Maintenance
Related MCP Connectors
Google NotebookLM via natural language: create notebooks, add sources (PDF, URL, YouTube) and ask gr
- backrowOAuthai.backrow
Turn any recording or document into notes, flashcards and quizzes your agent can read and act on
Cited, versioned knowledge for agents: retrieve sourced passages and propose owner-approved fixes.
- KnowtisOAuthapp.knowtis
Create, search and manage Knowtis collaborative notes from AI assistants.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI agents to query and interact with Google NotebookLM notebooks to retrieve citation-backed information. It provides tools for listing notebooks, accessing source data, and asking natural language questions.11-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to programmatically access Google NotebookLM through browser automation for managing notebooks, sources, and chat interactions. It supports automated content generation including audio overviews, study guides, and quizzes directly within AI workflows.381 npmMIT
- AlicenseBqualityBmaintenanceEnables AI agents to interact with Google NotebookLM for grounded, hallucination-free answers through notebook management, source management, research, and generation tools.29381 npm39MIT
- AlicenseBqualityAmaintenanceEnables AI assistants to programmatically interact with Google NotebookLM, allowing them to create and manage notebooks, add sources, query content, generate audio/video, and perform research tasks through natural language commands.5319,474 PyPI6,246MIT