NotebookLM MCP Server
Integration with Google's NotebookLM service for creating and managing notebooks, adding sources, generating podcasts, and more via both personal and enterprise modes.
Integration for adding Google Drive files as sources to NotebookLM notebooks, with syncing capabilities.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NotebookLM MCP ServerGenerate a podcast from my latest notebook"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NotebookLM CLI & MCP Server — Enterprise + Personal

This is an enterprise-focused fork of jacob-bd/notebooklm-mcp-cli. It adds full support for NotebookLM Enterprise (
notebooklm.cloud.google.com) via the official Discovery Engine REST API, while keeping all personal-mode features intact. If you only use personal NotebookLM, the upstream repo is the right choice. If you have a Google Workspace enterprise account, you're in the right place.
What this fork adds over upstream
Addition | Details |
Enterprise REST API client | Official Discovery Engine API — not reverse-engineered batchexecute |
GCP OAuth2 authentication |
|
| Switch personal ↔ enterprise from within Claude, with auth pre-checks |
Paywall detection | URL sources checked for login/subscription walls before adding |
Per-URL batch fault isolation | One bad URL in a batch no longer fails the entire batch |
Standalone Podcast API | Generate podcasts from raw text — no notebook required |
Persistent config |
|
All personal-mode features (chat, video, reports, flashcards, research, sharing, etc.) are fully preserved.
Programmatic access to Google NotebookLM — via command-line interface (CLI) or Model Context Protocol (MCP) server. Supports both Personal and Enterprise accounts.
📺 Watch the Demos
Note: The demos below are from the upstream project (jacob-bd/notebooklm-mcp-cli) and show personal mode features. All commands and MCP tools work identically in this fork — enterprise mode adds on top of everything shown here.
Latest
Codex Setup + Cinematic Video & Slides |
|
MCP Demos
General Overview | Claude Desktop | Perplexity Desktop | MCP Super Assistant |
|
|
|
|
CLI Demos
CLI Overview | CLI, MCP & Skills | Setup, Doctor & mcpb | Infographics Support |
|
|
|
|
Two Ways to Use
🖥️ Command-Line Interface (CLI)
Use nlm directly in your terminal for scripting, automation, or interactive use:
nlm notebook list # List all notebooks
nlm notebook create "Research Project" # Create a notebook
nlm source add <notebook> --url "https://..." # Add sources
nlm audio create <notebook> --confirm # Generate podcast
nlm download audio <notebook> <artifact-id> # Download audio file
nlm share public <notebook> # Enable public linkRun nlm --ai for comprehensive AI-assistant documentation.
🤖 MCP Server (for AI Agents)
Connect AI assistants (Claude, Gemini, Cursor, etc.) to NotebookLM:
# Automatic setup — picks the right config for each tool
nlm setup add claude-code
nlm setup add gemini
nlm setup add cursor
nlm setup add cline
nlm setup add antigravity
# Generate JSON config for any other tool
nlm setup add jsonThen use natural language: "Create a notebook about quantum computing and generate a podcast"
Related MCP server: notebooklm-mcp-2026
Features
Capability | CLI Command | MCP Tool |
List notebooks |
|
|
Create notebook |
|
|
Add Sources (URL, Text, Drive, File) |
|
|
Query notebook (persists to web UI) |
|
|
Create Studio Content (Audio, Video, etc.) |
|
|
Revise slide decks |
|
|
Download artifacts |
|
|
Web/Drive research |
|
|
Share notebook |
|
|
Sync Drive sources |
|
|
Batch operations |
|
|
Cross-notebook query |
|
|
Pipelines (multi-step workflows) |
|
|
Tag & smart select |
|
|
Configure AI tools |
| — |
Install AI Skills |
| — |
Diagnose issues |
| — |
📚 More Documentation:
CLI Guide — Complete command reference
MCP Guide — All 35 MCP tools with examples
Authentication — Setup and troubleshooting
API Reference — Internal API docs for contributors
Important Disclaimer
This MCP and CLI use internal APIs that:
Are undocumented and may change without notice
Require cookie extraction from your browser (I have a tool for that!)
Use at your own risk for personal/experimental purposes.
Installation
🆕 Claude Desktop users: Download the extension (
.mcpbfile) → double-click → done! One-click install, no config needed.
Install from PyPI. This single package includes both the CLI and MCP server:
Using uv (Recommended)
uv tool install notebooklm-enterprise-mcpUsing uvx (Run Without Install)
uvx --from notebooklm-enterprise-mcp nlm --help
uvx --from notebooklm-enterprise-mcp notebooklm-mcpUsing pip
pip install notebooklm-enterprise-mcpUsing pipx
pipx install notebooklm-enterprise-mcpAfter installation, you get:
nlm— Command-line interfacenotebooklm-mcp— MCP server for AI assistants
# Clone the repository
git clone https://github.com/Robiton/notebooklm-mcp-cli.git
cd notebooklm-mcp
# Install with uv
uv tool install .Upgrading
# Using uv
uv tool upgrade notebooklm-enterprise-mcp
# Using pip
pip install --upgrade notebooklm-enterprise-mcp
# Using pipx
pipx upgrade notebooklm-enterprise-mcpAfter upgrading, restart your AI tool to reconnect to the updated MCP server:
Claude Code: Restart the application, or use
/mcpto reconnectCursor: Restart the application
Gemini CLI: Restart the CLI session
Switching from Upstream (jacob-bd/notebooklm-mcp-cli)
If you were using the upstream package and want to switch to this fork for enterprise support:
Step 1: Uninstall the upstream package
uv tool uninstall notebooklm-mcp-cli
# or: pip uninstall notebooklm-mcp-cliStep 2: Install this fork's package
uv tool install notebooklm-enterprise-mcpStep 3: Verify
uv tool list | grep notebooklm
# Should show: notebooklm-enterprise-mcp v1.0.0
# - nlm
# - notebooklm-mcpStep 4: Re-authenticate (if needed)
Your existing cookies from the upstream package should still work. If you hit auth errors:
nlm loginMCP configuration doesn't change — the executable is still called
notebooklm-mcp, so your Claude Code, Cursor, or other tool configs need no edits.
Uninstalling
To completely remove the MCP:
# Using uv
uv tool uninstall notebooklm-enterprise-mcp
# Using pip
pip uninstall notebooklm-enterprise-mcp
# Using pipx
pipx uninstall notebooklm-enterprise-mcp
# Remove cached auth tokens and data (optional)
rm -rf ~/.notebooklm-mcp-cliAlso remove from your AI tools:
nlm setup remove claude-code
nlm setup remove cursor
# ... or any configured toolWhy This Fork?
The upstream project targets personal NotebookLM accounts only. Enterprise NotebookLM (notebooklm.cloud.google.com) uses a completely different authentication system (GCP OAuth2) and a separate official REST API — it's not just a different URL.
This fork adds:
Enterprise REST API client — official Discovery Engine API, not reverse-engineered batchexecute
Persistent config —
nlm config set enterprise.mode enterprisepersists across restarts (no env var editing)configure_modeMCP tool — switch modes from within Claude with auth pre-checksPaywall detection — URL sources are checked for login/subscription walls before adding
Per-URL bulk results — one bad URL in a batch doesn't fail the whole batch
Standalone Podcast API — generate podcasts from raw text, no notebook needed
The enterprise REST API (v1alpha) covers notebooks, sources, and audio. Chat, video, reports, and other features remain personal-only — they have no documented REST endpoints. The hope is that Google promotes the API to v1 stable and expands coverage over time.
See docs/AUTHENTICATION.md for full enterprise setup instructions.
Enterprise Mode
If you use NotebookLM Enterprise (notebooklm.cloud.google.com), configure enterprise mode:
Via CLI
nlm config set enterprise.mode enterprise
nlm config set enterprise.project_id YOUR_PROJECT_NUMBER
nlm config set enterprise.location global # or "us" or "eu"Via MCP (Claude Desktop)
Ask Claude to call:
configure_mode(mode="enterprise", project_id="YOUR_PROJECT_NUMBER", location="global")Enterprise Authentication
Enterprise uses GCP OAuth2 instead of browser cookies:
gcloud auth loginSwitch Back to Personal
nlm config set enterprise.mode personalEnterprise Feature Support
Feature | Personal | Enterprise |
Notebooks (list/create/get/delete) | All | All |
Sources (add URL/text/YouTube/Drive/file) | All | All |
Audio Overview (podcast) | Yes | Yes |
Standalone Podcast API | No | Yes |
Sharing | Public + email | Email only (org-scoped) |
Chat/Query | Yes | Not in REST API |
Video, Reports, Flashcards, etc. | Yes | Not in REST API |
Environment variables (NOTEBOOKLM_MODE, NOTEBOOKLM_PROJECT_ID, NOTEBOOKLM_LOCATION) override config.toml when set.
Paywall / Login-Required URLs
When adding URL sources, the MCP checks if the URL is behind a paywall or login wall. If your organisation hosts content on an internal domain or a subscription site you have access to, add it to your approved list to skip the check:
# Approve a single domain
nlm config set sources.approved_domains '["yourcompany.com"]'
# Approve multiple domains
nlm config set sources.approved_domains '["yourcompany.com", "ft.com", "wsj.com"]'Or in the MCP, call source_add with skip_paywall_check=True to bypass for a single URL.
Authentication
Before using the CLI or MCP, you need to authenticate with NotebookLM:
CLI Authentication (Recommended)
# Auto mode: launches your browser, you log in, cookies extracted automatically
nlm login
# Check if already authenticated
nlm login --check
# Use a named profile (for multiple Google accounts)
nlm login --profile work
nlm login --profile personal
# Manual mode: import cookies from a file
nlm login --manual --file cookies.txt
# External CDP provider (e.g., OpenClaw-managed browser)
nlm login --provider openclaw --cdp-url http://127.0.0.1:18800Profile management:
nlm login --check # Show current auth status
nlm login switch <profile> # Switch the default profile
nlm login profile list # List all profiles with email addresses
nlm login profile delete <profile> # Delete a profile
nlm login profile rename <old> <new> # Rename a profileEach profile gets its own isolated browser session, so you can be logged into multiple Google accounts simultaneously.
Standalone Auth Tool
If you only need the MCP server (not the CLI):
nlm login # Auto mode (launches browser)
nlm login --manual # Manual file modeHow it works: Auto mode launches a dedicated browser profile (supports Chrome, Arc, Brave, Edge, Chromium, and more), you log in to Google, and cookies are extracted automatically. Your login persists for future auth refreshes.
Prefer a specific browser? Set it with nlm config set auth.browser chromium (or brave, arc, edge, chrome, etc.). Falls back to auto-detection if the preferred browser is not found.
For detailed instructions and troubleshooting, see docs/AUTHENTICATION.md.
MCP Configuration
⚠️ Context Window Warning: This MCP provides 35 tools. Disable it when not using NotebookLM to preserve context. In Claude Code:
@notebooklm-mcpto toggle.
Automatic Setup (Recommended)
Use nlm setup to automatically configure the MCP server for your AI tools — no manual JSON editing required:
# Add to any supported tool
nlm setup add claude-code
nlm setup add claude-desktop
nlm setup add gemini
nlm setup add cursor
nlm setup add windsurf
# Generate JSON config for any other tool
nlm setup add json
# Check which tools are configured
nlm setup list
# Diagnose installation & auth issues
nlm doctorInstall AI Skills (Optional)
Install the NotebookLM expert guide for your AI assistant to help it use the tools effectively. Supported for Cline, Antigravity, OpenClaw, Codex, OpenCode, Claude Code, and Gemini CLI.
# Install skill files
nlm skill install cline
nlm skill install openclaw
nlm skill install codex
nlm skill install antigravity
# Update skills
nlm skill updateRemove from a tool
nlm setup remove claude-codeUsing uvx (No Install Required)
If you don't want to install the package, you can use uvx to run on-the-fly:
# Run CLI commands directly
uvx --from notebooklm-enterprise-mcp nlm setup add cursor
uvx --from notebooklm-enterprise-mcp nlm loginFor tools that use JSON config, point them to uvx:
{
"mcpServers": {
"notebooklm-mcp": {
"command": "uvx",
"args": ["--from", "notebooklm-enterprise-mcp", "notebooklm-mcp"]
}
}
}Tip: Run
nlm setup add jsonfor an interactive wizard that generates the right JSON snippet for your tool.
Claude Code / Gemini CLI support adding MCP servers via their own CLI:
claude mcp add --scope user notebooklm-mcp notebooklm-mcp
gemini mcp add --scope user notebooklm-mcp notebooklm-mcpCursor / Windsurf resolve commands from your PATH, so the command name is enough:
{
"mcpServers": {
"notebooklm-mcp": {
"command": "notebooklm-mcp"
}
}
}Tool | Config Location |
Cursor |
|
Windsurf |
|
Claude Desktop / VS Code may not resolve PATH — use the full path to the binary:
{
"mcpServers": {
"notebooklm-mcp": {
"command": "/full/path/to/notebooklm-mcp"
}
}
}Find your path with: which notebooklm-mcp
Tool | Config Location |
Claude Desktop |
|
VS Code |
|
📚 Full configuration details: MCP Guide — Server options, environment variables, HTTP transport, multi-user setup, and context window management.
What You Can Do
Simply chat with your AI tool (Claude Code, Cursor, Gemini CLI) using natural language. Here are some examples:
Research & Discovery
"List all my NotebookLM notebooks"
"Create a new notebook called 'AI Strategy Research'"
"Start web research on 'enterprise AI ROI metrics' and show me what sources it finds"
"Do a deep research on 'cloud marketplace trends' and import the top 10 sources"
"Search my Google Drive for documents about 'product roadmap' and create a notebook"
Adding Content
"Add this URL to my notebook: https://example.com/article"
"Add this YouTube video about Kubernetes to the notebook"
"Add my meeting notes as a text source to this notebook"
"Import this Google Doc into my research notebook"
AI-Powered Analysis
"What are the key findings in this notebook?"
"Summarize the main arguments across all these sources"
"What does this source say about security best practices?"
"Get an AI summary of what this notebook is about"
"Configure the chat to use a learning guide style with longer responses"
(All queries sent from CLI or MCP automatically persist in your NotebookLM web UI chat history!)
Content Generation
"Create an audio podcast overview of this notebook in deep dive format"
"Generate a video explainer with classic visual style"
"Make a briefing doc from these sources"
"Create flashcards for studying, medium difficulty"
"Generate an infographic in landscape orientation with professional style"
"Build a mind map from my research sources"
"Create a slide deck presentation from this notebook"
Smart Management
"Check which Google Drive sources are out of date and sync them"
"Show me all the sources in this notebook with their freshness status"
"Delete this source from the notebook"
"Check the status of my audio overview generation"
Sharing & Collaboration
"Show me the sharing settings for this notebook"
"Make this notebook public so anyone with the link can view it"
"Disable public access to this notebook"
"Invite user@example.com as an editor to this notebook"
"Add a viewer to my research notebook"
Pro tip: After creating studio content (audio, video, reports, etc.), poll the status to get download URLs when generation completes.
Authentication Lifecycle
Component | Duration | Refresh |
Cookies | ~2-4 weeks | Auto-refresh via headless browser (if profile saved) |
CSRF Token | ~minutes | Auto-refreshed on every request failure |
Session ID | Per MCP session | Auto-extracted on MCP start |
v1.0.0+: The server now automatically handles token expiration:
Refreshes CSRF tokens immediately when expired
Reloads cookies from disk if updated externally
Runs headless browser auth if profile has saved login
You can also call refresh_auth() to explicitly reload tokens.
If automatic refresh fails (Google login fully expired), run nlm login again.
Troubleshooting
uv tool upgrade Not Installing Latest Version
Symptoms:
Running
uv tool upgrade notebooklm-enterprise-mcpinstalls an older version than expecteduv cache cleandoesn't fix the issue
Why this happens: uv tool upgrade respects version constraints from your original installation. If you initially installed an older version or with a constraint, upgrade stays within those bounds by design.
Fix — Force reinstall:
uv tool install --force notebooklm-enterprise-mcpThis bypasses any cached constraints and installs the absolute latest version from PyPI.
Verify:
uv tool list | grep notebooklm
# Should show: notebooklm-enterprise-mcp v1.0.0 (or latest)Limitations
Rate limits: Free tier has ~50 queries/day
No official support: API may change without notice
Cookie expiration: Need to re-extract cookies every few weeks
Reporting Issues
Use the GitHub Issues tab — you'll be prompted to pick the right template:
Template | Use when |
Bug — Enterprise | Something broken in enterprise mode (GCP, Discovery Engine API) |
Bug — Personal | Something broken in personal mode that's specific to this fork |
Feature Request | New capability you'd like to see |
Question | Setup help, usage questions, config issues |
Personal mode bugs that also exist in the upstream project should be filed at jacob-bd/notebooklm-mcp-cli first — fixes accepted there get cherry-picked here automatically.
Contributing
See CONTRIBUTING.md for setup instructions, PR process, and how to add new features.
A Note on This Fork
This fork started as an internal tool to fill a real gap: NotebookLM Enterprise had no programmatic access, and the upstream project (which is excellent) is scoped to personal accounts only. The enterprise implementation was built with AI assistance — I'm not a professional Python developer — so if you see something that could be done better, PRs are genuinely welcome.
The upstream project's original "vibe coding" spirit applies here too: the goal was to solve a problem, not to write a textbook. The code works, passes tests, and is production-stable enough for daily use. But experienced developers will likely see room for improvement, and that input is valuable.
See CONTRIBUTING.md for how to get involved — especially if you have enterprise NotebookLM access and can test end-to-end.
Credits
Special thanks to:
Le Anh Tuan (@latuannetnam) for contributing the HTTP transport, debug logging system, and performance optimizations.
David Szabo-Pele (@davidszp) for the
source_get_contenttool and Linux auth fixes.saitrogen (@saitrogen) for the research polling query fallback fix.
devnull03 (@devnull03) for multi-browser CDP authentication support (Arc, Brave, Edge, Chromium, Vivaldi, Opera).
VooDisss (@VooDisss) for multi-browser authentication improvements.
codepiano (@codepiano) for the configurable DevTools timeout for the auth CLI.
Tony Hansmann (@997unix) for contributing the
nlm setupandnlm doctorcommands and CLI Guide documentation.Fabiana Furtado (@fabianafurtadoff) for batch operations, cross-notebook query, pipelines, and smart select/tagging (PR #90).
License
Available Tools
41 toolsbatchA
Perform batch operations across multiple notebooks.
Actions:
query: Query multiple notebooks with the same question
add_source: Add the same source URL to multiple notebooks
create: Create multiple notebooks at once
delete: Delete multiple notebooks (IRREVERSIBLE, requires confirm=True)
studio: Generate studio artifacts across multiple notebooks
Args: action: Operation to perform (query, add_source, create, delete, studio) query: Question to ask (for action=query) source_url: URL to add (for action=add_source) titles: Comma-separated notebook titles (for action=create) artifact_type: Artifact type (for action=studio): audio, video, report, etc. notebook_names: Comma-separated notebook names or IDs tags: Comma-separated tags to select notebooks all: Apply to ALL notebooks confirm: Must be True for delete action
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| query | No | ||
| source_url | No | ||
| titles | No | ||
| artifact_type | No | audio | |
| notebook_names | No | ||
| tags | No | ||
| all | No | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description notes that delete is irreversible and requires confirm=True, but does not disclose behaviors for other actions (e.g., whether they are reversible, auth needs, or side effects). With no annotations provided, more behavioral detail would be beneficial.
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?
The description is reasonably concise with an introductory sentence and bullet-style list. It front-loads the purpose. Some redundancy could be trimmed (e.g., repeating action list in args), but overall 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?
Given the complexity (9 parameters, batch operations), the description covers actions and parameters adequately. Since an output schema exists, return values need not be explained. However, it could mention atomicity, error handling, or confirmation behavior beyond delete.
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?
With 0% schema coverage, the description explains each parameter's purpose and context (e.g., 'query: Question to ask (for action=query)'). It provides examples for artifact_type and clarifies notebook_names. However, the required 'action' parameter lacks a list of accepted values (though implied by actions list).
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 explicitly states it performs batch operations across multiple notebooks and lists specific actions (query, add_source, create, delete, studio). This clearly distinguishes it from sibling tools that operate on single notebooks.
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 lists available actions but does not provide guidance on when to use batch vs individual tools (e.g., batch delete vs notebook_delete). It lacks explicit when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_configureB
Configure notebook chat settings.
Args: notebook_id: Notebook UUID goal: default|learning_guide|custom custom_prompt: Required when goal=custom (max 10000 chars) response_length: default|longer|shorter
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| goal | No | default | |
| custom_prompt | No | ||
| response_length | No | 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 burden. It does not disclose any behavioral traits such as side effects, authorization requirements, or whether the operation is idempotent. The name implies mutation, but no explicit confirmation.
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?
The description is brief and lists parameters clearly. It front-loads the purpose. However, the format is somewhat mechanical and could be more natural without losing conciseness.
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 that an output schema exists, return values are not needed. However, the description lacks contextual completeness such as when to configure chat settings, any preconditions, or behavioral implications. It is adequate but has gaps.
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 0%, so the description compensates by detailing allowed values for goal and response_length, the conditional requirement for custom_prompt, and the max length. This adds meaning beyond the schema which only provides types and defaults.
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 clearly states 'Configure notebook chat settings', which is a specific verb+resource. It distinguishes from sibling tools like notebook_query or configure_mode by its focus on chat settings.
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 guidance on when to use this tool versus alternatives. No exclusion criteria or prerequisites mentioned, leaving the agent without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_modeA
Configure NotebookLM mode (personal or enterprise).
IMPORTANT: Enterprise and personal use SEPARATE authentication.
Enterprise: requires
gcloud auth login(GCP OAuth2)Personal: requires
nlm login(browser cookie auth) Switching modes without the correct auth will cause 400/401 errors. Always confirm the user has authenticated for the target mode before switching.
Args: mode: "personal" or "enterprise" project_id: GCP project number (required for enterprise, found in NotebookLM URL) location: GCP location - "global", "us", or "eu" (default: "global")
Returns: Dictionary with status, configuration, and auth requirements.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | personal | |
| project_id | No | ||
| location | No | global |
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 full burden. It discloses authentication requirements, potential 400/401 errors, and the return dictionary structure. However, it doesn't mention whether switching modes affects current session state beyond auth.
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?
The description is well-structured with an IMPORTANT section, bullet points, and clear Args/Returns. It is concise yet comprehensive, with no wasted words.
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 the complexity of authentication modes and three parameters, the description covers auth, parameters, and return value. It lacks details on error handling beyond auth errors, but overall completes the picture.
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?
With 0% schema description coverage, the description adds meaning for all three parameters: mode (personal/enterprise), project_id (required for enterprise, source), location (default global). It clarifies constraints not in 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 explicitly states it configures NotebookLM mode (personal or enterprise), which is a specific verb-resource pair. It distinguishes from siblings like refresh_auth or save_auth_tokens by focusing on mode switching.
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 provides explicit authentication prerequisites and warns about errors when switching modes. It doesn't list alternative tools for similar tasks but gives clear context for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_notebook_queryA
Query multiple notebooks and get aggregated answers with per-notebook citations.
Specify notebooks by name, by tags, or use all=True for all notebooks.
Args: query: Question to ask across notebooks notebook_names: Comma-separated notebook names or IDs (e.g. "AI Research, Dev Tools") tags: Comma-separated tags to select notebooks (e.g. "ai,mcp") all: Query ALL notebooks (use with caution — rate limits apply)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| notebook_names | No | ||
| tags | No | ||
| all | No |
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 must cover behavioral traits. It mentions rate limits and aggregated citations, but does not disclose whether the tool is read-only, authentication requirements, or error behavior. This is insufficient for a cross-notebook query tool.
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?
The description is concise (~80 words) and well-structured. It starts with a clear one-line summary, then lists arguments in a bullet-like format with examples. Every sentence adds value without redundancy.
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 the tool complexity (cross-notebook query) and the presence of an output schema, the description adequately covers input selection methods and gives a sense of the output (aggregated answers with citations). It does not detail the output format, but the output schema handles that.
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 0%, meaning the schema has no parameter descriptions. The tool description compensates by explaining each parameter: query as 'Question to ask across notebooks', notebook_names as 'Comma-separated notebook names or IDs', tags as 'Comma-separated tags', all as 'Query ALL notebooks'. This adds significant meaning beyond the bare type definitions.
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 clearly states 'Query multiple notebooks and get aggregated answers with per-notebook citations.' It specifies the verb (query), resource (multiple notebooks), and output (aggregated answers with citations). This differentiates it from sibling tools like 'notebook_query' which likely queries a single notebook.
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 provides three selection methods (by name, tags, all=True) and warns about rate limits for all=True. While it gives good context on when to use each option, it does not explicitly compare to alternatives like 'notebook_query' for single notebook queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_artifactA
Download any NotebookLM artifact to a file.
Unified download tool replacing 9 separate download tools. Supports all artifact types: audio, video, report, mind_map, slide_deck, infographic, data_table, quiz, flashcards.
Args: notebook_id: Notebook UUID artifact_type: Type of artifact to download: - audio: Audio Overview (MP4/MP3) - video: Video Overview (MP4) - report: Report (Markdown) - mind_map: Mind Map (JSON) - slide_deck: Slide Deck (PDF or PPTX) - infographic: Infographic (PNG) - data_table: Data Table (CSV) - quiz: Quiz (json|markdown|html) - flashcards: Flashcards (json|markdown|html) output_path: Path to save the file artifact_id: Optional specific artifact ID (uses latest if not provided) output_format: For quiz/flashcards only: json|markdown|html (default: json) slide_deck_format: For slide_deck only: pdf (default) or pptx
Returns: dict with status and saved file path
Example: download_artifact(notebook_id="abc123", artifact_type="audio", output_path="podcast.mp3") download_artifact(notebook_id="abc123", artifact_type="quiz", output_path="quiz.html", output_format="html") download_artifact(notebook_id="abc123", artifact_type="slide_deck", output_path="slides.pptx", slide_deck_format="pptx")
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| artifact_type | Yes | ||
| output_path | Yes | ||
| artifact_id | No | ||
| output_format | No | json | |
| slide_deck_format | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description explains the download behavior, parameters, return value, and examples. It covers what the tool does but does not mention authorization needs, rate limits, or side effects, though the operation is read-only.
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?
The description is well-structured with Args, Returns, and Examples. It is comprehensive but slightly lengthy; some bullet points could be condensed without losing clarity.
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?
The description covers all parameters, return values, and provides examples. Minor gaps: does not explain what happens when artifact_id is omitted (uses latest) and lacks error handling details.
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 description compensates for 0% schema description coverage by providing detailed explanations of each parameter, including valid artifact types, optional fields, and format choices. Examples clarify usage.
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 clearly states the tool downloads any NotebookLM artifact to a file, listing all supported types. It is unified, replacing 9 separate tools, and distinct from siblings like podcast_download and export_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?
The description positions itself as the unified download tool, implying use for all listed artifact types. However, it does not explicitly state when to use alternatives or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_artifactA
Export a NotebookLM artifact to Google Docs or Sheets.
Supports:
Data Tables → Google Sheets
Reports (Briefing Doc, Study Guide, Blog Post) → Google Docs
Args: notebook_id: Notebook UUID artifact_id: Artifact UUID to export export_type: "docs" or "sheets" title: Title for exported document (optional)
Returns: URL to the created Google Doc/Sheet
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| artifact_id | Yes | ||
| export_type | Yes | ||
| title | No |
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 full burden of behavioral disclosure. It only mentions the export action and return URL, but omits critical details like side effects (e.g., does it modify the artifact?), authentication requirements, or error conditions.
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?
The description is concise and well-structured with bullet points and clear sections. It front-loads the main purpose and provides argument details efficiently.
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?
The description covers parameters and return value (URL), but lacks context on preconditions (e.g., artifact existence) and postconditions (e.g., no modification to source). Given the tool's complexity and no annotations, more completeness is needed.
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?
Input schema has 0% description coverage, so the description adds essential meaning: it explains notebook_id, artifact_id, export_type (implied values 'docs' and 'sheets'), and title as optional. This compensates well for the schema's lack of 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?
The description clearly states the tool exports a NotebookLM artifact to Google Docs or Sheets, and distinguishes between exporting Data Tables to Sheets and Reports to Docs. This provides specific verb+resource+target differentiation from siblings like 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?
The description includes basic usage guidance by mapping artifact types to export formats (Data Tables → Sheets, Reports → Docs) and listing required arguments. However, it doesn't explicitly compare to other tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
noteA
Manage notes in a notebook. Unified tool for all note operations.
Supports: create, list, update, delete
Args: notebook_id: Notebook UUID action: Operation to perform: - create: Create a new note - list: List all notes in notebook - update: Update an existing note - delete: Delete a note permanently (requires confirm=True) note_id: Note UUID (required for update/delete) content: Note content (required for create, optional for update) title: Note title (optional for create/update) confirm: Must be True for delete action
Returns: Action-specific response with status
Example: note(notebook_id="abc", action="list") note(notebook_id="abc", action="create", content="My note", title="Title") note(notebook_id="abc", action="update", note_id="xyz", content="Updated") note(notebook_id="abc", action="delete", note_id="xyz", confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| action | Yes | ||
| note_id | No | ||
| content | No | ||
| title | No | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that delete requires confirm=True and is permanent; no annotations exist, so description carries full burden. Lacks details on auth or rate limits but covers core behaviors.
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?
Well-organized with actions described in bullet points, clear examples, and no redundant sentences. Efficiently conveys all necessary information.
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?
Covers all 6 parameters, all actions, provides examples, mentions return type, and is complete given the existence of an output schema.
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 has no descriptions (0% coverage). The description explains every parameter in detail, including conditional requirements and example values, fully compensating for the schema gap.
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 clearly states 'Manage notes in a notebook' and lists all supported operations (create, list, update, delete), making the tool's purpose explicit and distinct from sibling tools.
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 examples and specifies when each action is appropriate, but does not explicitly mention when to avoid this tool in favor of alternatives, though no direct competitors exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_createB
Create a new notebook.
Args: title: Optional title for the notebook
| Name | Required | Description | Default |
|---|---|---|---|
| title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits beyond creation. It does not mention side effects, return value, or required permissions.
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?
The description is concise but lacks structure such as examples or usage patterns. For a simple tool, it is adequately sized, but could be more 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?
Given the tool's simplicity and existence of an output schema, the description covers the basics. However, it misses contextual details like what the response contains or how to handle errors.
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 input schema has 0% description coverage; the description adds that 'title' is optional, which is not in the schema. However, it does not elaborate on format or constraints.
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 clearly states 'Create a new notebook', which is a specific verb and resource. This distinguishes it from sibling tools like notebook_delete or notebook_list.
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 guidance on when to use this tool versus alternatives, nor any prerequisites or limitations. The agent has no context to decide if this is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_deleteA
Delete notebook permanently. IRREVERSIBLE. Requires confirm=True.
Args: notebook_id: Notebook UUID confirm: Must be True after user approval
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It clearly states the action is permanent and irreversible, and that confirm must be true. This covers the key behavioral traits for a delete tool, though could mention effects on shared access.
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?
Extremely concise: two sentences plus argument list. Front-loaded with the critical behavior 'Delete notebook permanently. IRREVERSIBLE.' Every sentence adds value.
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 the simplicity of a delete tool with output schema, the description covers the essential behavior and parameter requirements. Could optionally mention return value or error cases, but not necessary for functionality.
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 0%, so description must compensate. It adds meaning by describing notebook_id as 'Notebook UUID' and confirm as 'Must be True after user approval'. This is basic but sufficient; could elaborate on UUID format or how to obtain it.
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 clearly states 'Delete notebook permanently' with 'IRREVERSIBLE', specifying the verb and resource. It distinguishes from sibling tools like notebook_create or notebook_rename by emphasizing permanence.
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?
Explicitly requires confirm=True after user approval, guiding proper invocation. Lacks explicit when-not-to-use or alternatives, but the confirmation requirement effectively communicates the safety gate for a destructive operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_describeA
Get AI-generated notebook summary with suggested topics.
Args: notebook_id: Notebook UUID
Returns: summary (markdown), suggested_topics list
| 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 provided, the description carries full burden. It implies a read-only operation but does not disclose whether it caches results, requires authentication, or has any side effects. The AI-generated aspect hints at computational cost but is not explicit.
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?
The description is extremely concise with no wasted words. It front-loads the purpose and efficiently lists arguments and returns.
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 a single parameter and an existing output schema, the description covers the essential return format (summary markdown, suggested_topics list). It is adequate for a simple describe tool, though it lacks details on error handling or limitations.
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 description adds meaning to the single parameter by specifying it is a 'Notebook UUID', beyond the schema's mere string type. With 0% schema description coverage, the description compensates well.
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 clearly states the tool's purpose: get an AI-generated notebook summary with suggested topics. It uses a specific verb-resource combination and distinguishes itself from siblings like notebook_get (raw content) and notebook_list (listing).
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 guidance is provided on when to use this tool versus alternatives such as notebook_get or notebook_query. There are no prerequisites, exclusions, or alternative tools mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_getC
Get notebook details with sources.
Args: notebook_id: Notebook UUID
| 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 must disclose behavioral traits. It only states the operation is 'get', implying read-only, but does not mention permissions, rate limits, or what 'details' and 'sources' encompass.
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?
The description is very short (two lines) and front-loaded, but it may be too sparse. It sacrifices clarity for brevity, offering no structure beyond a single argument note.
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 a single parameter and an existing output schema, the description is minimally adequate for a simple retrieval tool. However, it omits details about what 'sources' entails and potential edge cases.
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 0%, so the description must compensate. It adds only 'Notebook UUID' to the parameter name, which is minimal; it does not explain how to obtain the ID or validate the format.
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 'Get notebook details with sources', which clearly specifies the action and resource. However, it does not differentiate from the sibling tool 'notebook_describe', which likely performs a similar retrieval.
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 guidance is provided on when to use this tool versus alternatives like notebook_describe or notebook_list. The description lacks context for the agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_listA
List all notebooks.
Args: max_results: Maximum number of notebooks to return (default: 100)
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No |
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 provided, the description carries full burden. It implies a read-only operation but does not disclose behavior like result limits beyond max_results, pagination, or authentication needs. It is minimally adequate.
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?
The description is extremely concise—one sentence and a parameter definition. No wasted words, and the purpose is front-loaded. It 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?
While an output schema exists (reducing the need to describe returns), the description lacks details on scoping (e.g., all notebooks vs. user-accessible), ordering, or the possibility of empty results. It is sufficient but not comprehensive.
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 input schema has 0% coverage, but the description explains 'max_results: Maximum number of notebooks to return (default: 100)', adding meaning beyond the schema's type and default. This compensates for the lack of schema 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?
The description 'List all notebooks' uses a specific verb and resource, clearly distinguishing from sibling tools like notebook_create, notebook_delete, and notebook_query. It is unambiguous about what the tool does.
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?
There is no guidance on when to use this tool versus alternatives such as notebook_query (filtered list) or notebook_get (single notebook). The description provides no context about appropriate use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_queryA
Ask AI about EXISTING sources already in notebook. NOT for finding new sources.
Use research_start instead for: deep research, web search, find new sources, Drive search.
Args: notebook_id: Notebook UUID query: Question to ask source_ids: Source IDs to query (default: all) conversation_id: For follow-up questions timeout: Request timeout in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0)
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| query | Yes | ||
| source_ids | No | ||
| conversation_id | No | ||
| timeout | No |
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 full burden. It explains that the tool queries existing sources but does not explicitly state it is read-only or non-destructive. While implied, a more explicit statement about safety would improve transparency. The parameter details (e.g., timeout default) add behavioral context.
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?
The description is highly concise: two short introductory sentences followed by a structured parameter list. Every sentence earns its place—no redundancy, clear separation of purpose, usage, and parameter docs.
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 the tool has an output schema (no need to explain return values) and 5 parameters, the description covers all necessary context: purpose, when to use vs. alternatives, and parameter semantics. It also mentions environment-based defaults, making it complete for a query 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 0%, but the description compensates fully by explaining all 5 parameters in the Args section, including defaults and purpose (e.g., source_ids defaults to all, conversation_id for follow-ups, timeout from env). This adds significant meaning beyond the bare 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 clearly states the tool's purpose: 'Ask AI about EXISTING sources already in notebook.' It uses a specific verb and resource, and explicitly distinguishes from finding new sources, setting it apart from siblings like research_start.
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 provides explicit guidance on when not to use this tool ('NOT for finding new sources') and suggests an alternative: 'Use research_start instead for: deep research, web search, find new sources, Drive search.' This is excellent contextual advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_query_startA
Start a notebook query asynchronously for large notebooks that may timeout.
Use this instead of notebook_query when querying notebooks with many sources (50+) where the response may take longer than 60 seconds. Returns immediately with a query_id. Poll notebook_query_status with the query_id to get the result.
Workflow: notebook_query_start -> poll notebook_query_status until completed.
Args: notebook_id: Notebook UUID query: Question to ask source_ids: Source IDs to query (default: all) conversation_id: For follow-up questions timeout: Request timeout in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0)
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| query | Yes | ||
| source_ids | No | ||
| conversation_id | No | ||
| timeout | No |
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 present, so the description carries full burden. It discloses that the tool is asynchronous, returns immediately with a query_id, and requires polling. It also explains the timeout behavior. However, it does not mention any side effects or error conditions, which prevents a perfect score.
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?
The description is concise and well-structured: first sentence sets purpose, second provides selection guidance, third describes return, fourth gives workflow, then Args. Every sentence adds value with no redundancy.
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 the async workflow and sibling tools (notebook_query, notebook_query_status), the description fully explains the usage lifecycle. It covers when to use, what it returns, and how to get results. No gaps for an agent to infer.
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 0%, so the description must compensate. It explains each parameter's purpose and defaults (e.g., source_ids default 'all', timeout default from env or 120.0). This adds significant meaning beyond the bare schema types.
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 clearly states it starts an asynchronous query for large notebooks that may timeout. It explicitly distinguishes itself from the sibling tool notebook_query by specifying the condition (many sources, >60s). The verb 'start' and resource 'notebook query' are specific.
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 explicitly says 'Use this instead of notebook_query when querying notebooks with many sources (50+) where the response may take longer than 60 seconds.' It also provides a clear workflow: start -> poll status. This gives excellent guidance on when and how to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_query_statusA
Check the status of an async notebook query started with notebook_query_start.
Returns the query result when completed, or current status if still in progress. Poll this tool every few seconds until status is 'completed' or 'error'.
Args: query_id: The query ID returned by notebook_query_start
| Name | Required | Description | Default |
|---|---|---|---|
| query_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description states it returns result or status, implying it is a read-only polling operation. It does not discuss idempotency or side effects, but given the nature, it is minimally transparent.
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 plus a parameter list. Front-loaded with purpose and usage instruction. No unnecessary words. Highly efficient.
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 the presence of an output schema (not shown), the description does not need to detail return values. It covers purpose, parameter, and polling advice. Could mention possible status values, but adequate for the tool's simplicity.
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 single parameter query_id is described as 'The query ID returned by notebook_query_start', adding essential context beyond the schema's type-only definition. Schema coverage is 0%, so description compensates well.
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 clearly states the tool checks the status of an async notebook query (verb 'check', resource 'status'). It references the companion tool notebook_query_start, distinguishing it from sibling tools like notebook_query.
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?
Explicitly says to poll every few seconds until completed or error, and that the query must have been started with notebook_query_start. Does not mention when not to use or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_renameB
Rename a notebook.
Args: notebook_id: Notebook UUID new_title: New title
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| new_title | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description does not disclose behavioral traits such as idempotency, error conditions, or constraints on renaming (e.g., duplicate titles).
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?
Extremely concise: two sentences plus arg list. No wasted words. Main action is front-loaded.
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?
Output schema exists, so return values are covered. However, lacks details on error handling, side effects, or prerequisites, leaving gaps for a simple rename 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 coverage is 0%; description merely restates parameter names with minimal context ('Notebook UUID', 'New title'). Does not add meaning beyond what the schema field types imply.
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?
Clear verb 'rename' and resource 'notebook' explicitly stated. Distinct from sibling tools like notebook_create or notebook_delete.
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 guidance on when to use this tool vs alternatives like notebook_describe or notebook_get. No mention of prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipelineA
Manage and execute multi-step notebook pipelines.
Actions:
run: Execute a pipeline on a notebook
list: List all available pipelines (builtin and user-defined)
Args: action: Operation to perform (run, list) notebook_id: Target notebook UUID (required for action=run) pipeline_name: Pipeline name (required for action=run, e.g. "ingest-and-podcast") input_url: URL variable for pipelines that need it (replaces $INPUT_URL)
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| notebook_id | No | ||
| pipeline_name | No | ||
| input_url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It only describes parameters and actions, but does not mention side effects (e.g., modifications to notebooks), execution model (sync/async), or required permissions. This is insufficient for safe usage.
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?
The description is brief and well-structured with a short intro, bulleted actions, and bulleted args. Every sentence provides value without redundancy.
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 the presence of an output schema and moderate complexity, the description covers the essential usage. It could mention that input_url is optional only for certain pipelines, but overall it is sufficiently complete.
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 0%, so the description carries full weight. It explains each parameter, including conditional requirements (e.g., notebook_id required for action=run) and the substitution behavior of input_url. This adds meaning beyond the bare 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 clearly states the tool manages and executes multi-step notebook pipelines, and lists two specific actions (run and list). This distinguishes it from sibling tools that deal with notebooks in other ways.
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 explains how to use the tool for two actions but does not provide guidance on when to choose this tool over alternatives like 'batch' or other notebook tools. Usage is implied but not explicitly contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
podcast_createA
Generate a standalone podcast from text (Enterprise only, no notebook needed).
Args: text: Text content to turn into a podcast. Can be a single string or a list of strings (each becomes a separate context). title: Optional podcast title description: Optional podcast description focus: Optional topic focus prompt to guide the podcast length: "SHORT" (~4-5 min) or "STANDARD" (~10 min) language: Language code (default: "en")
Returns: Dictionary with operation name for tracking and downloading.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| title | No | ||
| description | No | ||
| focus | No | ||
| length | No | STANDARD | |
| language | No | en |
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 disclose behavioral traits. It mentions the return dictionary with operation name for tracking/downloading, hinting at async behavior, but does not explicitly state that the operation is asynchronous or requires polling. It also omits potential side effects or rate limits.
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?
The description is concise, front-loading the purpose and then listing parameters with clear explanations. Every sentence adds value with no redundancy.
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 the output schema exists (though not shown), the description adequately covers parameter semantics and return structure. It could be improved by clarifying the async nature and integration with podcast_download, but overall it is sufficiently complete.
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 0%, so the description must compensate. It explains each parameter: text (string or list), title, description, focus, length (SHORT/STANDARD), and language (default en). This adds meaning beyond the schema, though the focus parameter could be clearer.
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 clearly states the tool's purpose: 'Generate a standalone podcast from text (Enterprise only, no notebook needed).' It specifies the verb (generate), the resource (podcast), and the Enterprise constraint, distinguishing it from sibling tools like podcast_download.
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 notes 'Enterprise only' and 'no notebook needed', implying usage conditions, but it does not explicitly state when to use this tool versus alternatives like podcast_download or studio_create. No exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
podcast_downloadA
Download a completed standalone podcast.
Args: operation_name: The operation name from podcast_create response output_path: Local file path to save the MP3 (default: ~/Downloads/podcast.mp3)
Returns: Dictionary with the downloaded file path.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_name | Yes | ||
| output_path | No |
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 must fully disclose behavior. It only states that the tool downloads a file, with a default output path, but omits critical details such as whether overwriting occurs, network dependencies, timeout behavior, or error handling for missing operations.
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?
The description is extremely concise, with a clear one-line purpose followed by structured Args and Returns sections. Every sentence is useful and front-loaded with the action.
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 a simple download tool with an output schema, the description covers the basic function and parameters. However, it lacks details on synchronous/asynchronous execution, error handling, and potential side effects, making it adequate but not fully complete.
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 0%, so description must compensate. It explains that operation_name comes from the podcast_create response and notes the default output path for output_path, adding meaningful context beyond the bare 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 clearly states the verb 'Download' and the resource 'completed standalone podcast', which is distinct from the sibling podcast_create tool. It immediately conveys the tool's core function.
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 mentions 'operation_name from podcast_create response', indicating this tool is used after creation. However, it does not explicitly exclude other download tools like download_artifact or provide when-not-to-use guidance, which would justify a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_authA
Reload auth tokens from disk or run headless re-authentication.
Call this after running nlm login to pick up new tokens,
or to attempt automatic re-authentication if Chrome profile has saved login.
Returns status indicating if tokens were refreshed successfully.
| 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?
Without annotations, the description carries the behavioral burden. It discloses that tokens are reloaded or re-authentication is attempted and returns a status. However, it lacks details on side effects, failure modes, or required permissions, which is a gap for a mutation-like 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?
The description is four sentences, front-loaded with the core purpose, followed by usage guidance and return info. Every sentence adds value without redundancy.
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 0-parameter tool with an output schema (implied by 'Returns status'), the description is complete: it explains when to call, what happens, and what to expect as output. No gaps identified.
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 has zero parameters and 100% schema coverage, so the baseline is 4. The description does not need to add parameter meaning, but it effectively explains the tool's action without requiring parameters.
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 clearly states 'Reload auth tokens from disk or run headless re-authentication', specifying the exact action and resource. It distinguishes from sibling tools like save_auth_tokens by implying when to use (after nlm login).
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?
Explicitly provides usage context: 'Call this after running nlm login to pick up new tokens, or to attempt automatic re-authentication if Chrome profile has saved login.' This tells the agent exactly when to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_importA
Import discovered sources into notebook.
Call after research_status shows status="completed".
Args: notebook_id: Notebook UUID task_id: Research task ID source_indices: Source indices to import (default: all) timeout: Import timeout in seconds (default: 300, increase for large notebooks)
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| task_id | Yes | ||
| source_indices | No | ||
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions the action and parameters, includes default behavior for source_indices and timeout. However, it does not disclose side effects (e.g., whether import adds or overwrites), error behaviors, or prerequisites beyond the status condition. Useful but limited.
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?
The description is extremely concise: two lines of purpose, one usage precondition line, and a clean Args list. Every sentence serves a purpose, no filler. Front-loaded with purpose and usage, then structured param details.
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?
Purpose, usage, and parameters are well-covered. The existence of an output schema mitigates the need to describe return values. However, it lacks details on error handling, success confirmation, or what modifications occur to the notebook. For a workflow step, it is largely sufficient.
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 0%, but the 'Args' section in the description compensates fully. It explains each parameter's type (UUID, ID, indices, seconds), defaults (source_indices: all, timeout: 300), and guidance (increase for large notebooks). This adds significant meaning beyond the bare 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 clearly states the tool's purpose: 'Import discovered sources into notebook.' It uses a specific verb ('import') and resource ('sources into notebook'), distinguishing it from siblings like research_start and research_status by implying it is the post-completion step.
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?
Explicitly states when to call: 'Call after research_status shows status="completed".' This provides a clear precondition. It also offers usage advice on timeout for large notebooks. Lacks mention of alternatives or when not to use, but the precondition is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_startA
Deep research / fast research: Search web or Google Drive to FIND NEW sources.
Use this for: "deep research on X", "find sources about Y", "search web for Z", "search Drive". Workflow: research_start -> poll research_status -> research_import.
Args: query: What to search for (e.g. "quantum computing advances") source: web|drive (where to search) mode: fast (~30s, ~10 sources) | deep (~5min, ~40 sources, web only) notebook_id: Existing notebook (creates new if not provided) title: Title for new notebook
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| source | No | web | |
| mode | No | fast | |
| notebook_id | No | ||
| title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses key behaviors: search time (~30s fast, ~5min deep), source counts, and asynchronous polling. It does not mention auth requirements or rate limits, but the async workflow is clear.
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?
The description is concise and well-structured: purpose first, then usage examples, workflow, and argument list. No superfluous words; every sentence adds value.
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?
Covers purpose, usage, workflow, and all parameters. Output schema exists for return values. Could be more complete by mentioning error cases or prerequisites, but overall sufficient for an async search 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 coverage is 0%, but the description provides clear, actionable explanations for all five parameters (e.g., query, source, mode, notebook_id, title). This fully compensates for the lack of schema 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?
The description clearly states 'Search web or Google Drive to FIND NEW sources' with specific verb and resource. It differentiates from siblings by focusing on source discovery, but could more explicitly contrast with other search tools like notebook_query.
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 explicit 'Use this for:' examples and a workflow (research_start -> poll -> import). However, it does not specify when NOT to use this tool, such as for querying existing notebooks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_statusA
Poll research progress. Blocks until complete or timeout.
Args: notebook_id: Notebook UUID poll_interval: Seconds between polls (default: 30) max_wait: Max seconds to wait (default: 300, 0=single poll) compact: If True (default), truncate report and limit sources shown to save tokens. Use compact=False to get full details. task_id: Optional Task ID to poll for a specific research task. query: Optional query text for fallback matching when task_id changes (deep research). Contributed by @saitrogen (PR #15).
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| poll_interval | No | ||
| max_wait | No | ||
| compact | No | ||
| task_id | No | ||
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses blocking behavior, timeout defaults, compact mode token saving, and fallback matching. No annotations to contradict. Missing potential side effects like rate limits or cancellation behavior.
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?
Single line summary then clear parameter list. No superfluous text. Efficiently conveys all necessary information in a structured format.
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 output schema exists, the description covers purpose, blocking, timeout, compact mode, and task-specific polling. Complete for a polling tool without needing to describe return format.
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?
With 0% schema description coverage, the description explains every parameter: notebook_id, poll_interval, max_wait, compact, task_id, query. Provides defaults, meaning, and even credits a contributor. Adds significant value.
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?
Clearly states it polls research progress and blocks until complete or timeout. Distinguishes from siblings like research_start (which starts research) and notebook_query_status (which is for notebook queries).
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?
Implies usage: when you need to wait for a research task to finish. Provides parameter details but lacks explicit when-not-to-use or alternatives. Could mention that research_start should be called first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_auth_tokensA
Save NotebookLM cookies (FALLBACK method - try nlm login first!).
IMPORTANT FOR AI ASSISTANTS:
First, run
nlm loginvia Bash/terminal (automated, preferred)Only use this tool if the automated CLI fails
Args: cookies: Cookie header from Chrome DevTools (only needed if CLI fails) csrf_token: Deprecated - auto-extracted session_id: Deprecated - auto-extracted request_body: Optional - contains CSRF if extracting manually request_url: Optional - contains session ID if extracting manually
| Name | Required | Description | Default |
|---|---|---|---|
| cookies | Yes | ||
| csrf_token | No | ||
| session_id | No | ||
| request_body | No | ||
| request_url | No |
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 full burden. It discloses fallback nature, deprecated parameters, and auto-extraction. However, does not explicitly state whether it overwrites tokens or other side effects.
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?
Well-structured with sections. Slightly verbose but each sentence adds value. Front-loads purpose and critical usage instruction.
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?
Covers purpose, when to use, and parameter meanings. Missing output schema details but acceptable for a token-saving tool with expected simple output.
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 0%, so description adds needed meaning. Each parameter has a brief explanation (e.g., deprecated, auto-extracted, optional). Adds value beyond raw 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?
Clearly states it saves NotebookLM cookies as a fallback method, with a specific verb and resource. Distinguishes itself from siblings by referencing the preferred CLI method 'nlm login'.
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?
Explicitly instructs to use 'nlm login' first and only fall back to this tool if that fails. Provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoB
Get server version, mode, and auth status.
Returns: dict with version, configuration, and auth status for both modes.
| 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?
No annotations are provided, so the description must carry the full burden. It mentions return type but does not disclose behavioral traits such as authentication requirements, side effects, or rate limits.
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?
The description is extremely concise with two sentences, no redundant information, and the most important detail (what it returns) is front-loaded.
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 the simplicity of the tool (0 parameters, output schema exists), the description is adequate but lacks details like authentication necessity or whether it can be called frequently. Slightly incomplete for a context-dependent agent.
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 has no parameters, and schema coverage is 100%. The description adds minimal value but correctly states the return content. Baseline for 0 params is 4.
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 clearly states the verb 'Get' and the resource 'server version, mode, and auth status', making the purpose straightforward. However, it does not differentiate from sibling tools, but none seem to overlap significantly.
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 guidance on when to use this tool versus alternatives like refresh_auth or configure_mode. The description lacks context on prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_addA
Add a source to a notebook. Unified tool for all source types.
Supports: url, text, drive, file
For URL sources, a paywall/login check is performed before adding. If the URL appears to require authentication or a subscription, the tool returns a "paywall_detected" status with instructions. Set skip_paywall_check=True to bypass (e.g. the user confirms they have an account on that site).
Args: notebook_id: Notebook UUID source_type: Type of source to add: - url: Web page or YouTube URL - text: Pasted text content - drive: Google Drive document - file: Local file upload (PDF, text, audio) url: URL to add (for source_type=url) urls: List of URLs to add in bulk (for source_type=url, alternative to url) text: Text content to add (for source_type=text) title: Display title (for text sources) file_path: Local file path (for source_type=file) document_id: Google Drive document ID (for source_type=drive) doc_type: Drive doc type: doc|slides|sheets|pdf (for source_type=drive) wait: If True, wait for source processing to complete before returning wait_timeout: Max seconds to wait if wait=True (default 120) skip_paywall_check: If True, skip paywall/login check and add URL anyway
Example: source_add(notebook_id="abc", source_type="url", url="https://example.com") source_add(notebook_id="abc", source_type="url", urls=["https://a.com", "https://b.com"]) source_add(notebook_id="abc", source_type="url", url="https://ft.com/article", skip_paywall_check=True) source_add(notebook_id="abc", source_type="file", file_path="/path/to/doc.pdf", wait=True)
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| source_type | Yes | ||
| url | No | ||
| urls | No | ||
| text | No | ||
| title | No | ||
| file_path | No | ||
| document_id | No | ||
| doc_type | No | doc | |
| wait | No | ||
| wait_timeout | No | ||
| skip_paywall_check | No |
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 full burden. It discloses paywall/login check, wait behavior, and bulk URL support. Not mentioning error handling or permissions, but sufficient for typical usage.
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?
Well-structured: one-line purpose, supported types, special behavior, Args list, then examples. Every sentence adds value, front-loaded with purpose.
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?
Comprehensive for a tool with 12 parameters and multiple source types. Covers all parameter semantics, special behaviors (paywall, wait, bulk), and provides examples. Output schema exists to cover return values.
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 0%, so the description must explain all parameters. It provides a detailed Args section for each of the 12 parameters, including types, dependencies on source_type, and default values.
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 clearly states 'Add a source to a notebook' with 'Unified tool for all source types', using specific verb+resource and differentiating from sibling tools like source_delete, source_describe, etc.
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?
Explicitly lists supported source types (url, text, drive, file) and provides guidance on paywall check behavior, including when to skip. Does not explicitly contrast with sibling tools like source_list_drive or source_sync_drive, so not perfect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_deleteA
Delete source(s) permanently. IRREVERSIBLE. Requires confirm=True.
Args: source_id: Source UUID to delete (single) source_ids: List of source UUIDs to delete (bulk, alternative to source_id) confirm: Must be True after user approval
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | No | ||
| source_ids | No | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. States permanence and confirmation, but lacks details on side effects like cascading deletions.
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?
Extremely concise with front-loaded key information (permanence, confirmation). Every sentence adds value without redundancy.
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?
Covers purpose, parameters, and critical requirement. Lacks behavioral context like return values, but output schema exists; still could mention confirmation flow.
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 has 0% description coverage; description fully explains each parameter (source_id, source_ids, confirm) including distinction between single/bulk and requirement for confirm=True.
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?
Clearly states action 'Delete' and resource 'source(s)' with emphasis on permanence. Distinguishes from sibling tools like source_add or source_describe.
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?
Includes critical requirement 'confirm=True' and notes irreversibility, but lacks explicit when-to-use context versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_describeB
Get AI-generated source summary with keyword chips.
Args: source_id: Source UUID
Returns: summary (markdown with bold keywords), keywords list
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It only specifies the return (summary and keywords) but does not disclose whether it is read-only, any side effects, caching behavior, or permissions needed. The behavioral transparency is minimal.
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?
The description is extremely concise, with the purpose front-loaded in the first sentence. It efficiently describes args and returns without unnecessary words.
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 the simple nature of the tool (one parameter, no nested objects) and the presence of an output schema, the description is nearly complete. It could mention if the summary is always generated fresh or if it uses caching, but overall it is sufficient.
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 coverage is 0%, so the description adds value by clarifying that source_id is a 'Source UUID', which is not explicit in the schema. However, it does not provide additional formatting or validation beyond the type.
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 'Get AI-generated source summary with keyword chips', which is a specific verb+resource combination that clearly indicates the tool retrieves a source summary. It distinguishes from siblings like source_delete and source_rename.
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 guidance is provided on when to use this tool versus alternatives like source_get_content or other source-related tools. There is no mention of context, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_get_contentA
Get raw text content of a source (no AI processing).
Returns the original indexed text from PDFs, web pages, pasted text, or YouTube transcripts. Much faster than notebook_query for content export.
Args: source_id: Source UUID
Returns: content (str), title (str), source_type (str), char_count (int)
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes |
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 description carries full burden. It states 'raw text content' and 'no AI processing', implying a read-only operation. However, it does not disclose authentication needs, rate limits, or error behavior. Adequate but not exhaustive.
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 plus a parameter list, front-loaded with main purpose. Every sentence adds value; no redundancy or verbosity.
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?
Although output schema exists, description already details return fields (content, title, source_type, char_count). Missing edge cases or error conditions, but for a simple retrieval tool it is fairly complete.
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 has 0% description coverage, so description must compensate. It describes 'source_id: Source UUID', adding the concept of UUID to the schema type. This is minimal but sufficient for a single parameter; baseline is 3.
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?
Description clearly states the verb 'Get', the resource 'raw text content of a source', and explicitly mentions no AI processing. It distinguishes from sibling tool 'notebook_query' by noting speed advantage for content export.
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?
Explicitly recommends this tool over 'notebook_query' for content export due to speed. Does not explicitly exclude other contexts or mention prerequisites, but the contrast provides clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_list_driveA
List sources with types and Drive freshness status.
Use before source_sync_drive to identify stale sources.
Args: notebook_id: Notebook UUID
| 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?
No annotations are provided, so the description carries full responsibility. It mentions returning 'types and Drive freshness status' but does not disclose whether the tool is read-only, what 'freshness status' specifically entails (e.g., timestamps), or any authorization needs. The parameter notebook_id is not explained as scoping to a specific notebook's sources.
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?
The description is concise with two sentences plus a parameter line. It is front-loaded with the main purpose, contains no superfluous text, and is easy to parse.
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 the tool has one parameter and an output schema (not provided), the description is adequate but minimally detailed. It does not explain that sources are listed for a specific notebook, leaving room for ambiguity. For an agent, clearer scoping would improve decision-making.
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 0% description coverage and only one required parameter. The description adds 'Notebook UUID' which is minimal and largely redundant with the parameter name. It does not explain the parameter's role in scoping the list or any constraints, leaving the agent to infer its purpose.
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 clearly states the verb 'List' and the resource 'sources' with specific return information ('types and Drive freshness status'). It distinguishes itself from sibling tools like source_sync_drive and source_describe by focusing on listing all sources with freshness metadata.
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 explicitly advises to use this tool before source_sync_drive to identify stale sources, providing clear workflow guidance. This effectively contextualizes when to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_renameA
Rename a source in a notebook.
Args: notebook_id: Notebook UUID containing the source source_id: Source UUID to rename new_title: New display title for the source
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| source_id | Yes | ||
| new_title | 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 must fully disclose behavioral traits. It only states it renames, but offers no information about side effects, permissions required, or constraints (e.g., whether the source can be renamed if it has dependencies). This is minimal 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?
The description is extremely concise with two sentences total. The first sentence states the purpose, and the second lists parameters. No unnecessary words, making it easy to scan.
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?
The description is minimal and does not explain return values (though output schema exists). It lacks information about constraints, error conditions, or the effect on related resources. For a simple rename, it is marginally adequate but leaves gaps about behavioral details.
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 input schema has 0% description coverage, so the parameter names alone provide no meaning. The description compensates by explicitly listing each parameter with a short explanation (e.g., 'Notebook UUID containing the source'). This adds necessary context 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?
The description clearly states the action 'Rename' and the resource 'source in a notebook', which is specific and unequivocal. It distinguishes from sibling tools like source_delete or source_add by naming a distinct operation.
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 provides no guidance on when to use this tool vs alternatives. It does not mention prerequisites, limitations, or contexts where renames are not allowed. Sibling tool names are available but the description itself lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_sync_driveA
Sync Drive sources with latest content. Requires confirm=True.
Call source_list_drive first to identify stale sources.
Args: source_ids: Source UUIDs to sync confirm: Must be True after user approval
| Name | Required | Description | Default |
|---|---|---|---|
| source_ids | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It mentions the confirm requirement but lacks details on side effects (overwriting, rate limits, idempotency, duration). More context would improve transparency.
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 sentences with key points front-loaded. Every sentence earns its place—purpose, prerequisite, and parameter explanation—without wasted words.
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 are covered. The description covers prerequisites and required parameter, but lacks detail on behavior when confirm=False (e.g., immediate failure or prompt). Still adequate for a mutation tool with output schema.
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 0%, so the description must add meaning. It explains source_ids as 'Source UUIDs to sync' and confirm as 'Must be True after user approval,' providing context beyond the schema's type and default.
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 'Sync Drive sources with latest content,' clearly identifying the verb 'sync' and resource 'Drive sources.' It also mentions a prerequisite (calling source_list_drive), which helps distinguish it from sibling tools like source_add, source_delete, etc.
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?
Explicitly states 'Requires confirm=True' and advises calling source_list_drive first to identify stale sources, providing clear when and how to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_createA
Create any NotebookLM studio artifact. Unified creation tool.
Supports: audio, video, infographic, slide_deck, report, flashcards, quiz, data_table, mind_map
Args: notebook_id: Notebook UUID artifact_type: Type of artifact to create: - audio: Audio Overview (podcast) - video: Video Overview - infographic: Visual infographic - slide_deck: Presentation slides (PDF) - report: Text report (Briefing Doc, Study Guide, etc.) - flashcards: Study flashcards - quiz: Multiple choice quiz - data_table: Structured data table - mind_map: Visual mind map source_ids: Source IDs to use (default: all sources) confirm: Must be True after user approval
Type-specific options:
- audio: audio_format (deep_dive|brief|critique|debate), audio_length (short|default|long)
- video: video_format (explainer|brief|cinematic), visual_style (auto_select|custom|classic|whiteboard|kawaii|anime|watercolor|retro_print|heritage|paper_craft), video_style_prompt
- infographic: orientation (landscape|portrait|square), detail_level (concise|standard|detailed), infographic_style (auto_select|sketch_note|professional|bento_grid|editorial|instructional|bricks|clay|anime|kawaii|scientific)
- slide_deck: slide_format (detailed_deck|presenter_slides), slide_length (short|default)
- report: report_format (Briefing Doc|Study Guide|Blog Post|Create Your Own), custom_prompt
- flashcards: difficulty (easy|medium|hard)
- quiz: question_count (int), difficulty (easy|medium|hard)
- data_table: description (required)
- mind_map: title
Common options:
- language: BCP-47 code (en, es, fr, de, ja). Defaults to NOTEBOOKLM_HL env var or 'en'
- focus_prompt: Optional focus textExample: studio_create(notebook_id="abc", artifact_type="audio", confirm=True) studio_create(notebook_id="abc", artifact_type="quiz", question_count=5, confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| artifact_type | Yes | ||
| source_ids | No | ||
| confirm | No | ||
| audio_format | No | deep_dive | |
| audio_length | No | default | |
| video_format | No | explainer | |
| visual_style | No | auto_select | |
| video_style_prompt | No | ||
| orientation | No | landscape | |
| detail_level | No | standard | |
| infographic_style | No | auto_select | |
| slide_format | No | detailed_deck | |
| slide_length | No | default | |
| report_format | No | Briefing Doc | |
| custom_prompt | No | ||
| question_count | No | ||
| difficulty | No | medium | |
| language | No | ||
| focus_prompt | No | ||
| title | No | Mind Map | |
| description | No |
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 full burden. It explains the confirm parameter and mentions user approval, implying necessary interactivity. However, it does not disclose potential side effects (e.g., overwriting artifacts) or rate limits. The behavioral impact remains somewhat opaque.
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?
The description is well-structured with a summary, detailed bullet points, and examples. It is appropriately sized for 22 parameters, though some redundancies (e.g., repeating artifact types in the args list) could be trimmed.
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 the presence of an output schema, the description does not need to explain return values. It thoroughly covers parameter semantics and usage patterns. Missing confirmation on whether creation is asynchronous or what happens on failure is a minor gap.
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?
With 0% schema description coverage, the description fully compensates by detailing each parameter, including type-specific options and defaults. It groups parameters by artifact type and explains their purpose, exceeding mere schema information.
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 clearly states it is a 'unified creation tool' for all NotebookLM studio artifacts, listing nine types. It distinguishes itself from siblings like podcast_create (which is audio-only) and studio_revise (modification), making its purpose 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?
The description indicates it is the primary creation tool and provides an example with confirm=True. However, it does not explicitly state when to avoid this tool in favor of alternatives like podcast_create or when not to use it (e.g., for revision), leaving implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_deleteA
Delete studio artifact. IRREVERSIBLE. Requires confirm=True.
Args: notebook_id: Notebook UUID artifact_id: Artifact UUID (from studio_status) confirm: Must be True after user approval
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| artifact_id | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the action is irreversible and requires user confirmation (confirm=True). Without annotations, it adequately conveys the destructive nature of the tool.
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?
The description is extremely concise with three lines, front-loading the essential information: action, irreversibility, and parameter requirements.
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?
The description does not explain return values, but output schema exists. It does not distinguish between deleting a studio artifact versus the entire notebook, which could be ambiguous given sibling notebook_delete.
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 description adds significant meaning beyond the input schema by explaining that notebook_id is a Notebook UUID, artifact_id is an Artifact UUID from studio_status, and confirm must be set to True after user approval.
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 clearly states the tool deletes a studio artifact, using specific verb and resource. It distinguishes from sibling tools like studio_create and studio_revise by being the delete operation.
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 provides prerequisite context (artifact_id from studio_status) and the confirm parameter requirement, but does not explicitly tell when to use this tool versus alternatives like notebook_delete or source_delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_reviseA
Revise individual slides in an existing slide deck. Creates a NEW artifact.
Only slide decks support revision. The original artifact is not modified. Poll studio_status after calling to check when the new deck is ready.
Args: notebook_id: Notebook UUID artifact_id: UUID of the existing slide deck to revise (from studio_status) slide_instructions: List of revision instructions, each with: - slide: Slide number (1-based, slide 1 = first slide) - instruction: Text describing the desired change Example: [{"slide": 1, "instruction": "Make the title larger"}] confirm: Must be True after user approval
Example: studio_revise( notebook_id="abc", artifact_id="xyz", slide_instructions=[ {"slide": 1, "instruction": "Make the title larger"}, {"slide": 3, "instruction": "Remove the image"} ], confirm=True )
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| artifact_id | Yes | ||
| slide_instructions | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description bears full burden. It clearly states the original artifact is not modified and a new artifact is created. However, it does not mention potential side effects like resource usage.
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?
Description is well-structured with purpose, usage notes, args list, and an example. Every sentence adds value without redundancy.
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?
Covers the revision process, non-destructive behavior, and polling requirement. Output schema exists but not described; however, the key outcome (new artifact) is stated. Could mention return value but sufficient.
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 0%, but the description explains all parameters: notebook_id, artifact_id, slide_instructions (with format and example), and confirm (must be True). The example further clarifies usage.
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 clearly states 'Revise individual slides in an existing slide deck. Creates a NEW artifact.' It specifies the action (revise), resource (slides), and distinguishes from creation tools like studio_create.
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?
Explicitly says 'Only slide decks support revision.' and instructs to poll studio_status for readiness. Also requires confirm=True after user approval, guiding the agent on when and how to invoke.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_statusA
Check studio content generation status and get URLs, or rename an artifact.
Args: notebook_id: Notebook UUID action: Action to perform: - status (default): List all artifacts with their status and URLs - rename: Rename an artifact (requires artifact_id and new_title) - list_types: List all supported artifact types with their options artifact_id: Required for action="rename" - the artifact UUID to rename new_title: Required for action="rename" - the new title for the artifact
Returns: Dictionary with status and results. For action="status": - status: "success" - artifacts: List of artifacts, each containing: - artifact_id: UUID - title: Artifact title - type: audio, video, report, etc. - status: completed, in_progress, failed - url: URL to view/download (if applicable) - custom_instructions: The custom prompt/focus instructions used to generate the artifact (if any) - summary: Counts of total, completed, in_progress
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| action | No | status | |
| artifact_id | No | ||
| new_title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses the rename action and return structure but lacks details on side effects (e.g., whether rename overwrites or is reversible).
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?
The description is well-structured with Args and Returns sections, front-loading the main purpose. It is slightly verbose but every sentence adds value.
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?
The description covers all parameter requirements, default behaviors, and return values for each action, providing complete guidance for a tool with moderate 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?
The input schema has 0% description coverage, but the description fully compensates by detailing each parameter's purpose, required conditions, and defaults, adding significant meaning beyond types.
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 explicitly states the tool checks studio content generation status and renames artifacts, clearly distinguishing it from sibling tools like studio_create and studio_delete.
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 details three actions (status, rename, list_types) with their parameters, providing clear guidance on when to use each. It does not explicitly exclude alternatives but implies the correct context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tagA
Manage notebook tags and find relevant notebooks by tag matching.
Actions:
add: Add tags to a notebook for smart selection
remove: Remove tags from a notebook
list: List all tagged notebooks with their tags
select: Find notebooks relevant to a query using tag matching
Args: action: Operation to perform (add, remove, list, select) notebook_id: Notebook UUID (required for add, remove) tags: Comma-separated tags (required for add, remove; e.g. "ai,research,llm") notebook_title: Optional display title (for add) query: Search query (required for select; e.g. "ai mcp" or "ai,mcp")
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| notebook_id | No | ||
| tags | No | ||
| notebook_title | No | ||
| query | No |
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 discloses that add/remove modify tags and list/select are read-only. However, it does not mention permissions, error conditions, or side effects beyond tag changes. This is adequate for a straightforward tag management tool.
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?
The description is concise and well-structured: an overall purpose sentence, then bulleted actions and their requirements, followed by a clear list of arguments. Every sentence adds value without redundancy.
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?
The description covers all four actions and their parameter needs. An output schema exists, so return values don't need explanation. For a tool with 5 parameters and moderate complexity, the description is complete and sufficient.
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 0%, and the description compensates fully by explaining each parameter's purpose, format (e.g., 'Comma-separated tags'), and when they are required. It also provides examples for tags and query, adding significant value 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?
The description clearly states 'Manage notebook tags and find relevant notebooks by tag matching,' specifying verb and resource. It lists four distinct actions (add, remove, list, select) which differentiate it from sibling tools like notebook_create or source_add that handle other resources.
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 explains when each action is appropriate and which parameters are required per action (e.g., add/remove require notebook_id and tags; select requires query). It does not explicitly state when not to use but provides clear context for each operation.
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. Dates show when Glama detected each change.
41 tool updates
v1.0.8- First observed
batch - First observed
chat_configure - First observed
configure_mode - First observed
cross_notebook_query - First observed
download_artifact - First observed
export_artifact - First observed
note - First observed
notebook_create - First observed
notebook_delete - First observed
notebook_describe - First observed
notebook_get - First observed
notebook_list - First observed
notebook_query - First observed
notebook_query_start - First observed
notebook_query_status - First observed
notebook_rename - First observed
notebook_share_batch - First observed
notebook_share_invite - First observed
notebook_share_public - First observed
notebook_share_status - First observed
pipeline - First observed
podcast_create - First observed
podcast_download - First observed
refresh_auth - First observed
research_import - First observed
research_start - First observed
research_status - First observed
save_auth_tokens - First observed
server_info - First observed
source_add - First observed
source_delete - First observed
source_describe - First observed
source_get_content - First observed
source_list_drive - First observed
source_rename - First observed
source_sync_drive - First observed
studio_create - First observed
studio_delete - First observed
studio_revise - First observed
studio_status - First observed
tag
TDQS
Each tool targets a distinct operation or resource. Even with many tools, the boundaries are clear: notebook CRUD, source management, research pipeline, studio artifacts, notes, sharing, tags, etc. No two tools perform the same function.
Tool names follow different patterns: some use noun_verb (notebook_create, source_add), others verb_noun (download_artifact, export_artifact), and some are single words (note, batch). While subdomains have internal consistency, the overall naming is mixed.
41 tools is a very large surface for a single server. Although it covers extensive NotebookLM functionality, the count is high enough to overwhelm agents. Several tools could be consolidated (e.g., async query start/status, podcast tools redundant with studio).
The toolset covers nearly all NotebookLM features: full CRUD for notebooks, sources, notes, artifacts, research, sharing, tags, configuration, authentication, and batch operations. No obvious gaps in functionality for the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn unofficial MCP server for Google NotebookLM that enables users to manage notebooks, add sources, ask questions with citations, and generate audio podcasts via a Playwright-based automation layer.19MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for querying Google NotebookLM notebooks, enabling AI assistants to list notebooks, read sources, and ask questions about them.MIT
- AlicenseBqualityBmaintenanceMCP server that provides ~39 tools to interact with Google NotebookLM's internal API, enabling notebook management, source addition, chat queries, and Studio artifact generation through stdio, HTTP, and SSE transports.39MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that lets CLI agents (Claude, Codex, Cursor) chat directly with Google NotebookLM for zero-hallucination answers based on user's own notebooks.4,624MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Robiton/notebooklm-mcp-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server








