notebooklm-mcp
This server provides programmatic access to Google NotebookLM, enabling AI assistants to manage notebooks, sources, queries, and generated content.
Authentication & Server
Reload or save auth tokens (
refresh_auth,save_auth_tokens); get server version and auth status (server_info).
Notebook Management
Create, list, rename, delete, get details, and generate AI summaries of notebooks (
notebook_create,notebook_list,notebook_get,notebook_rename,notebook_delete,notebook_describe).
Querying & Chat
Ask AI questions about notebook sources (
notebook_query); run async queries for large notebooks (notebook_query_start,notebook_query_status); query multiple notebooks simultaneously (cross_notebook_query); configure chat settings like goal or response length (chat_configure).
Source Management
Add URL, text, Google Drive, or local file sources (
source_add); list Drive sources with freshness status (source_list_drive); sync stale Drive sources (source_sync_drive); rename, delete, summarize, or retrieve raw content of sources (source_rename,source_delete,source_describe,source_get_content).
Research
Start deep or fast web/Drive research sessions (
research_start), poll progress (research_status), and import discovered sources into notebooks (research_import).
Studio Content Generation
Create audio podcasts, video overviews, infographics, slide decks, reports, flashcards, quizzes, data tables, and mind maps (
studio_create); check generation status and rename artifacts (studio_status); delete artifacts (studio_delete); revise slide decks (studio_revise).
Downloading & Exporting
Download any generated artifact to a local file (
download_artifact); export data tables to Google Sheets or reports to Google Docs (export_artifact).
Notes
Create, list, update, and delete notes within a notebook (
note).
Sharing & Collaboration
Get sharing settings, enable/disable public links, invite individual or multiple collaborators (
notebook_share_status,notebook_share_public,notebook_share_invite,notebook_share_batch).
Organization
Manage notebook tags for smart selection (
tag); manage source labels for thematic organization with auto-labeling, emoji, and reorganization (label).
Batch & Pipelines
Execute batch operations (query, add source, create, delete, studio) across multiple notebooks (
batch); run or list multi-step workflows (pipeline).
Integrates GitHub Copilot with NotebookLM, allowing Copilot to manage notebooks, sources, and generate content through MCP tools.
Enables Perplexity Desktop to interface with NotebookLM for creating notebooks, adding sources, and generating audio content.
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-mcpCreate a notebook about quantum computing and generate a podcast."
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.
Gemini Notebook (formerly Google NotebookLM) CLI & MCP Server

Programmatic access to Gemini Notebook — via command-line interface (CLI) or Model Context Protocol (MCP) server.
Note: Personal/consumer accounts are tested regularly. Gemini Notebook Enterprise support is experimental. The documented
notebook.cloud.google.comhost has been live-verified with a project-qualifiedglobaldeployment; other Enterprise host variants may require additional validation.
☕ If you find notebooklm-mcp-cli useful, consider buying me a coffee. It's free and built in my spare time — but testing every Gemini Notebook feature takes real time and resources. A coffee helps me cover it and keep shipping. Thank you! 🙏
📺 Watch the Demos
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> --id <artifact-id> # Download audio file
nlm download all <notebook> -d ./exports # Download every artifact
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 Gemini Notebook:
# Automatic setup — picks the right config for each tool
nlm setup add claude-code
nlm setup add claude-desktop
nlm setup add gemini
nlm setup add github-copilot
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 Server
Features
Capability | CLI Command | MCP Tool |
List notebooks |
|
|
Create notebook |
|
|
Add Sources (URL, Text, Drive, File) |
|
|
Query notebook (persists to web UI) |
|
|
List/view/export chat sessions |
|
|
Create Studio Content (Audio, Video, etc.) |
|
|
Revise slide decks |
|
|
Download artifacts |
|
|
Download all artifacts (one or all notebooks) |
|
|
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:
Getting Started — Install, login, agent setup, and migration from another Gemini Notebook MCP
CLI Guide — Complete command reference
MCP Guide — All 43 MCP tools with examples
Authentication — Setup and troubleshooting
Remote MCP — Web/mobile connector feasibility, security, and authentication limitations
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-mcp-cliUsing uvx (Run Without Install)
uvx --from notebooklm-mcp-cli nlm --help
uvx --from notebooklm-mcp-cli notebooklm-mcpUsing pip
pip install notebooklm-mcp-cliUsing pipx
pipx install notebooklm-mcp-cliAfter installation, you get:
nlm— Command-line interfacenotebooklm-mcp— Gemini Notebook MCP server for AI assistants
# Clone the repository
git clone https://github.com/jacob-bd/gemini-notebook-mcp-cli.git
cd notebooklm-mcp
# Install with uv
uv tool install .Upgrading
# Using uv
uv tool upgrade notebooklm-mcp-cli
# Using pip
pip install --upgrade notebooklm-mcp-cli
# Using pipx
pipx upgrade notebooklm-mcp-cliAfter 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
Upgrading from Legacy Versions
If you previously installed the separate CLI and MCP packages, you need to migrate to the unified package.
Step 1: Check What You Have Installed
uv tool list | grep notebooklmLegacy packages to remove:
Package | What it was |
| Old CLI-only package |
| Old MCP-only package |
Step 2: Uninstall Legacy Packages
# Remove old CLI package (if installed)
uv tool uninstall notebooklm-cli
# Remove old MCP package (if installed)
uv tool uninstall notebooklm-mcp-serverStep 3: Reinstall the Unified Package
After removing legacy packages, reinstall to fix symlinks:
uv tool install --force notebooklm-mcp-cliWhy
--force? When multiple packages provide the same executable,uvcan leave broken symlinks after uninstalling. The--forceflag ensures clean symlinks.
Step 4: Verify Installation
uv tool list | grep notebooklmYou should see only:
notebooklm-mcp-cli v0.2.0
- nlm
- notebooklm-mcpStep 5: Re-authenticate
Your existing cookies should still work, but if you encounter auth issues:
nlm loginNote: The configured MCP server name is now
gemini-notebook-mcp. The executable remainsnotebooklm-mcpfor compatibility with existing installations.
Getting Started
If you are setting up the tool for the first time — or migrating from a browser-based Gemini Notebook MCP — see the Getting Started Guide. It covers install, login, agent registration, and a step-by-step migration path that avoids the "two Gemini Notebook servers registered" trap.
Uninstalling
To completely remove the MCP:
# Using uv
uv tool uninstall notebooklm-mcp-cli
# Using pip
pip uninstall notebooklm-mcp-cli
# Using pipx
pipx uninstall notebooklm-mcp-cli
# 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 toolAuthentication
Before using the CLI or MCP, you need to authenticate with Gemini Notebook:
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 profileUnattended / scheduled refresh:
A live session self-heals — when Google's short-lived cookies age out, the client automatically runs a headless refresh. For unattended machines you can also refresh proactively from a scheduler so a session never lapses:
nlm auth refresh # Headless, no interaction; exits non-zero on failure
nlm auth refresh --profile work # Refresh a named profileRun it on a timer (cron/launchd). It needs a saved Chrome profile from a prior
nlm login, and does not apply when NOTEBOOKLM_COOKIES is set as an
environment variable (that value overrides saved credentials).
Enterprise Authentication (Gemini Notebook Enterprise)
For organizations using Gemini Notebook Enterprise via Google Cloud, ask your Enterprise administrator for the project ID or number, the deployment location/multi-region, and confirmation that your account has access. The current documented host is notebook.cloud.google.com; older deployments may use notebooklm.cloud.google.com or vertexaisearch.cloud.google.com.
Set Base URL, GCP Project ID & Location:
export NOTEBOOKLM_BASE_URL="https://notebook.cloud.google.com" # Required: your GCP project ID or project number from your administrator export NOTEBOOKLM_PROJECT_ID="your-gcp-project-id-or-number" # Optional: GCP location/multi-region from your administrator: global (default), us, or eu export NOTEBOOKLM_LOCATION="global"Save an Enterprise Auth Profile: This opens the configured Enterprise URL in an isolated browser profile. Sign in with your organization account:
nlm login --profile enterprise nlm login switch enterpriseYou can switch back to a personal profile at any time:
unset NOTEBOOKLM_BASE_URL NOTEBOOKLM_PROJECT_ID NOTEBOOKLM_LOCATION nlm login switch personalConfigure MCP Server with Enterprise Environment Variables: When adding the MCP server to AI assistants (Claude, Cursor, etc.), pass
NOTEBOOKLM_BASE_URL,NOTEBOOKLM_PROJECT_ID, and optionallyNOTEBOOKLM_LOCATION:{ "mcpServers": { "gemini-notebook-mcp": { "command": "notebooklm-mcp", "env": { "NOTEBOOKLM_BASE_URL": "https://notebook.cloud.google.com", "NOTEBOOKLM_PROJECT_ID": "your-gcp-project-id-or-number", "NOTEBOOKLM_LOCATION": "global" } } } }
Each profile gets its own isolated browser session, so you can be logged into multiple Google accounts simultaneously. Enterprise environment variables apply to the current process, so keep them in an Enterprise-only shell or MCP configuration when you also use a personal account.
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, Dia, Comet, Brave, Edge, Chromium, Firefox, 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 comet, dia, brave, arc, edge, chrome, firefox, etc.). Falls back to auto-detection if the preferred named browser is not found. For any other Chromium-compatible browser, set its executable with nlm config set auth.browser_path /path/to/browser or NLM_BROWSER_PATH; an invalid explicit path fails closed instead of launching a different browser. When Chromium/CDP is unavailable, auto can fall back to Firefox.
For detailed instructions and troubleshooting, see docs/AUTHENTICATION.md.
MCP Configuration
⚠️ Context Window Warning: This MCP provides 43 tools. Disable it when not using Gemini Notebook to preserve context. In Claude Code:
@gemini-notebook-mcpto toggle. To keep it on but expose only a subset, see Selective tool exposure.
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 claude-desktop --profile 3p # Relay AI / Claude 3P
nlm setup add gemini
nlm setup add github-copilot
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 doctorClaude Desktop setup only writes to profiles that are detected as present. If
both regular and Relay AI/3P profiles exist, the CLI asks whether to configure
regular, 3P, or both. For scripts, use --profile regular|3p|both. If no
Claude Desktop profile is detected, nothing is created or changed.
Removal uses the same profile selection, for example
nlm setup remove claude-desktop --profile regular.
Removal only offers detected profiles containing this MCP or a recognized
legacy entry; unrelated MCP servers are left untouched.
Before adding or removing the MCP, fully quit the selected Claude Desktop profile. The CLI detects running regular and Relay AI/3P instances and refuses to write while they are open, because Claude may rewrite the config and discard the change. Reopen Claude Desktop after setup completes.
Install AI Skills (Optional)
Install the Gemini Notebook 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 updateUser-level skill installation requires the target tool to be detected first;
the CLI will not create a missing tool directory or install anyway. Use
--level project when you intentionally want a project-local skill.
Remove 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-mcp-cli nlm setup add cursor
uvx --from notebooklm-mcp-cli nlm loginFor tools that use JSON config, point them to uvx:
{
"mcpServers": {
"gemini-notebook-mcp": {
"command": "uvx",
"args": ["--from", "notebooklm-mcp-cli", "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 gemini-notebook-mcp notebooklm-mcp
gemini mcp add --scope user gemini-notebook-mcp notebooklm-mcpCursor / Windsurf resolve commands from your PATH, so the command name is enough:
{
"mcpServers": {
"gemini-notebook-mcp": {
"command": "notebooklm-mcp"
}
}
}Tool | Config Location |
Cursor |
|
Windsurf |
|
GitHub Copilot (VS Code workspace) uses .vscode/mcp.json with a top-level servers key:
{
"servers": {
"gemini-notebook-mcp": {
"command": "notebooklm-mcp",
"args": []
}
}
}Claude Desktop may not resolve PATH — use the full path to the binary:
{
"mcpServers": {
"gemini-notebook-mcp": {
"command": "/full/path/to/notebooklm-mcp"
}
}
}Find your path with: which notebooklm-mcp
Tool | Config Location |
Claude Desktop (macOS current/3P) |
|
Claude Desktop (macOS legacy) |
|
Claude Desktop (Windows) |
|
Claude Desktop (Windows 3P) |
|
Claude Desktop (Linux) |
|
Claude Desktop (Linux 3P) |
|
GitHub Copilot |
|
📚 Full configuration details: MCP Guide — Server options, environment variables, HTTP transport, and context window management. For Claude web/mobile and public deployment, read Remote MCP Deployment first.
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 Gemini Notebook 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 Gemini Notebook 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 short vertical video overview of the key idea"
"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"
"Check this specific artifact without listing every Studio item"
"List only the generated videos in this notebook"
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 |
v0.1.9+: 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.
For suspected browser-bound auth replay failures, run nlm doctor auth-replay.
If the cdp_in_page probe succeeds while normal replay fails, see
Experimental browser-backed RPC transport.
Troubleshooting
uv tool upgrade Not Installing Latest Version
Symptoms:
Running
uv tool upgrade notebooklm-mcp-cliinstalls an older version (e.g., 0.1.5 instead of 0.1.9)uv 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-mcp-cliThis bypasses any cached constraints and installs the absolute latest version from PyPI.
Verify:
uv tool list | grep notebooklm
# Should show: notebooklm-mcp-cli v0.1.9 (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
Contributing
See CLAUDE.md for detailed API documentation and how to add new features.
Vibe Coding Alert
Full transparency: this project was built by a non-developer using AI coding assistants. If you're an experienced Python developer, you might look at this codebase and wince. That's okay.
The goal here was to scratch an itch - programmatic access to Gemini Notebook - and learn along the way. The code works, but it's likely missing patterns, optimizations, or elegance that only years of experience can provide.
This is where you come in. If you see something that makes you cringe, please consider contributing rather than just closing the tab. This is open source specifically because human expertise is irreplaceable. Whether it's refactoring, better error handling, type hints, or architectural guidance - PRs and issues are welcome.
Think of it as a chance to mentor an AI-assisted developer through code review. We all benefit when experienced developers share their knowledge.
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).
Amy-Ra-lph (@Amy-Ra-lph) for security hardening: TOCTOU-safe credential storage, sensitive cookie redaction from debug logs, and pinning all CI actions to full commit SHAs (PRs #205–207).
Kyle Brodeur (@kylebrodeur) for WSL2 authentication support with Windows Chrome integration (PR #138).
Robiton (@Robiton) for enterprise Gemini Notebook support via configurable base URL (PR #114).
pjeby (@pjeby) for connection pooling and fast startup improvements (PR #54).
beausea (@beausea) for making the interface language configurable via the
NOTEBOOKLM_HLenvironment variable (PR #59).JumpLao (@JumpLao) for extended audio, video, and image format support (PR #82).
cbruyndoncx (@cbruyndoncx) for including
cited_textpassages in query output (PR #81).zxyasfas (@zxyasfas) for cited-only research import (PR #188).
Serdar Akın (@SERDAR-AKIN) for the multi-probe
AuthHealthCheckerthat fixes false"stale"reports for semi-stale cookies (PR #219).
Star History
License
Available Tools
48 toolsbatchBatchA
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
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Apply to ALL notebooks | |
| tags | No | Comma-separated tags to select notebooks | |
| query | No | Question to ask (for action=query) | |
| action | Yes | Operation to perform (query, add_source, create, delete, studio) | |
| titles | No | Comma-separated notebook titles (for action=create) | |
| confirm | No | Must be True for delete action | |
| source_url | No | URL to add (for action=add_source) | |
| artifact_type | No | Artifact type (for action=studio): audio, video, report, etc. | audio |
| notebook_names | No | Comma-separated notebook names or IDs |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does disclose that delete is IRREVERSIBLE and requires confirm=True, which is valuable. However, it does not describe side effects, permissions, or behavioral nuances for the other mutating actions like create, add_source, or studio.
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 and front-loaded with a one-sentence purpose, followed by a compact bulleted list of actions. Every line earns its place, and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main actions and flag the critical delete confirmation requirement. However, it does not explain notebook selection semantics (all, tags, notebook_names) or how this relates to similar siblings like cross_notebook_query. The schema and output schema compensate partially, but the description alone is not fully complete for a tool with 9 parameters.
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?
Because schema description coverage is 100%, the baseline is 3. The description adds little parameter-level meaning beyond the schema, though it does tie actions to their conceptual purposes. The schema already documents which parameters apply to which actions.
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 performs batch operations across multiple notebooks and enumerates five specific actions. It is specific enough to distinguish from single-notebook siblings, though it does not explicitly name sibling tools or contrast itself with cross_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?
The action list implies when to use the tool: for batch operations on notebooks, such as querying, creating, deleting, or adding sources across multiple notebooks. However, there is no explicit guidance on when to prefer this over single-notebook tools like notebook_query or notebook_delete, nor any 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_configureChat ConfigureC
Configure notebook chat settings.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | default|learning_guide|custom | default |
| notebook_id | Yes | Notebook UUID | |
| custom_prompt | No | Required when goal=custom (max 10000 chars) | |
| response_length | No | default|longer|shorter | 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 of behavioral disclosure. 'Configure notebook chat settings' only vaguely implies a mutation; it does not state whether existing settings are overwritten, whether the change is persistent, what scope it applies to, or whether any side effects occur.
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 a single sentence with no filler and front-loads the action verb. It is concise, though the brevity sacrifices useful detail; structurally it is appropriate but not exemplary.
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 tool has four parameters, a conditional dependency, and a large sibling context, but the description does not explain when to use it, what behavior to expect, or how it relates to other chat tools. With no annotations, this sparse description is insufficient for an agent to invoke the tool confidently in the right context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter, including defaults and the conditional requirement for custom_prompt. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Configure') and identifies the resource ('notebook chat settings'), making the tool's broad function clear. It distinguishes itself from read-oriented siblings like chat_list and chat_get by implying a mutation or settings update, though it does not specify exactly which settings are affected.
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 about when to use chat_configure versus alternatives such as chat_list, chat_get, or notebook_query. The description gives no prerequisites, such as requiring an existing notebook, nor does it explain conditional usage like needing custom_prompt when goal=custom.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_exportChat ExportC
Export a chat transcript to Markdown or JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export format: 'md' or 'json' (default: 'md') | md |
| notebook_id | Yes | Notebook ID or title alias | |
| conversation_id | No | Optional conversation ID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only states the export action and formats, without disclosing side effects, whether any auth is needed, whether the operation is read-only, or any limitations.
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 a single, front-loaded sentence with no filler. It is appropriately concise for a simple operation, though it could earn a higher score by also including brief usage or behavior context.
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 schema fully documents all parameters and an output schema exists, so the call contract is mostly covered. Missing usage guidance and behavioral transparency keep it from being fully complete, but complexity is low and structured metadata does most of the work.
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 already documents all three parameters, including defaults and allowed values for format, and notebook_id/conversation_id descriptions. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a chat transcript to Markdown or JSON, which is a specific verb plus resource. It distinguishes the tool from chat_get/chat_list by emphasizing export/output-file intent, though it does not explicitly name a sibling alternative.
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 about when to use chat_export versus alternatives like chat_get or export_artifact. The export verb and formats imply a file-download use case, but no context, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_getChat GetB
Get full transcript of a specific chat session.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | Notebook ID or title alias | |
| conversation_id | No | Optional conversation ID (defaults to latest active session) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does convey that the tool returns a full transcript of a specific session and implies a read-only retrieval. However, it does not mention potential large payloads, behavior when conversation_id is omitted (though the schema notes the default), or any failure/edge-case 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?
The description is one clear, front-loaded sentence with no filler or redundant wording. It communicates the core purpose 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?
For a simple retrieval tool with a full input schema and output schema present, the description is minimally adequate. However, it lacks guidance on how to choose this tool over chat_list or chat_export, and does not mention any operational nuances, making it only barely complete for an 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 input schema has 100% description coverage, clearly documenting notebook_id and conversation_id, including the default behavior. The description adds little beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('full transcript of a specific chat session'). It is specific enough to convey what the tool does, though it does not explicitly distinguish itself from sibling tools like chat_list or chat_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?
No guidance is provided about when to use this tool versus alternatives such as chat_list or chat_export. The agent is left to infer the appropriate context from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_listChat ListA
List chat sessions for a notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max chat sessions to return (default: 20) | |
| notebook_id | Yes | Notebook ID or title alias |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It conveys a read-only enumeration behavior ('List') and the notebook scoping, but does not disclose ordering, pagination behavior beyond the limit parameter, or whether returned chat sessions include full messages. The presence of an output schema mitigates the need to describe return values.
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 a single front-loaded sentence with no filler. It conveys the action, resource, and scope efficiently, and every word 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?
For a low-complexity list tool with 100% schema coverage and an output schema, the description is largely complete. It lacks explicit alternative routing and detailed behavioral notes, but an agent can correctly invoke it with the provided schema and description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds only the notebook scoping context for notebook_id and does not add semantic detail beyond the schema, matching the baseline for high coverage.
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 uses a specific verb ('List') and resource ('chat sessions') and scopes them to a notebook, clearly differentiating it from sibling tools like chat_get, chat_configure, and chat_export, which operate on individual chats or configure them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need a list of chat sessions for a notebook. However, it does not explicitly contrast it with alternatives (e.g., chat_get for a single session) or mention exclusions, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_createCollection CreateC
Create a new collection.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the collection | |
| notebook_ids | No | List of notebook UUIDs to include in the collection (optional) |
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 of behavioral disclosure. It only restates the action of creating without mentioning side effects, persistence, authentication requirements, error behavior, or any other behavioral trait that would help an agent predict the outcome beyond the name itself.
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 concise with no filler words; the single sentence states the essential action efficiently. It is slightly redundant with the title, and it lacks structure for additional context, but as a brief description it is not bloated.
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 tool is a simple create operation with full schema parameter coverage and an output schema, which helps. However, with no annotations and no behavioral context, the description leaves important contextual gaps such as when to choose this over collection_edit, whether there are side effects, and what expectations exist around the created collection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters and the optional notebook_ids list. The description adds no parameter-level meaning, but because the schema fully covers parameter semantics, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a verb ('Create') and a resource ('new collection'), making the core purpose unambiguous. It also implicitly distinguishes itself from sibling tools like collection_edit, collection_delete, and collection_list by the creation action, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like collection_edit or collection_delete. The only usage signal is the word 'create', which implies a new collection should be made, but no context, exclusions, or alternative conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_deleteCollection DeleteA
Delete a collection permanently. Notebooks inside the collection are NOT deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be True after user approval | |
| collection_id | Yes | UUID of the collection |
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 the full disclosure burden. It clearly communicates that the operation is permanent and does not cascade to notebooks. It could mention the need for confirm=true in the tool description itself, but 'permanently' and the non-deletion caveat cover the most critical behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core action is front-loaded, and the critical caveat about notebooks is placed immediately after, giving high information density with minimal 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?
For a destructive operation, the description captures permanence, non-cascading behavior, and the essential parameters are fully covered by the schema. The output schema exists, so return-value documentation is not necessary. Minor gap: the tool description itself does not state that confirm=true is required, though the schema covers this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters are already well documented: collection_id is a UUID, and confirm must be true after user approval. The tool description adds no additional parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Delete a collection permanently') and clearly distinguishes itself from notebook deletion tools by noting that notebooks inside the collection are NOT deleted. This makes its purpose immediately unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells the agent when to use this tool: when a collection should be permanently removed while preserving its notebooks. It does not explicitly name alternatives, but the caveat about notebooks strongly implies that this is not for deleting notebooks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_editCollection EditA
Edit an existing collection's name and/or list of notebooks.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name for the collection (optional) | |
| notebook_ids | No | New complete list of notebook UUIDs to include (optional) | |
| collection_id | Yes | UUID of the collection |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description plainly states that the operation mutates the collection's name and/or notebook list, which is useful given no annotations exist. However, it does not disclose auth requirements, whether the notebook list is replaced wholesale, or whether edits are reversible; the replacement semantics only appear in the schema's 'New complete list' wording.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly worded sentence contains the essential purpose with no filler, redundant details, or repetition of the tool name. It is front-loaded and 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?
For a simple tool with fully documented parameters and an output schema, the description is nearly complete. It could be fuller with an explicit note about full-list replacement or a pointer to collection_set_emoji, but the schema and sibling names mitigate those 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 100%, and each parameter already has a clear description. The tool description adds no new parameter meaning beyond confirming that name and notebook_ids are the editable fields, so the schema carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Edit'), a specific resource ('an existing collection'), and the exact fields affected ('name and/or list of notebooks'). It clearly distinguishes this tool from collection_create, collection_delete, and collection_set_emoji.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when an existing collection's name or notebook membership must be changed. It does not explicitly say when not to use it or name alternatives, such as using collection_create for new collections or collection_delete for removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_listCollection ListA
List all native collections.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. 'List all native collections' clearly indicates a read-only operation with explicit scope. It does not describe pagination, ordering, or authentication, but for a zero-parameter list tool with an output schema, this is reasonably 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?
The description is a single short sentence with no filler. It front-loads the action and object, and every word contributes to meaning.
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 simple, zero-parameter list operation, the description captures the essential operation and scope. The output schema is present, so return-value structure need not be repeated in prose. However, it does not explain what 'native collections' means relative to drive sources or other collection types, which could leave slight ambiguity.
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 zero properties, so there are no parameters to document. Schema description coverage is effectively 100%, and no parameter-level semantics are needed. A baseline of 4 is appropriate for a no-parameter tool.
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 uses a specific verb and resource: 'List' + 'native collections'. It clearly distinguishes this from sibling mutation tools like collection_create, collection_edit, and collection_delete, and from notebook_list by specifying collections rather than notebooks. The qualifier 'native' adds useful scope precision.
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 gives no guidance on when to use this tool versus alternatives. It does not mention notebook_list for notebooks, source_list_drive for drive sources, or any exclusion such as filtering by workspace. An agent must infer selection from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_set_emojiCollection Set EmojiA
Set or clear the emoji marker on a collection.
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | Yes | Emoji character (use empty string "" to clear) | |
| collection_id | Yes | UUID of the collection |
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 the full burden of behavioral disclosure. It states the operation but does not mention side effects, permission requirements, reversibility, or idempotency for a mutating tool, leaving important behavioral context unstated.
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 a single, front-loaded sentence with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two fully documented parameters and an output schema available, the description and schema together are sufficient for correct invocation. The main omission is behavioral context, but the tool's simple scope keeps this from being a major 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?
Schema coverage is 100%, so the schema already describes both parameters, including the empty-string clear behavior for emoji. The description does not add meaning beyond this, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('set or clear') with a specific resource ('the emoji marker on a collection'), making the tool's function unambiguous. This clearly distinguishes it from sibling tools like collection_edit, which would handle other collection properties.
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 gives clear context: use this tool exactly when you need to set or clear a collection's emoji marker. It does not explicitly name alternatives or exclusions, but the operation is self-contained enough that an agent can infer when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_notebook_queryCross 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.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Query ALL notebooks (use with caution — rate limits apply) | |
| tags | No | Comma-separated tags to select notebooks (e.g. "ai,mcp") | |
| query | Yes | Question to ask across notebooks | |
| notebook_names | No | Comma-separated notebook names or IDs (e.g. "AI Research, Dev Tools") |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the output shape—aggregated answers with per-notebook citations—but it does not mention rate-limit cautions on all=True, potential long-running behavior, or the async alternative notebook_query_start/status.
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 two concise sentences with no filler. The first sentence front-loads the core action and result, and the second covers selection modes 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 output schema and full parameter coverage reduce the need for extra detail. However, because there are no annotations, the description would benefit from explicitly noting rate limits, async options, or the difference between this and the single-notebook 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 100%, so the schema already documents all parameters. The description mostly restates the notebook selection options (by name, tags, all=True) without adding meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Query multiple notebooks' and defines the result as 'aggregated answers with per-notebook citations.' This clearly distinguishes it from the single-notebook sibling 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?
The description clearly communicates when to use the tool: when querying across multiple notebooks. It also gives the three selection modes: by name, by tags, or all notebooks. It does not explicitly name alternatives, but the cross-notebook scope is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_all_artifactsDownload All ArtifactsA
Download all completed studio artifacts of one notebook — or every notebook.
Creates a subdirectory of output_dir named after each notebook title and saves every completed artifact there, named after its title with the type's default extension (report → .md, mind_map → .json, video → .mp4, slide_deck → .pdf/.pptx, ...). Artifacts that are still generating or failed are skipped and listed in the result. A failure on one artifact (or one notebook in a sweep) does not stop the others.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No | Base directory for the per-notebook folders, relative to the download directory (default: the download directory itself). Paths outside it are refused; see download_artifact. | . |
| notebook_id | No | Notebook UUID (omit when all_notebooks=True) | |
| all_notebooks | No | Sweep every notebook in the account instead of one | |
| output_format | No | For quiz/flashcards only: json|markdown|html | json |
| skip_existing | No | Skip artifacts whose target file already exists — makes repeated runs incremental | |
| artifact_types | No | Restrict to these types, e.g. ["video", "slide_deck", "mind_map", "report"]. Default: all types. | |
| slide_deck_format | No | For slide decks only: pdf (default) or pptx |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so admirably. It discloses directory creation, file naming and extension conventions, skipping of in-progress/failed artifacts, and partial-failure tolerance. These details go well beyond the structured schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, starting with the core behavior before covering exceptions and edge cases. Every sentence adds value, and the example extension list is efficiently embedded without bloating the prose.
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 seven params, no annotations, and rich behavior, the description covers the essential mechanics, edge cases, and failure semantics. The output schema exists, so not detailing the return value further is acceptable; the result is adequately characterized by the mention of skipped/failed artifacts being listed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters. The description adds context about extensions and per-notebook folders, but does not materially deepen understanding of individual parameters beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action, 'Download all completed studio artifacts of one notebook — or every notebook,' identifying both the resource and scope. It clearly distinguishes itself from the single-item sibling download_artifact by emphasizing bulk and sweep behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for downloading all artifacts or sweeping notebooks, but does not explicitly say when to prefer it over download_artifact or export_artifact. The output_dir parameter points to download_artifact for path restrictions, providing some cross-reference, but no direct when-to-use vs alternatives guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_artifactDownload ArtifactB
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, file, quiz, flashcards.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll while the artifact download is still propagating | |
| artifact_id | No | Optional specific artifact ID (uses latest if not provided) | |
| notebook_id | Yes | Notebook UUID | |
| output_path | Yes | Where to save the file, relative to the download directory (e.g. "podcast.m4a" or "My Notebook/report.md"). Downloads are confined to that directory; a path outside it is refused. It defaults to ~/Downloads/gemini-notebook and the operator can move it with NOTEBOOKLM_DOWNLOAD_DIR. The saved absolute path comes back in the result. | |
| wait_timeout | No | Maximum seconds to wait when ``wait`` is enabled | |
| artifact_type | Yes | 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) - data_table_xlsx: Data Table Excel export (XLSX) - file: Generic Studio file export - quiz: Quiz (json|markdown|html) - flashcards: Flashcards (json|markdown|html) | |
| output_format | No | For quiz/flashcards only: json|markdown|html (default: json) | json |
| poll_interval | No | Seconds between readiness checks | |
| slide_deck_format | No | For slide_deck only: pdf (default) or pptx |
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 of behavioral disclosure. It discloses scope and unification, but says nothing about download-directory confinement, propagation waits, permissions, output side effects, or failure behavior; these traits are only discoverable by reading the parameter schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the primary action ('Download any NotebookLM artifact') before supporting scope. There is no filler, though the artifact-type list somewhat duplicates information already present in the input schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 9-parameter tool with no annotations, the top-level description is thin: it establishes the unified nature and supported artifact types but leaves sibling-tool selection and behavioral caveats to inference. The rich input schema compensates for most parameter-level gaps, so the definition is usable 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 description coverage is 100%, so all 9 parameters are already documented with defaults and constraints. The top-level description adds no parameter-level meaning beyond re-listing artifact type names, which the schema already covers with more detail; this meets the baseline but does not exceed 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 names the specific action ('Download'), the resource ('NotebookLM artifact'), and the outcome ('to a file'), then enumerates the supported artifact types. It also identifies itself as the 'Unified download tool replacing 9 separate download tools,' which helps an agent recognize it as the general-purpose download entry point, though it does not explicitly contrast it with download_all_artifacts or 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 implies general usage with 'any NotebookLM artifact' and 'Unified download tool replacing 9 separate download tools,' but it never explicitly states when to prefer this tool over sibling tools like download_all_artifacts or export_artifact. There are no exclusions, prerequisites, or batch-vs-single-artifact routing cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_artifactExport ArtifactA
Export a NotebookLM artifact to Google Docs or Sheets.
Supports:
Data Tables → Google Sheets
Reports (Briefing Doc, Study Guide, Blog Post) → Google Docs
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Title for exported document (optional) | |
| artifact_id | Yes | Artifact UUID to export | |
| export_type | Yes | "docs" or "sheets" | |
| notebook_id | Yes | Notebook UUID |
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 of behavioral disclosure. It clearly states that the tool exports to an external Google destination and lists supported conversions, but it does not mention required Google authentication, file-creation side effects, or Drive permission implications. This is reasonable but not fully 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?
The description is short, front-loaded with the core action, and uses a compact bullet list to convey the supported mappings. Every sentence earns its place, and there is no redundant or vague filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema and fully described parameters cover the return value and argument details, and the description covers the main usage mapping. However, because there are no annotations, the description should also disclose Google-side prerequisites such as authentication or Drive write behavior; this gap prevents full completeness for a mutating external export tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by mapping artifact types to export targets, thereby clarifying the meaning of export_type values 'docs' and 'sheets' in a way the raw schema does not.
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 opening sentence names a specific action (Export), a resource (NotebookLM artifact), and a destination (Google Docs or Sheets). The artifact-type mapping further clarifies scope and distinguishes this from sibling download tools like download_artifact, making the purpose unmistakable.
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 bullet list explicitly tells the agent which artifact types map to which export target: Data Tables → Google Sheets, Reports → Google Docs. This gives clear context for selecting the right export_type and target. It does not explicitly mention alternatives such as download_artifact or state when not to use this tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
labelLabelA
Manage source labels in a notebook. Unified tool for all label operations.
Labels let you organize sources into thematic categories. Requires 5+ sources for auto-labeling. Sources can belong to multiple labels simultaneously.
Supports: auto, list, reorganize, create, rename, set_emoji, move_source, delete
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Label display name (required for create and rename) | |
| emoji | No | Emoji character for set_emoji (e.g. "📊"), or "" to clear | |
| action | Yes | Operation to perform: - auto: AI auto-labels all sources into thematic categories - list: List current labels (triggers AI if none exist) - reorganize: Force AI re-categorization (requires confirm=True unless unlabeled_only=True) - create: Create a new empty label (requires name) - rename: Rename a label (requires label_id, name) - set_emoji: Set or clear emoji on a label (requires label_id, emoji) - move_source: Assign a source to a label (requires label_id, source_id) - delete: Delete label(s) permanently (requires label_id or label_ids, confirm=True) | |
| confirm | No | Must be True for delete action and for reorganize with unlabeled_only=False | |
| label_id | No | Label UUID (required for rename, set_emoji, move_source, delete) | |
| label_ids | No | List of label UUIDs for batch delete (alternative to label_id) | |
| source_id | No | Source UUID to assign (required for move_source) | |
| notebook_id | Yes | Notebook UUID | |
| unlabeled_only | No | For reorganize: if True, only label sources not yet in any label. If False (default), replaces ALL existing labels from scratch (requires confirm=True). |
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 behavioral context. It does disclose the 5+ source threshold for auto-labeling and that sources can belong to multiple labels simultaneously. However, the description itself does not surface that delete is permanent or that reorganize can replace all labels; those warnings live only in schema action text.
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 compact: a purpose line, two domain facts, and a bullet-style action list. It front-loads the key purpose and avoids verbose prose. The only minor redundancy is echoing the operation list that also appears in the action schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters and 8 actions, the description is appropriately high-level while the schema and output schema carry the detailed parameter and return contract. It supplies essential domain constraints, such as the 5+ source requirement and multi-label membership, needed for selection. A short warning about destructive operations would improve it, but the overall definition is mostly 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 description coverage is 100%, so the baseline is 3. The description lists operation names, but the input schema already explains each operation and its required parameters with more detail. No additional parameter-level meaning is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Manage source labels in a notebook,' naming a specific resource and a management verb, and positions itself as the 'Unified tool for all label operations.' The supported action list concretely scopes the tool. It doesn't explicitly differentiate from related siblings like 'tag,' so it stops short of a 5.
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 tells the agent this is the central tool for label work ('Unified tool for all label operations') and gives a concrete condition: auto-labeling requires 5+ sources. It doesn't name exclusion cases or alternatives such as 'tag,' but the instruction to use this for label operations is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
noteNoteB
Manage notes in a notebook. Unified tool for all note operations.
Supports: create, list, update, delete
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Note title (optional for create/update) | |
| action | Yes | 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) | |
| confirm | No | Must be True for delete action | |
| content | No | Note content (required for create, optional for update) | |
| note_id | No | Note UUID (required for update/delete) | |
| notebook_id | Yes | Notebook UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior, but it only lists operations. It does not mention that delete is permanent, that confirmation is required, or any other side effects, prerequisites, or safety considerations.
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 short, front-loaded, and easy to scan. The operation list is useful, though the phrase 'Unified tool for all note operations' is slightly redundant with the first sentence.
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 gives a high-level overview and covers the main operations, but it omits practical context such as destructive behavior, confirm requirements, or when to use sibling tools. The output schema reduces the need to explain return values, so this is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no meaningful parameter semantics beyond what the schema already documents; the listed operations map to the action parameter but do not clarify action-dependent requirements.
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 identifies the tool as managing notes in a notebook and enumerates the supported operations: create, list, update, delete. It is clear enough about the resource and scope, though it does not explicitly differentiate itself from sibling tools like notebook_query or notebook_get.
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 phrase 'Unified tool for all note operations' implies when to use it, and the operation list gives concrete actions. However, there is no explicit guidance about when not to use it or which sibling tools might be preferable for note-related queries or notebook-level operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_createNotebook CreateB
Create a new notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional title for the notebook |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. 'Create a new notebook' transparently indicates a mutating action, which is the core behavior. However, it does not mention side effects, permissions, idempotency, or what happens when the optional title is omitted, leaving some gaps for an agent.
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 a single, focused sentence with no redundant wording. It is concise and front-loaded with the main verb. While it could include more context without becoming bloated, its current length is appropriate for the tool's simplicity.
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 tool is simple: one optional parameter and an output schema, so the description is nearly sufficient. However, the lack of usage guidance and behavioral detail, especially given no annotations, prevents the definition from being fully complete. An agent can infer basic use but not broader context within the notebook toolset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the title parameter is already well documented as 'Optional title for the notebook'. The description adds no additional parameter context, which aligns with the baseline of 3 when the schema fully covers parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and resource ('new notebook'), making the tool's purpose unmistakable. It also distinguishes from siblings like notebook_list, notebook_get, and notebook_describe by naming the create action and target resource. The title 'Notebook Create' reinforces this without being a tautology.
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 versus alternatives such as collection_create or notebook_rename. There is no mention of prerequisites, intended workflows, or conditions that would make this tool the right choice. It is neutral but entirely without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_deleteNotebook DeleteA
Delete notebook permanently. IRREVERSIBLE. Requires confirm=True.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be True after user approval | |
| notebook_id | Yes | Notebook UUID |
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 fully carries the safety burden. It discloses that the operation is permanent and irreversible and adds the guardrail that confirmation is mandatory. This is strong behavioral disclosure for a destructive mutation tool, despite not enumerating every possible side effect.
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 three short clauses with no filler, and the most important safety facts (permanent, irreversible, confirmation) are front-loaded. Every sentence contributes essential 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?
For a two-parameter destructive tool, the description plus the fully documented schema and output schema leave the agent with everything it needs: the target ID, the confirmation requirement, and the irreversibility warning. No critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's 'Requires confirm=True' restates the schema's own 'Must be True after user approval' without adding new syntactical or semantic detail about notebook_id.
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 uses a concrete verb and object ('Delete notebook') plus the critical modifier 'permanently,' making the destructive scope unmistakable. This clearly separates it from sibling tools like notebook_rename and notebook_describe, which do not destroy the 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 text gives clear context: this tool exists for permanent deletion, and it explicitly states the precondition 'Requires confirm=True.' It does not name alternative tools or exclusions, but the semantics and sibling names make the correct usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_describeNotebook DescribeA
Get AI-generated notebook summary with suggested topics.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | Notebook UUID |
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 must stand alone. It adds useful behavioral context by noting the summary is AI-generated rather than stored, but it does not disclose latency, model dependency, cost, or confirm there are no side effects. This is a moderate gap for an operation that may invoke an AI model.
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 a single front-loaded sentence with no filler or redundant restatement of the tool name. Every word adds meaning.
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 tool is simple, has one well-documented parameter, and an output schema exists, so the description does not need to enumerate return values. However, it lacks explicit routing among sibling lookup tools and does not address the operational implications of AI generation, making it only minimally 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 description coverage is 100% and the only parameter, notebook_id, is already documented as a 'Notebook UUID'. The description adds no additional parameter meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and a specific deliverable ('AI-generated notebook summary with suggested topics'), which clearly differentiates this from sibling tools like notebook_get or notebook_list. The resource and nature of the result are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's purpose implies using it when an AI-generated summary is needed, but the description gives no explicit when-to-use guidance or alternatives. It does not mention that raw notebook content or metadata should be retrieved via notebook_query or notebook_get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_getNotebook GetC
Get notebook details with sources.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | Notebook UUID |
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 of behavioral disclosure. 'Get' implies a read operation and 'with sources' hints at the response content, but it does not disclose permission requirements, whether sources are fully resolved, error behavior, or 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?
The description is a single concise sentence with no filler. The core operation and the distinctive 'with sources' detail are front-loaded. It loses the fifth point because it provides no additional context or structural differentiation.
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 simple one-parameter get tool with an output schema, this is minimally adequate. The output schema covers return values, so the description need not detail them, but the absence of annotations and lack of disambiguation from notebook_describe leave meaningful 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 100%, and the single parameter notebook_id is documented as 'Notebook UUID'. The description adds no extra parameter meaning, but the baseline of 3 applies because the schema already handles parameter semantics adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete operation: get notebook details, and adds 'with sources' to indicate the scope of the result. However, it does not differentiate from sibling tools like notebook_describe or notebook_query, so it is clear but not fully distinguishable.
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 about when to use this tool versus alternatives such as notebook_describe or notebook_query. The description only states what the tool does, not the conditions that make it the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_listNotebook ListC
List all notebooks.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | Maximum number of notebooks to return (default: 100) |
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 of behavioral disclosure, but it only says 'List all notebooks.' It does not mention pagination, ordering, default limits, or that this is a read-only operation. The schema's max_results default of 100 also slightly conflicts with the claim of listing 'all' notebooks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and the core operation is front-loaded. It is appropriately short for such a simple tool, though it omits useful context that would have made it more complete.
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 tool is simple and has full schema and output schema coverage, but the description lacks usage guidance, behavioral caveats, and qualification of the 'all' claim relative to max_results. It is minimally viable but leaves notable gaps for an agent deciding when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even with no parameter details in the description. The description adds no meaning about max_results, and the word 'all' could be mildly misleading given the default limit of 100, though the schema clarifies the constraint.
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 'notebooks', and the word 'all' conveys scope, which helps distinguish it from single-notebook operations like notebook_get or notebook_describe. It does not explicitly differentiate from siblings, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use notebook_list versus notebook_get, notebook_describe, or other notebook-related tools. The description gives no exclusions, alternatives, or selection criteria, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_queryNotebook 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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Question to ask | |
| timeout | No | Wall-clock query budget in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0; source-heavy notebooks may need 180+) | |
| source_ids | No | Source IDs to query (default: all) | |
| notebook_id | Yes | Notebook UUID | |
| conversation_id | No | For follow-up questions | |
| new_conversation | No | Start a fresh conversation when conversation_id is omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It does clarify an important scope constraint: the tool only queries existing notebook sources and is not for discovery. However, it does not state whether the query is read-only, whether it creates conversation state, whether it has significant cost/latency, or any auth prerequisites. Some of this is implied but 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 two short sentences with no filler. The core scoping is front-loaded, and the exclusion/alternative is immediately actionable. Every phrase 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?
Given the rich input schema and presence of an output schema, the description covers the most important usage context: existing sources only and the main alternative for discovery. It does not address related siblings like notebook_query_start or cross_notebook_query, nor does it cover behavioral caveats such as cost or side effects, so it is strong but not fully 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?
Schema description coverage is 100%, and the schema itself gives detailed, meaningful parameter descriptions including defaults, timeout behavior, source filtering, and conversation IDs. The description adds only high-level context about querying existing sources and does not need to repeat parameter details, so it stays at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Ask AI about EXISTING sources already in notebook.' It also explicitly draws the boundary against finding new sources, which immediately distinguishes it from sibling tools like research_start. This is a clear, non-tautological purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit routing rule: 'Use research_start instead for: deep research, web search, find new sources, Drive search.' This directly tells the agent when not to use this tool and which alternative to pick, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_query_startNotebook Query StartA
Start a notebook query asynchronously for source-heavy notebooks or long questions.
Use this instead of notebook_query when the response may take longer than the default 120-second budget. A timeout around 180 seconds is a useful starting point for source-heavy notebooks. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Question to ask | |
| timeout | No | Wall-clock query budget in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0; source-heavy notebooks may need 180+) | |
| source_ids | No | Source IDs to query (default: all) | |
| notebook_id | Yes | Notebook UUID | |
| conversation_id | No | For follow-up questions | |
| new_conversation | No | Start a fresh conversation when conversation_id is omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clearly states that the tool returns immediately with a query_id rather than waiting for the result, and that the result must be obtained by polling notebook_query_status. This is strong transparency, though it does not mention error behavior or side effects beyond asynchronous execution.
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 compact, front-loaded with the core purpose, and every sentence contributes: when to use it, timeout guidance, return behavior, and the follow-up workflow. There is no filler or redundant restating of the tool name.
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 provides a complete mental model for the agent: why this tool exists, when to prefer it, what to expect upon invocation, and how to retrieve the eventual result. The presence of an output schema further reduces the need to describe return values in prose.
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 coverage is 100%, so the schema already documents all parameters meaningfully. The description reinforces the timeout guidance from the schema, but it does not add substantive new parameter-level semantics beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (start an asynchronous query), a target use case (source-heavy notebooks or long questions), and a clear resource (notebook). It also distinguishes itself from sibling tools by naming notebook_query and notebook_query_status and explaining the async vs. polling relationship.
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 to use this tool instead of notebook_query when the response may exceed the 120-second budget, and it provides a suggested 180-second timeout for source-heavy notebooks. It also gives a terse workflow: notebook_query_start -> notebook_query_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_query_statusNotebook 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'.
| Name | Required | Description | Default |
|---|---|---|---|
| query_id | Yes | The query ID returned by notebook_query_start |
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 the full burden of behavioral disclosure. It does this well by explaining the async nature, that it returns the query result when completed, and that it returns current status if still in progress. It also names terminal statuses ('completed' or 'error'), which helps the agent understand expected outcomes without needing to invoke 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 three short sentences, each earning its place: what it does, what it returns, and how to poll. It is front-loaded with the primary purpose and contains no redundant phrasing or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter polling tool with an output schema available, the description is complete. It explains the relationship to notebook_query_start, the expected return behavior, and the polling loop with terminal statuses. No critical information appears missing for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the single query_id parameter is already documented as 'The query ID returned by notebook_query_start'. The description reinforces this relationship but adds no new parameter-level meaning. The baseline of 3 is appropriate when the schema already carries the full parameter documentation.
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 uses a specific verb and resource: 'Check the status of an async notebook query'. It clearly distinguishes this from the sibling tool notebook_query_start by explicitly tying itself to queries 'started with notebook_query_start' and describing a polling role. The name alone is also unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: after starting a query with notebook_query_start. It also gives explicit polling guidance: 'Poll this tool every few seconds until status is completed or error.' It does not explicitly state when not to use it or name alternative status-type tools, but the workflow 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_renameNotebook RenameC
Rename a notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| new_title | Yes | New title | |
| notebook_id | Yes | Notebook UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. 'Rename a notebook' implies a mutating title change, but it does not disclose side effects, whether the operation overwrites the existing title, permission requirements, or any conflict 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?
The description is extremely concise and front-loaded, with no filler words. It communicates the essential operation in one short sentence, though it misses opportunities to add useful context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter rename operation with an output schema, the description covers the basic action. However, it omits behavioral guidance such as side effects, required permissions, and how this tool relates to notebook_create or notebook_delete, leaving gaps for an agent relying solely on this description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters adequately. The description adds no additional meaning beyond what is already present in the input schema, resulting in the baseline score.
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 uses a specific verb 'Rename' and identifies the resource 'notebook', clearly stating the core operation. It does not explicitly differentiate this from sibling tools, but the rename operation is distinct from notebook_create, notebook_delete, and notebook_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?
No guidance is given about when to use this tool versus alternatives, what prerequisites exist (e.g., the notebook must already exist), or how it differs from notebook_create or notebook_edit-style operations. The intended usage is only implied by the operation name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipelinePipelineB
Manage and execute multi-step notebook pipelines.
Actions:
run: Execute a pipeline on a notebook
list: List all available pipelines (builtin and user-defined)
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Operation to perform (run, list) | |
| input_url | No | URL variable for pipelines that need it (replaces $INPUT_URL) | |
| notebook_id | No | Target notebook UUID (required for action=run) | |
| pipeline_name | No | Pipeline name (required for action=run, e.g. "ingest-and-podcast") |
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 burden of behavioral disclosure. 'Execute' implies that run triggers meaningful work, but the description does not state whether execution is asynchronous, long-running, destructive, or what side effects it may have on the notebook or related resources. Only 'list' is obviously safe by inspection.
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 compact, front-loaded with the resource, and uses a scannable bullet list for the two actions. Every line earns its place, with no redundant elaboration or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-action dispatcher, the description sufficiently covers the tool's purpose while the schema covers parameter requirements and an output schema exists for return values. The main gap is behavioral context around execution side effects, but this is a minor omission for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already has a meaningful description, including required-for-run semantics and the $INPUT_URL substitution behavior. The tool description adds no parameter-level detail beyond naming the run/list actions, so the schema carries the interpretive weight; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('multi-step notebook pipelines') and enumerates two concrete operations, run and list, each with a one-line definition. It is specific enough to convey what the tool does, though it does not explicitly differentiate this tool from sibling tools such as batch or 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?
The action list provides clear context for selecting between run and list: run to execute a pipeline on a notebook, list to enumerate available pipelines. However, it gives no guidance on when to prefer this tool over alternative sibling tools, and prerequisites are left to the schema rather than stated in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_authRefresh 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?
With no annotations, the description carries the full burden of behavioral disclosure. It explains that the tool either reloads tokens from disk or performs headless re-authentication, and states that it returns a success status. It could be more explicit about side effects like overwriting the current session, but the core behavior and outcome are disclosed.
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 compact and well structured: main behavior first, then use cases, then return value. Every sentence adds operational value and there is no redundant or vague phrasing.
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 parameterless tool, this is complete. It explains when to call it, what it attempts to do, prerequisites (nlm login or Chrome saved login), and what the return status conveys. The output schema may hold richer detail, but the description covers the essentials an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and schema coverage is 100%, so there is nothing parameter-specific to document. The baseline for zero-parameter tools is 4, and the description appropriately focuses on behavior and use context instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Reload auth tokens from disk or run headless re-authentication.' This clearly states what the tool does and distinguishes it from related tools like save_auth_tokens, which is about persisting tokens rather than refreshing them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete trigger conditions: call after running `nlm login` or when Chrome profile has saved login for automatic re-authentication. It does not explicitly contrast with save_auth_tokens or state when not to use it, but the guidance is sufficiently clear for a zero-parameter utility tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_importResearch ImportA
Import discovered sources into notebook.
Call after research_status shows status="completed".
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Research task ID | |
| timeout | No | Import timeout in seconds (default: 300, increase for large notebooks) | |
| cited_only | No | Import only sources cited by the research report. Overrides source_indices when enabled. | |
| notebook_id | Yes | Notebook UUID | |
| source_indices | No | Source indices to import (default: all) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the key prerequisite and clearly implies a mutating import, but it does not describe idempotency, duplicate handling, or other side effects on the notebook. This is adequate but not deeply 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?
The description is two concise sentences: the first states the action, the second gives an operational precondition. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential workflow context and the full parameter schema plus output schema handle the structural details. It lacks discussion of idempotency or duplicate imports, but these are not critical given the rich structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all parameters already have descriptive text. The tool description itself adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Import'), object ('discovered sources'), and destination ('notebook'), which clearly differentiates this from research_start and research_status. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit workflow precondition: 'Call after research_status shows status="completed"'. This tells the agent when to invoke the tool, but it does not name alternative tools or explicitly state when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_startResearch 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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | fast (~30s, ~10 sources) | deep (~5min, ~40 sources, web only) | fast |
| query | Yes | What to search for (e.g. "quantum computing advances") | |
| title | No | Title for new notebook | |
| source | No | web|drive (where to search) | web |
| notebook_id | No | Existing notebook (creates new if not provided) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. The 'Workflow: research_start -> poll research_status -> research_import' line clearly conveys that this is an asynchronous first step, not a synchronous results-returning call. It also clarifies that the tool finds new sources rather than querying existing content, though side effects like notebook creation are left to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three compact sentences with no filler: purpose is front-loaded, followed by concrete usage examples and the workflow. Every sentence contributes useful selection and invocation 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?
The description covers what the tool does, when to use it, and where it fits in the start -> status -> import workflow, while the schema covers the parameters and an output schema exists. It is mostly complete, though it does not mention prerequisites such as Drive sync/auth or explicitly exclude use cases better served by query-focused siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the mode/source mapping ('deep research' -> mode, 'search Drive' -> source) but adds little meaning beyond what the schema already provides for query, title, and notebook_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('web or Google Drive') and outcome ('FIND NEW sources'), so it is clearly a source-discovery tool. It also distinguishes itself from later-stage siblings like research_status and research_import through the workflow line.
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 gives explicit invocation contexts with natural-language examples: 'deep research on X', 'find sources about Y', 'search web for Z', 'search Drive'. It does not state when not to use the tool or name alternative query tools like notebook_query_start, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_statusResearch StatusA
Poll research progress. Blocks until complete or timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional query text for fallback matching when task_id changes (deep research). Contributed by @saitrogen (PR #15). | |
| compact | No | If True (default), truncate report and limit sources shown to save tokens. Use compact=False to get full details. | |
| task_id | No | Optional Task ID to poll for a specific research task. | |
| max_wait | No | Max seconds to wait (default: 900, 0=single poll) | |
| auto_import | No | If True, automatically import sources when research completes. If False (default), returns next_action hint to call research_import manually. | |
| notebook_id | Yes | Notebook UUID | |
| poll_interval | No | Seconds between polls (default: 30) |
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 responsibility for behavioral disclosure. It does reveal the critical blocking behavior and timeout termination, which is valuable. However, it omits potential side effects such as auto_import behavior or what happens on timeout (e.g., partial results), leaving gaps for a caller to discover.
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 two short sentences with no filler. It front-loads the core action ('Poll research progress') and then states the key behavior. Every word 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?
The output schema and complete parameter documentation cover the return shape and inputs, so the description only needs to add behavioral and workflow context. It covers blocking behavior but lacks workflow placement (after research_start, before research_import) and does not distinguish from sibling status tools. This makes it adequate but not 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 description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds no extra parameter-level detail beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Poll') and a clear resource ('research progress'), and adds the key behavioral trait that it blocks until completion or timeout. It is distinct from research_start and research_import, though it does not explicitly differentiate itself from similar status tools like notebook_query_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage: call this to poll research progress and wait for completion. However, it gives no explicit guidance on when to use it versus alternatives, nor does it mention that it should follow research_start or precede research_import. This is implied usage, not explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_auth_tokensSave 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
| Name | Required | Description | Default |
|---|---|---|---|
| cookies | Yes | Cookie header from Chrome DevTools (only needed if CLI fails) | |
| csrf_token | No | Deprecated - auto-extracted | |
| session_id | No | Deprecated - auto-extracted | |
| request_url | No | Optional - contains session ID if extracting manually | |
| request_body | No | Optional - contains CSRF if extracting manually |
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 the full burden of disclosing behavioral traits. It explains the fallback workflow but does not describe side effects, storage behavior, whether existing auth is overwritten, or what the tool returns after saving tokens.
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 short and front-loaded with the key fallback message. The bullet list repeats the 'try nlm login first' idea slightly, but overall it is efficient and well-structured for an AI agent.
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 provides enough routing context for the agent to know when to use the tool, and the schema covers parameters and output. However, without annotations, the lack of behavioral and side-effect details leaves some context gaps for a sensitive auth-related operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter descriptions already document each field well. The main description adds little parameter-specific meaning beyond identifying cookies as the required input, which is a reasonable baseline given the high schema coverage.
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 the action ('Save') and resource ('NotebookLM cookies'), and labels the tool as a FALLBACK method for authentication. It clearly conveys the purpose, though it does not explicitly differentiate from the sibling `refresh_auth` tool.
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 gives explicit guidance: run `nlm login` first via Bash/terminal, and only use this tool if the automated CLI fails. This is clear, actionable, and leaves little room for an agent to misuse the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoServer InfoA
Get version, auth status, and conservative MCP capability visibility.
AI assistants: If update_available is True, inform the user that a new version is available and suggest updating with the provided command.
auth_status is the result of an AuthHealthChecker probe. The checker
runs a multi-probe strategy (homepage fetch + API fallback) with
30-second TTL caching and mtime-based bypass on auth-file changes.
The reported value may therefore be up to 30 seconds old, and an
external nlm login is picked up within one check cycle without
waiting for the TTL to expire.
auth_status meanings:
"configured" — homepage (or API fallback) check passed; credentials are good. Cached credentials may be reported as configured for up to 30 seconds.
"not_configured" — no credentials are stored (first-time setup).
"stale" — credentials are known-bad (expired or past the 7-day heuristic). Operations will fail; ask the user to run
nlm loginto refresh."unverified" — the check could not be completed (network error, timeout, non-200 response). Cached credentials may still work for actual API calls, so do not assume the user needs to re-auth.
"error" — unexpected exception inside the check itself.
Returns: dict with version info: - version: Current installed version - latest_version: Latest version on PyPI (or None if check failed) - update_available: True if a newer version is available - auth_status: configured | stale | unverified | not_configured | error - update_command: Command to run to update - mcp_capabilities: Built-in tool groups visible in this server process - provider_capabilities: Explicitly unprobed provider/account capabilities
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It explains the caching behavior, the 30-second staleness window, the mtime-based bypass, and the exact meaning of each auth_status value, including edge cases like unverified credentials still working.
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 longer than average, but most of the length is justified by detailed auth_status semantics and actionable assistant instructions. It is well-structured and front-loaded with the core purpose, though the return-field listing is partially redundant with the existing output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a no-parameter informational tool. It explains what the tool returns, how to interpret each auth_status value, and what actions the assistant should take in different scenarios. The output schema covers the structured return details, so nothing critical is missing.
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, so the baseline is 4. The description does not need to explain parameter semantics, and the empty schema fully documents the lack of inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves version, auth status, and MCP capability visibility, using a specific verb and resource. It does not explicitly differentiate itself from sibling tools, but the resource is distinct enough that no direct comparison is necessary.
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 gives strong conditional guidance, such as informing the user when update_available is True and telling the assistant to have the user run `nlm login` when auth_status is stale. It also warns against assuming re-auth is needed when auth_status is unverified. It does not explicitly compare to sibling tools like refresh_auth, but the behavioral guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_addSource AddA
Add a source to a notebook. Unified tool for all source types.
Supports: url, text, drive, file
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to add (for source_type=url) | |
| text | No | Text content to add (for source_type=text) | |
| urls | No | List of URLs to add in bulk (for source_type=url, alternative to url) | |
| wait | No | If True, wait for source processing to complete before returning | |
| title | No | Display title (for text sources) | |
| doc_type | No | Drive doc type: doc|slides|sheets|pdf (for source_type=drive) | doc |
| file_path | No | Local file path on the machine running the MCP server (for source_type=file). A path on a different client/agent host is not accessible to the server. | |
| document_id | No | Google Drive document ID (for source_type=drive) | |
| notebook_id | Yes | Notebook UUID | |
| source_type | Yes | Type of source to add: - url: Web page or YouTube URL - text: Pasted text content - drive: Google Drive document - file: Local file upload. The canonical local-admission contract has 43 case-insensitive extensions. Admission does not guarantee provider processing success for an individual file. OFFICIAL_FILE_EXTENSIONS: .pdf, .txt, .md, .docx, .csv, .pptx, .epub, .avif, .bmp, .gif, .heic, .heif, .ico, .jp2, .jpe, .jpeg, .jpg, .png, .tif, .tiff, .webp, .3g2, .3gp, .aac, .aif, .aifc, .aiff, .amr, .au, .avi, .cda, .m4a, .mid, .mp3, .mp4, .mpeg, .ogg, .opus, .ra, .ram, .snd, .wav, .wma Image-bearing sources may feed Studio video generation's visual-crop pipeline; charts, photos, and diagrams may be extracted as on-screen aids. | |
| wait_timeout | No | Max seconds to wait if wait=True (default 120) |
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 safety and side-effect behavior, but it only restates the action and supported source types. It does not mention that adding a source creates a notebook resource, may be asynchronous unless wait=True, or has file-system/admission caveats; those live in the schema rather than the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler, and the operative verb and scope are front-loaded. Every sentence contributes by naming the resource, the unified nature, and the supported source types.
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 schema is rich enough to guide per-parameter invocation, and an output schema exists, so the description does not need to discuss return values. However, for a tool with 11 parameters and no annotations, the description leaves general behavioral context and sibling-tool routing unstated; it is minimally adequate but not 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 description coverage is 100%, so the input schema already documents all 11 parameters. The description's 'Supports: url, text, drive, file' matches source_type choices but adds no parameter-level meaning beyond the schema's existing per-parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description names a specific action and resource ('Add a source to a notebook') and immediately lists supported source types, making it clear this is the ingestion tool rather than sibling operations like source_describe or source_delete. 'Unified tool for all source types' further establishes its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (adding any of url, text, drive, file to a notebook) but does not explicitly contrast it with siblings such as source_list_drive, source_sync_drive, or source_get_content. There is no 'when not to use' guidance beyond the implied add-vs-manage distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_deleteSource DeleteA
Delete source(s) permanently. IRREVERSIBLE. Requires confirm=True.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be True after user approval | |
| source_id | No | Source UUID to delete (single) | |
| source_ids | No | List of source UUIDs to delete (bulk, alternative to source_id) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clearly flags irreversibility and permanence ('IRREVERSIBLE', 'permanently') and the confirmation gate, which are the most important behavioral traits for a delete tool. Minor omissions like cascading effects or auth requirements do not outweigh this 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?
The description is extremely concise: three short, front-loaded statements with zero filler. Every phrase ('permanently', 'IRREVERSIBLE', 'Requires confirm=True') adds meaningful operational 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?
The essential context for a destructive tool is present: what it deletes, that it is permanent, and that confirmation is required. However, the schema lists no required parameters, and the description does not clarify that at least one of source_id or source_ids must be provided, nor what happens if both are supplied. The output schema covers return values, but this input ambiguity remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters with descriptions. The description adds only marginal value by implying bulk support with 'source(s)' and echoing 'confirm=True', which is already stated in 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 explicitly states the action ('Delete'), the target ('source(s)'), and the critical characteristic ('permanently', 'IRREVERSIBLE'). This makes the tool's destructive purpose unambiguous and distinguishes it from sibling source tools like source_describe, source_rename, or source_get_content.
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 gives a prerequisite ('Requires confirm=True') but does not explicitly say when to use this tool versus alternatives, or that it should only be invoked after explicit user approval. The usage context is implied by the destructive purpose rather than fully stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_describeSource DescribeB
Get AI-generated source summary with keyword chips.
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes | Source UUID |
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 the full behavioral disclosure burden. It adds useful context by revealing that the summary is 'AI-generated' and that the response includes 'keyword chips', which suggests a non-trivial generation step. However, it does not mention whether the operation is read-only, whether it incurs latency/costs, or any side effects, so transparency is incomplete.
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 entire description is a single, front-loaded sentence that conveys the primary purpose and key output details in under 10 words. No filler or redundant information is present.
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 (one required parameter, 100% schema coverage, and an output schema), the description is mostly complete. It informs the agent of the result type. The only gap is the lack of explicit usage guidance relative to siblings, but the straightforward read-oriented purpose makes this a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter source_id, which is documented as 'Source UUID'. The description adds no additional meaning or context about the parameter beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get') and resource ('AI-generated source summary with keyword chips'). It is obvious what the tool returns, and the name 'source_describe' aligns with this read action. However, it does not explicitly distinguish itself from sibling tools like source_get_content, so it misses the extra differentiation credit.
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 given about when to use this tool versus alternatives such as source_get_content, source_list_drive, or source_rename. The description only states what it does, leaving the agent to infer appropriate usage from the tool name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_get_contentSource 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.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until indexed content is available | |
| source_id | Yes | Source UUID | |
| wait_timeout | No | Maximum seconds to wait when ``wait`` is enabled | |
| poll_interval | No | Seconds between readiness checks |
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 the transparency burden. It discloses that no AI processing occurs, that the raw indexed text is returned, and it even adds a performance trait. It does not mention potential edge cases like unindexed sources or the wait/polling behavior, but these are partially covered by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The main verb and resource are front-loaded, immediately followed by clarifying details about what is returned and how it compares to an alternative tool.
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, combined with the 100% schema coverage and existing output schema, gives an agent enough to select and invoke the tool correctly. It covers what the tool does, what it returns, and a performance-based comparison, though it could more explicitly address when a wait parameter would be 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?
Schema description coverage is 100%, so all parameters are already documented in the input schema. The tool description does not add parameter-specific meaning beyond noting the source types that back the source_id, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: retrieving raw text content from a source without AI processing. It also lists the supported source types and explicitly differentiates itself from notebook_query, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context by noting it is 'Much faster than notebook_query for content export,' which implies when to prefer this tool over a key alternative. It lacks an explicit when-not-to-use statement or exclusions for other sibling tools, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_list_driveSource List DriveA
List sources with types and Drive freshness status.
Use before source_sync_drive to identify stale sources.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | Notebook UUID | |
| skip_freshness | No | If True, skip per-source freshness checks for faster listing |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral burden. It conveys that the tool lists sources and reports Drive freshness status, implying a read-only listing operation, but it does not explicitly discuss side effects, auth requirements, or performance implications of the freshness checks.
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 two short sentences with the primary action front-loaded. Every sentence contributes value: the first states what the tool does, and the second provides actionable usage context.
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 100%-covered schema and an output schema, the description covers the main contextual needs: what is listed and when to use it. It is slightly incomplete only because the absence of annotations leaves minimal room to clarify side effects or auth expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both notebook_id and skip_freshness are already fully explained in the input schema. The description adds no parameter-level detail beyond naming freshness status, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the concrete verb 'List' and identifies the resource and scope: sources with types and Drive freshness status. The second sentence explicitly ties it to source_sync_drive, making the tool's role and distinction from the sync sibling clear.
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 before source_sync_drive to identify stale sources,' giving agents a clear precondition and use case. This is strong guidance on when to call this tool versus the related sync tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_renameSource RenameB
Rename a source in a notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| new_title | Yes | New display title for the source | |
| source_id | Yes | Source UUID to rename | |
| notebook_id | Yes | Notebook UUID containing the source |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the rename action and does not disclose whether the operation is limited to display title, whether it is reversible, or what side effects may occur.
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 a single efficient sentence with no wasted words and the key action is front-loaded. It is appropriately concise, though slightly minimal in supporting context.
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 schema covers all parameters and an output schema exists, so basic invocation is clear. However, with no annotations and no usage guidance, the description leaves behavioral context and decision-making to the 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?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter nuance beyond what the schema already provides, but the schema fully documents all three required 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 states a specific verb ('Rename'), a clear resource ('a source'), and the containing context ('in a notebook'). This is distinct from sibling tools like source_delete, source_describe, and notebook_rename, so an agent can identify the correct 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 gives no guidance about when to prefer this tool over alternatives, nor does it name any excluded cases or prerequisites. The only usage signal is the verb itself, which is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_sync_driveSource Sync DriveA
Sync Drive sources with latest content. Requires confirm=True.
Call source_list_drive first to identify stale sources.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be True after user approval | |
| source_ids | Yes | Source UUIDs to sync |
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 behavioral disclosure burden. It does disclose a required confirmation flag and a prerequisite workflow, which is useful. However, it does not explain what 'sync' actually changes, whether it is destructive or reversible, or any permission/auth requirements.
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 short sentences that state the action, the mandatory flag, and the prerequisite call. Every sentence earns its place and the critical information 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?
With no annotations, the description is reasonably complete for a two-parameter tool with an output schema. It covers the confirmation requirement and the prerequisite listing step, but it omits any explanation of sync side effects, permissions, or what happens to existing content, leaving some ambiguity for an 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?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds meaningful context by linking source_ids to the output of source_list_drive and emphasizing that confirm must be true, enriching the agent's understanding of how to populate and invoke the 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 states a specific verb and resource: 'Sync Drive sources with latest content.' This clearly identifies the action and distinguishes it from sibling tools like source_list_drive or source_get_content, especially by referencing the listing tool as a prerequisite.
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 gives explicit usage guidance: 'Requires confirm=True' and 'Call source_list_drive first to identify stale sources.' This tells the agent when and how to prepare, but it does not explicitly state when not to use this tool or mention alternative tools for similar operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_createStudio CreateC
Create any NotebookLM studio artifact. Unified creation tool.
Supports: audio, video, infographic, slide_deck, report, flashcards, quiz, data_table, mind_map
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Mind Map | |
| confirm | No | Must be True after user approval | |
| language | No | ||
| difficulty | No | medium | |
| source_ids | No | Source IDs to use (default: all sources) | |
| description | No | ||
| notebook_id | Yes | Notebook UUID | |
| orientation | No | landscape | |
| audio_format | No | deep_dive | |
| audio_length | No | default | |
| detail_level | No | standard | |
| focus_prompt | No | ||
| slide_format | No | detailed_deck | |
| slide_length | No | default | |
| video_format | No | explainer | |
| visual_style | No | auto_select | |
| artifact_type | Yes | 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 | |
| custom_prompt | No | ||
| report_format | No | Briefing Doc | |
| question_count | No | ||
| infographic_style | No | auto_select | |
| video_style_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'Create' and lists types; it does not disclose the important confirm=True/user-approval requirement, side effects, or whether creation is synchronous or requires follow-up status checks. This is a significant gap for a mutation 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 compact and front-loaded with the key action and resource. The supported-types list is scannable. Minor redundancy exists between 'Create any NotebookLM studio artifact' and 'Unified creation tool', but overall there is no wasted text.
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 22 parameters, no annotations, and only 18% schema coverage, this description is far too sparse to support correct invocation. It omits the confirmation/approval workflow, how artifact types map to relevant parameters, and how this tool relates to studio_revise and studio_delete. The output schema does not compensate for these missing invocation 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?
Schema description coverage is only 18%, so the description needed to compensate by explaining artifact-specific parameters, but it only repeats the artifact_type values already present in the schema. It adds no meaning for title, source_ids, formats, focus_prompt, difficulty, orientation, or other fields that are mostly undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create'), a clear resource ('NotebookLM studio artifact'), and enumerates the supported artifact types. This distinguishes it from siblings like studio_revise and studio_delete by establishing it as the creation entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It is positioned as a 'Unified creation tool', but there is no explicit guidance on when to use it versus alternatives, nor exclusions/preconditions. No mention of when studio_revise or studio_delete should be chosen instead, and no mention of prerequisites like notebook existence, source selection, or user approval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_deleteStudio DeleteA
Delete studio artifact. IRREVERSIBLE. Requires confirm=True.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be True after user approval | |
| artifact_id | Yes | Artifact UUID (from studio_status) | |
| notebook_id | Yes | Notebook UUID |
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 the full behavioral burden. It clearly discloses that deletion is IRREVERSIBLE and that confirm=True is required, which is critical for a destructive operation. It does not mention side effects or permissions, but the core risk is explicitly surfaced.
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 three short clauses with no filler. The most important information ('IRREVERSIBLE') is front-loaded, and the confirmation requirement is stated immediately after. Every word 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?
For a simple destructive tool with no annotations but a present output schema, the description covers the essential safety-critical details: irreversibility and confirmation. It does not explain what a 'studio artifact' is or mention prerequisites, but the core invocation requirements are sufficiently clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema by stating that confirm=True is required, even though the schema marks it as optional with a default of false. This is important operational guidance that prevents a failed or accidental deletion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Delete') on a specific resource ('studio artifact'), clearly distinguishing it from sibling tools like studio_create, studio_status, and studio_revise. The verb and object are unambiguous and match the tool name/title without being a mere tautology.
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 gives no guidance on when this tool should be used relative to alternatives, nor does it mention exclusions or prerequisites beyond the safety flag. An agent must infer from the name alone that this is the deletion operation among the studio_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_reviseStudio 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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be True after user approval | |
| artifact_id | Yes | UUID of the existing slide deck to revise (from studio_status) | |
| notebook_id | Yes | Notebook UUID | |
| slide_instructions | Yes | 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"}] |
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 the operation creates a new artifact, does not modify the original, only supports slide decks, and is asynchronous (poll studio_status). It does not mention the confirm user-approval step, though that is documented in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences communicate the core action, the key constraint, the non-destructive behavior, and the follow-up polling step. Every sentence adds value with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, the description covers the most critical operational behaviors: it creates a new artifact, leaves the original intact, only works on slide decks, and requires polling status. Combined with the rich input schema and output schema, this is nearly complete; the only minor omission is explicitly stating the user-approval confirm flow in the description itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters including slide numbering, confirm requirement, and artifact_id origin. The description adds no per-parameter detail beyond the schema, which is acceptable given the high schema coverage but does not elevate the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair ('Revise individual slides in an existing slide deck') and clearly distinguishes from creation tools by emphasizing 'existing' and 'Creates a NEW artifact.' It also names the poll step via studio_status, which separates it from 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 gives clear context: it applies only to slide decks, and it instructs the agent to poll studio_status after calling to check readiness. It does not explicitly name an alternative tool for creating a new slide deck, but the 'existing slide deck' phrasing and the sibling set make the intended usage evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_statusStudio StatusC
Check studio content generation status and get URLs, or rename an artifact.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum artifacts to return for status (1-100, default 20) | |
| action | No | 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 | status |
| offset | No | Number of artifacts to skip for status pagination | |
| new_title | No | Required for action="rename" - the new title for the artifact | |
| artifact_id | No | For status, return only this artifact. Required for action="rename". | |
| notebook_id | Yes | Notebook UUID | |
| include_details | No | Include prompts, source IDs, report content, and media details |
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 bears the full burden of disclosing behavior. It mentions a read-like status operation and a mutating rename operation, but does not explain side effects, permission needs, or the additional list_types action exposed in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or repetition. It front-loads the primary status-checking purpose and keeps the alternative behavior brief, though it omits list_types for brevity.
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 output schema and full parameter schema reduce the burden on the description. However, the tool has multiple modes and several sibling tools, so a minimally viable description should at least mention all actions and hint at when rename is appropriate. This one leaves those 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 100%, so the schema already documents all parameters. The description adds little semantic value beyond naming the status/rename actions, which is acceptable but not exceptional.
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 specific behavior: checking studio content generation status and getting URLs, or renaming an artifact. This distinguishes it from create/delete studio tools, though the additional 'rename' behavior is not clearly positioned relative to sibling studio_revise, and the list_types action is omitted.
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 studio_revise or research_status. The rename capability could easily be confused with studio_revise, and the description does not clarify when each should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tagTagA
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
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Comma-separated tags (required for add, remove; e.g. "ai,research,llm") | |
| query | No | Search query (required for select; e.g. "ai mcp" or "ai,mcp") | |
| action | Yes | Operation to perform (add, remove, list, select) | |
| notebook_id | No | Notebook UUID (required for add, remove) | |
| notebook_title | No | Optional display title (for add) |
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 disclose behavioral traits. It covers action names but omits important details for a mutation-capable tool: whether modifications are reversible, required permissions, effects on existing tags, or any side effects. The description is basically a list of operations with no additional 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 compact: a one-sentence summary followed by a bulleted action list. Every line adds useful information, and the structure lets an agent quickly parse the four operations.
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 high-level purpose, and the output schema exists so return values need not be described. It does not explain the tag-matching algorithm or edge cases, but for a tool with this schema richness the description is largely 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 description coverage is 100%, with each parameter including usage notes (e.g., 'required for add, remove'). The description does not add parameter details beyond the schema, but the schema already adequately documents semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages notebook tags and finds relevant notebooks via tag matching, listing four explicit actions. It identifies the resource (notebook tags) and specific actions, but does not explicitly distinguish itself from sibling tools like 'label'.
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?
Each action includes a short purpose ('add tags ... for smart selection', 'find notebooks relevant to a query using tag matching'), giving clear context for when to use each operation. However, it does not discuss exclusions or alternatives.
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.
45 tool updates
v0.11.2- Changed
batch9 fields changed- added
Input schema / properties / action / descriptionAdded value: +"Operation to perform (query, add_source, create, delete, studio)" - added
Input schema / properties / all / descriptionAdded value: +"Apply to ALL notebooks" - added
Input schema / properties / artifact_type / descriptionAdded value: +"Artifact type (for action=studio): audio, video, report, etc." - added
Input schema / properties / confirm / descriptionAdded value: +"Must be True for delete action" - added
Input schema / properties / notebook_names / descriptionAdded value: +"Comma-separated notebook names or IDs" - added
Input schema / properties / query / descriptionAdded value: +"Question to ask (for action=query)" - added
Input schema / properties / source_url / descriptionAdded value: +"URL to add (for action=add_source)" - added
Input schema / properties / tags / descriptionAdded value: +"Comma-separated tags to select notebooks" - added
Input schema / properties / titles / descriptionAdded value: +"Comma-separated notebook titles (for action=create)"
- Changed
chat_configure4 fields changed- added
Input schema / properties / custom_prompt / descriptionAdded value: +"Required when goal=custom (max 10000 chars)" - added
Input schema / properties / goal / descriptionAdded value: +"default|learning_guide|custom" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / response_length / descriptionAdded value: +"default|longer|shorter"
- Changed
chat_export3 fields changed- added
Input schema / properties / conversation_id / descriptionAdded value: +"Optional conversation ID" - added
Input schema / properties / format / descriptionAdded value: +"Export format: 'md' or 'json' (default: 'md')" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook ID or title alias"
- Changed
chat_get2 fields changed- added
Input schema / properties / conversation_id / descriptionAdded value: +"Optional conversation ID (defaults to latest active session)" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook ID or title alias"
- Changed
chat_list2 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Max chat sessions to return (default: 20)" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook ID or title alias"
- Changed
collection_create2 fields changed- added
Input schema / properties / name / descriptionAdded value: +"Name of the collection" - added
Input schema / properties / notebook_ids / descriptionAdded value: +"List of notebook UUIDs to include in the collection (optional)"
- Changed
collection_delete2 fields changed- added
Input schema / properties / collection_id / descriptionAdded value: +"UUID of the collection" - added
Input schema / properties / confirm / descriptionAdded value: +"Must be True after user approval"
- Changed
collection_edit3 fields changed- added
Input schema / properties / collection_id / descriptionAdded value: +"UUID of the collection" - added
Input schema / properties / name / descriptionAdded value: +"New name for the collection (optional)" - added
Input schema / properties / notebook_ids / descriptionAdded value: +"New complete list of notebook UUIDs to include (optional)"
- Changed
collection_set_emoji2 fields changed- added
Input schema / properties / collection_id / descriptionAdded value: +"UUID of the collection" - added
Input schema / properties / emoji / descriptionAdded value: +"Emoji character (use empty string \"\" to clear)"
- Changed
cross_notebook_query4 fields changed- added
Input schema / properties / all / descriptionAdded value: +"Query ALL notebooks (use with caution — rate limits apply)" - added
Input schema / properties / notebook_names / descriptionAdded value: +"Comma-separated notebook names or IDs (e.g. \"AI Research, Dev Tools\")" - added
Input schema / properties / query / descriptionAdded value: +"Question to ask across notebooks" - added
Input schema / properties / tags / descriptionAdded value: +"Comma-separated tags to select notebooks (e.g. \"ai,mcp\")"
- Changed
download_all_artifacts7 fields changed- added
Input schema / properties / all_notebooks / descriptionAdded value: +"Sweep every notebook in the account instead of one" - added
Input schema / properties / artifact_types / descriptionAdded value: +"Restrict to these types, e.g. [\"video\", \"slide_deck\",\n\"mind_map\", \"report\"]. Default: all types." - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID (omit when all_notebooks=True)" - added
Input schema / properties / output_dir / descriptionAdded value: +"Base directory for the per-notebook folders, relative to\nthe download directory (default: the download directory itself).\nPaths outside it are refused; see download_artifact." - added
Input schema / properties / output_format / descriptionAdded value: +"For quiz/flashcards only: json|markdown|html" - added
Input schema / properties / skip_existing / descriptionAdded value: +"Skip artifacts whose target file already exists —\nmakes repeated runs incremental" - added
Input schema / properties / slide_deck_format / descriptionAdded value: +"For slide decks only: pdf (default) or pptx"
- Changed
download_artifact9 fields changed- added
Input schema / properties / artifact_id / descriptionAdded value: +"Optional specific artifact ID (uses latest if not provided)" - added
Input schema / properties / artifact_type / descriptionAdded value: +"Type of artifact to download:\n- audio: Audio Overview (MP4/MP3)\n- video: Video Overview (MP4)\n- report: Report (Markdown)\n- mind_map: Mind Map (JSON)\n- slide_deck: Slide Deck (PDF or PPTX)\n- infographic: Infographic (PNG)\n- data_table: Data Table (CSV)\n- data_table_xlsx: Data Table Excel export (XLSX)\n- file: Generic Studio file export\n- quiz: Quiz (json|markdown|html)\n- flashcards: Flashcards (json|markdown|html)" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / output_format / descriptionAdded value: +"For quiz/flashcards only: json|markdown|html (default: json)" - added
Input schema / properties / output_path / descriptionAdded value: +"Where to save the file, relative to the download\ndirectory (e.g. \"podcast.m4a\" or \"My Notebook/report.md\").\nDownloads are confined to that directory; a path outside it is\nrefused. It defaults to ~/Downloads/gemini-notebook and the\noperator can move it with NOTEBOOKLM_DOWNLOAD_DIR. The saved\nabsolute path comes back in the result." - added
Input schema / properties / poll_interval / descriptionAdded value: +"Seconds between readiness checks" - added
Input schema / properties / slide_deck_format / descriptionAdded value: +"For slide_deck only: pdf (default) or pptx" - added
Input schema / properties / wait / descriptionAdded value: +"Poll while the artifact download is still propagating" - added
Input schema / properties / wait_timeout / descriptionAdded value: +"Maximum seconds to wait when ``wait`` is enabled"
- Changed
export_artifact4 fields changed- added
Input schema / properties / artifact_id / descriptionAdded value: +"Artifact UUID to export" - added
Input schema / properties / export_type / descriptionAdded value: +"\"docs\" or \"sheets\"" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / title / descriptionAdded value: +"Title for exported document (optional)"
- Changed
label9 fields changed- added
Input schema / properties / action / descriptionAdded value: +"Operation to perform:\n- auto: AI auto-labels all sources into thematic categories\n- list: List current labels (triggers AI if none exist)\n- reorganize: Force AI re-categorization (requires confirm=True unless unlabeled_only=True)\n- create: Create a new empty label (requires name)\n- rename: Rename a label (requires label_id, name)\n- set_emoji: Set or clear emoji on a label (requires label_id, emoji)\n- move_source: Assign a source to a label (requires label_id, source_id)\n- delete: Delete label(s) permanently (requires label_id or label_ids, confirm=True)" - added
Input schema / properties / confirm / descriptionAdded value: +"Must be True for delete action and for reorganize with unlabeled_only=False" - added
Input schema / properties / emoji / descriptionAdded value: +"Emoji character for set_emoji (e.g. \"📊\"), or \"\" to clear" - added
Input schema / properties / label_id / descriptionAdded value: +"Label UUID (required for rename, set_emoji, move_source, delete)" - added
Input schema / properties / label_ids / descriptionAdded value: +"List of label UUIDs for batch delete (alternative to label_id)" - added
Input schema / properties / name / descriptionAdded value: +"Label display name (required for create and rename)" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / source_id / descriptionAdded value: +"Source UUID to assign (required for move_source)" - added
Input schema / properties / unlabeled_only / descriptionAdded value: +"For reorganize: if True, only label sources not yet in any label.\nIf False (default), replaces ALL existing labels from scratch (requires confirm=True)."
- Changed
note6 fields changed- added
Input schema / properties / action / descriptionAdded value: +"Operation to perform:\n- create: Create a new note\n- list: List all notes in notebook\n- update: Update an existing note\n- delete: Delete a note permanently (requires confirm=True)" - added
Input schema / properties / confirm / descriptionAdded value: +"Must be True for delete action" - added
Input schema / properties / content / descriptionAdded value: +"Note content (required for create, optional for update)" - added
Input schema / properties / note_id / descriptionAdded value: +"Note UUID (required for update/delete)" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / title / descriptionAdded value: +"Note title (optional for create/update)"
- Changed
notebook_create1 field changed- added
Input schema / properties / title / descriptionAdded value: +"Optional title for the notebook"
- Changed
notebook_delete2 fields changed- added
Input schema / properties / confirm / descriptionAdded value: +"Must be True after user approval" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID"
- Changed
notebook_describe1 field changed- added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID"
- Changed
notebook_get1 field changed- added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID"
- Changed
notebook_list1 field changed- added
Input schema / properties / max_results / descriptionAdded value: +"Maximum number of notebooks to return (default: 100)"
- Changed
notebook_query6 fields changed- added
Input schema / properties / conversation_id / descriptionAdded value: +"For follow-up questions" - added
Input schema / properties / new_conversation / descriptionAdded value: +"Start a fresh conversation when conversation_id is omitted" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / query / descriptionAdded value: +"Question to ask" - added
Input schema / properties / source_ids / descriptionAdded value: +"Source IDs to query (default: all)" - added
Input schema / properties / timeout / descriptionAdded value: +"Wall-clock query budget in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0; source-heavy notebooks may need 180+)"
- Changed
notebook_query_start6 fields changed- added
Input schema / properties / conversation_id / descriptionAdded value: +"For follow-up questions" - added
Input schema / properties / new_conversation / descriptionAdded value: +"Start a fresh conversation when conversation_id is omitted" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / query / descriptionAdded value: +"Question to ask" - added
Input schema / properties / source_ids / descriptionAdded value: +"Source IDs to query (default: all)" - added
Input schema / properties / timeout / descriptionAdded value: +"Wall-clock query budget in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0; source-heavy notebooks may need 180+)"
- Changed
notebook_query_status1 field changed- added
Input schema / properties / query_id / descriptionAdded value: +"The query ID returned by notebook_query_start"
- Changed
notebook_rename2 fields changed- added
Input schema / properties / new_title / descriptionAdded value: +"New title" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID"
- Changed
notebook_share_batch3 fields changed- added
Input schema / properties / confirm / descriptionAdded value: +"Must be True after user approval" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / recipients / descriptionAdded value: +"List of dicts, each with 'email' (str) and optional 'role' (str).\n Role defaults to 'viewer'. Example: [{\"email\": \"a@b.com\", \"role\": \"editor\"}]"
- Changed
notebook_share_invite3 fields changed- added
Input schema / properties / email / descriptionAdded value: +"Email address to invite" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / role / descriptionAdded value: +"\"viewer\" or \"editor\" (default: viewer)"
- Changed
notebook_share_public2 fields changed- added
Input schema / properties / is_public / descriptionAdded value: +"True to enable public link, False to disable (default: True)" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID"
- Changed
notebook_share_status1 field changed- added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID"
- Changed
pipeline4 fields changed- added
Input schema / properties / action / descriptionAdded value: +"Operation to perform (run, list)" - added
Input schema / properties / input_url / descriptionAdded value: +"URL variable for pipelines that need it (replaces $INPUT_URL)" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Target notebook UUID (required for action=run)" - added
Input schema / properties / pipeline_name / descriptionAdded value: +"Pipeline name (required for action=run, e.g. \"ingest-and-podcast\")"
- Changed
research_import5 fields changed- added
Input schema / properties / cited_only / descriptionAdded value: +"Import only sources cited by the research report.\nOverrides source_indices when enabled." - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / source_indices / descriptionAdded value: +"Source indices to import (default: all)" - added
Input schema / properties / task_id / descriptionAdded value: +"Research task ID" - added
Input schema / properties / timeout / descriptionAdded value: +"Import timeout in seconds (default: 300, increase for large notebooks)"
- Changed
research_start5 fields changed- added
Input schema / properties / mode / descriptionAdded value: +"fast (~30s, ~10 sources) | deep (~5min, ~40 sources, web only)" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Existing notebook (creates new if not provided)" - added
Input schema / properties / query / descriptionAdded value: +"What to search for (e.g. \"quantum computing advances\")" - added
Input schema / properties / source / descriptionAdded value: +"web|drive (where to search)" - added
Input schema / properties / title / descriptionAdded value: +"Title for new notebook"
- Changed
research_status7 fields changed- added
Input schema / properties / auto_import / descriptionAdded value: +"If True, automatically import sources when research completes.\n If False (default), returns next_action hint to call research_import manually." - added
Input schema / properties / compact / descriptionAdded value: +"If True (default), truncate report and limit sources shown to save tokens.\n Use compact=False to get full details." - added
Input schema / properties / max_wait / descriptionAdded value: +"Max seconds to wait (default: 900, 0=single poll)" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / poll_interval / descriptionAdded value: +"Seconds between polls (default: 30)" - added
Input schema / properties / query / descriptionAdded value: +"Optional query text for fallback matching when task_id changes (deep research).\nContributed by @saitrogen (PR #15)." - added
Input schema / properties / task_id / descriptionAdded value: +"Optional Task ID to poll for a specific research task."
- Changed
save_auth_tokens5 fields changed- added
Input schema / properties / cookies / descriptionAdded value: +"Cookie header from Chrome DevTools (only needed if CLI fails)" - added
Input schema / properties / csrf_token / descriptionAdded value: +"Deprecated - auto-extracted" - added
Input schema / properties / request_body / descriptionAdded value: +"Optional - contains CSRF if extracting manually" - added
Input schema / properties / request_url / descriptionAdded value: +"Optional - contains session ID if extracting manually" - added
Input schema / properties / session_id / descriptionAdded value: +"Deprecated - auto-extracted"
- Changed
source_add11 fields changed- added
Input schema / properties / doc_type / descriptionAdded value: +"Drive doc type: doc|slides|sheets|pdf (for source_type=drive)" - added
Input schema / properties / document_id / descriptionAdded value: +"Google Drive document ID (for source_type=drive)" - added
Input schema / properties / file_path / descriptionAdded value: +"Local file path on the machine running the MCP server\n(for source_type=file). A path on a different client/agent host\nis not accessible to the server." - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / source_type / descriptionAdded value: +"Type of source to add:\n- url: Web page or YouTube URL\n- text: Pasted text content\n- drive: Google Drive document\n- file: Local file upload. The canonical local-admission contract has\n 43 case-insensitive extensions. Admission does not guarantee provider\n processing success for an individual file.\n OFFICIAL_FILE_EXTENSIONS: .pdf, .txt, .md, .docx, .csv, .pptx, .epub, .avif, .bmp, .gif, .heic, .heif, .ico, .jp2, .jpe, .jpeg, .jpg, .png, .tif, .tiff, .webp, .3g2, .3gp, .aac, .aif, .aifc, .aiff, .amr, .au, .avi, .cda, .m4a, .mid, .mp3, .mp4, .mpeg, .ogg, .opus, .ra, .ram, .snd, .wav, .wma\n Image-bearing sources may feed Studio video generation's visual-crop\n pipeline; charts, photos, and diagrams may be extracted as on-screen aids." - added
Input schema / properties / text / descriptionAdded value: +"Text content to add (for source_type=text)" - added
Input schema / properties / title / descriptionAdded value: +"Display title (for text sources)" - added
Input schema / properties / url / descriptionAdded value: +"URL to add (for source_type=url)" - added
Input schema / properties / urls / descriptionAdded value: +"List of URLs to add in bulk (for source_type=url, alternative to url)" - added
Input schema / properties / wait / descriptionAdded value: +"If True, wait for source processing to complete before returning" - added
Input schema / properties / wait_timeout / descriptionAdded value: +"Max seconds to wait if wait=True (default 120)"
- Changed
source_delete3 fields changed- added
Input schema / properties / confirm / descriptionAdded value: +"Must be True after user approval" - added
Input schema / properties / source_id / descriptionAdded value: +"Source UUID to delete (single)" - added
Input schema / properties / source_ids / descriptionAdded value: +"List of source UUIDs to delete (bulk, alternative to source_id)"
- Changed
source_describe1 field changed- added
Input schema / properties / source_id / descriptionAdded value: +"Source UUID"
- Changed
source_get_content4 fields changed- added
Input schema / properties / poll_interval / descriptionAdded value: +"Seconds between readiness checks" - added
Input schema / properties / source_id / descriptionAdded value: +"Source UUID" - added
Input schema / properties / wait / descriptionAdded value: +"Poll until indexed content is available" - added
Input schema / properties / wait_timeout / descriptionAdded value: +"Maximum seconds to wait when ``wait`` is enabled"
- Changed
source_list_drive2 fields changed- added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / skip_freshness / descriptionAdded value: +"If True, skip per-source freshness checks for faster listing"
- Changed
source_rename3 fields changed- added
Input schema / properties / new_title / descriptionAdded value: +"New display title for the source" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID containing the source" - added
Input schema / properties / source_id / descriptionAdded value: +"Source UUID to rename"
- Changed
source_sync_drive2 fields changed- added
Input schema / properties / confirm / descriptionAdded value: +"Must be True after user approval" - added
Input schema / properties / source_ids / descriptionAdded value: +"Source UUIDs to sync"
- Changed
studio_create4 fields changed- added
Input schema / properties / artifact_type / descriptionAdded value: +"Type of artifact to create:\n- audio: Audio Overview (podcast)\n- video: Video Overview\n- infographic: Visual infographic\n- slide_deck: Presentation slides (PDF)\n- report: Text report (Briefing Doc, Study Guide, etc.)\n- flashcards: Study flashcards\n- quiz: Multiple choice quiz\n- data_table: Structured data table\n- mind_map: Visual mind map" - added
Input schema / properties / confirm / descriptionAdded value: +"Must be True after user approval" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / source_ids / descriptionAdded value: +"Source IDs to use (default: all sources)"
- Changed
studio_delete3 fields changed- added
Input schema / properties / artifact_id / descriptionAdded value: +"Artifact UUID (from studio_status)" - added
Input schema / properties / confirm / descriptionAdded value: +"Must be True after user approval" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID"
- Changed
studio_revise4 fields changed- added
Input schema / properties / artifact_id / descriptionAdded value: +"UUID of the existing slide deck to revise (from studio_status)" - added
Input schema / properties / confirm / descriptionAdded value: +"Must be True after user approval" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / slide_instructions / descriptionAdded value: +"List of revision instructions, each with:\n- slide: Slide number (1-based, slide 1 = first slide)\n- instruction: Text describing the desired change\nExample: [{\"slide\": 1, \"instruction\": \"Make the title larger\"}]"
- Changed
studio_status7 fields changed- added
Input schema / properties / action / descriptionAdded value: +"Action to perform:\n- status (default): List all artifacts with their status and URLs\n- rename: Rename an artifact (requires artifact_id and new_title)\n- list_types: List all supported artifact types with their options" - added
Input schema / properties / artifact_id / descriptionAdded value: +"For status, return only this artifact. Required for action=\"rename\"." - added
Input schema / properties / include_details / descriptionAdded value: +"Include prompts, source IDs, report content, and media details" - added
Input schema / properties / limit / descriptionAdded value: +"Maximum artifacts to return for status (1-100, default 20)" - added
Input schema / properties / new_title / descriptionAdded value: +"Required for action=\"rename\" - the new title for the artifact" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID" - added
Input schema / properties / offset / descriptionAdded value: +"Number of artifacts to skip for status pagination"
- Changed
tag5 fields changed- added
Input schema / properties / action / descriptionAdded value: +"Operation to perform (add, remove, list, select)" - added
Input schema / properties / notebook_id / descriptionAdded value: +"Notebook UUID (required for add, remove)" - added
Input schema / properties / notebook_title / descriptionAdded value: +"Optional display title (for add)" - added
Input schema / properties / query / descriptionAdded value: +"Search query (required for select; e.g. \"ai mcp\" or \"ai,mcp\")" - added
Input schema / properties / tags / descriptionAdded value: +"Comma-separated tags (required for add, remove; e.g. \"ai,research,llm\")"
5 tool updates
v0.9.14- Added
collection_create - Added
collection_delete - Added
collection_edit - Added
collection_list - Added
collection_set_emoji
7 tool updates
v0.9.12- Changed
notebook_query2 fields changed- added
Input schema / properties / new_conversationAdded value: +{ + "default": false, + "type": "boolean" +} - changed
Input schema / properties / source_ids / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
notebook_query_start2 fields changed- added
Input schema / properties / new_conversationAdded value: +{ + "default": false, + "type": "boolean" +} - changed
Input schema / properties / source_ids / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
research_import1 field changed- changed
Input schema / properties / source_indices / anyOfPrevious value: -[ - { - "items": { - "type": "integer" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
source_add1 field changed- changed
Input schema / properties / urls / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
source_delete1 field changed- changed
Input schema / properties / source_ids / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
source_sync_drive3 fields changed- added
Input schema / properties / source_ids / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / source_ids / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / source_ids / typeRemoved value: -"array"
- Changed
studio_create1 field changed- changed
Input schema / properties / source_ids / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
2 tool updates
v0.9.7- Changed
download_artifact3 fields changed- added
Input schema / properties / poll_intervalAdded value: +{ + "default": 5, + "type": "number" +} - added
Input schema / properties / waitAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / wait_timeoutAdded value: +{ + "default": 180, + "type": "number" +}
- Changed
source_get_content3 fields changed- added
Input schema / properties / poll_intervalAdded value: +{ + "default": 3, + "type": "number" +} - added
Input schema / properties / waitAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / wait_timeoutAdded value: +{ + "default": 120, + "type": "number" +}
15 tool updates
v0.9.5- Added
chat_configure - Added
download_all_artifacts - Added
export_artifact - Added
label - Added
notebook_create - Added
notebook_describe - Added
notebook_get - Added
notebook_list - Added
notebook_query_status - Added
refresh_auth - Added
research_start - Added
research_status - Added
server_info - Added
source_get_content - Added
source_sync_drive
18 tool updates
v0.9.1- Added
batch - Added
chat_list - Added
cross_notebook_query - Added
download_artifact - Removed
export_artifact - Added
note - Added
notebook_delete - Removed
notebook_get - Removed
notebook_list - Added
notebook_rename - Added
research_import - Removed
research_start - Removed
research_status - Added
source_add - Added
source_rename - Removed
source_sync_drive - Added
studio_create - Added
studio_status
24 tool updates
v0.9.1- Removed
batch - Added
chat_export - Added
chat_get - Added
export_artifact - Added
notebook_get - Added
notebook_query - Added
notebook_query_start - Removed
notebook_query_status - Added
notebook_share_batch - Added
notebook_share_invite - Added
notebook_share_public - Added
notebook_share_status - Added
pipeline - Added
research_start - Added
research_status - Added
save_auth_tokens - Removed
source_add - Added
source_delete - Added
source_describe - Added
source_list_drive - Added
source_sync_drive - Added
studio_delete - Added
studio_revise - Added
tag
6 tool updates
v0.8.9- Added
batch - Removed
notebook_get - Added
notebook_list - Added
notebook_query_status - Added
source_add - Removed
tag
37 tool updates
v0.8.9- Removed
batch - Removed
chat_configure - Removed
cross_notebook_query - Removed
download_artifact - Removed
export_artifact - Removed
label - Removed
note - Removed
notebook_create - Removed
notebook_delete - Removed
notebook_describe - Removed
notebook_list - Removed
notebook_query - Removed
notebook_query_start - Removed
notebook_query_status - Removed
notebook_rename - Removed
notebook_share_batch - Removed
notebook_share_invite - Removed
notebook_share_public - Removed
notebook_share_status - Removed
pipeline - Removed
refresh_auth - Removed
research_import - Removed
research_start - Removed
research_status - Removed
save_auth_tokens - Removed
server_info - Removed
source_add - Removed
source_delete - Removed
source_describe - Removed
source_get_content - Removed
source_list_drive - Removed
source_rename - Removed
source_sync_drive - Removed
studio_create - Removed
studio_delete - Removed
studio_revise - Removed
studio_status
37 tool updates
v0.7.7- Changed
batch9 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Operation to perform (query, add_source, create, delete, studio)" - removed
Input schema / properties / all / descriptionRemoved value: -"Apply to ALL notebooks" - removed
Input schema / properties / artifact_type / descriptionRemoved value: -"Artifact type (for action=studio): audio, video, report, etc." - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True for delete action" - removed
Input schema / properties / notebook_names / descriptionRemoved value: -"Comma-separated notebook names or IDs" - removed
Input schema / properties / query / descriptionRemoved value: -"Question to ask (for action=query)" - removed
Input schema / properties / source_url / descriptionRemoved value: -"URL to add (for action=add_source)" - removed
Input schema / properties / tags / descriptionRemoved value: -"Comma-separated tags to select notebooks" - removed
Input schema / properties / titles / descriptionRemoved value: -"Comma-separated notebook titles (for action=create)"
- Changed
chat_configure4 fields changed- removed
Input schema / properties / custom_prompt / descriptionRemoved value: -"Required when goal=custom (max 10000 chars)" - removed
Input schema / properties / goal / descriptionRemoved value: -"default|learning_guide|custom" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / response_length / descriptionRemoved value: -"default|longer|shorter"
- Changed
cross_notebook_query4 fields changed- removed
Input schema / properties / all / descriptionRemoved value: -"Query ALL notebooks (use with caution — rate limits apply)" - removed
Input schema / properties / notebook_names / descriptionRemoved value: -"Comma-separated notebook names or IDs (e.g. \"AI Research, Dev Tools\")" - removed
Input schema / properties / query / descriptionRemoved value: -"Question to ask across notebooks" - removed
Input schema / properties / tags / descriptionRemoved value: -"Comma-separated tags to select notebooks (e.g. \"ai,mcp\")"
- Changed
download_artifact6 fields changed- removed
Input schema / properties / artifact_id / descriptionRemoved value: -"Optional specific artifact ID (uses latest if not provided)" - removed
Input schema / properties / artifact_type / descriptionRemoved value: -"Type of artifact to download:\n- audio: Audio Overview (MP4/MP3)\n- video: Video Overview (MP4)\n- report: Report (Markdown)\n- mind_map: Mind Map (JSON)\n- slide_deck: Slide Deck (PDF or PPTX)\n- infographic: Infographic (PNG)\n- data_table: Data Table (CSV)\n- quiz: Quiz (json|markdown|html)\n- flashcards: Flashcards (json|markdown|html)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / output_format / descriptionRemoved value: -"For quiz/flashcards only: json|markdown|html (default: json)" - removed
Input schema / properties / output_path / descriptionRemoved value: -"Path to save the file" - removed
Input schema / properties / slide_deck_format / descriptionRemoved value: -"For slide_deck only: pdf (default) or pptx"
- Changed
export_artifact4 fields changed- removed
Input schema / properties / artifact_id / descriptionRemoved value: -"Artifact UUID to export" - removed
Input schema / properties / export_type / descriptionRemoved value: -"\"docs\" or \"sheets\"" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / title / descriptionRemoved value: -"Title for exported document (optional)"
- Changed
label9 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Operation to perform:\n- auto: AI auto-labels all sources into thematic categories\n- list: List current labels (triggers AI if none exist)\n- reorganize: Force AI re-categorization (requires confirm=True unless unlabeled_only=True)\n- create: Create a new empty label (requires name)\n- rename: Rename a label (requires label_id, name)\n- set_emoji: Set or clear emoji on a label (requires label_id, emoji)\n- move_source: Assign a source to a label (requires label_id, source_id)\n- delete: Delete label(s) permanently (requires label_id or label_ids, confirm=True)" - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True for delete action and for reorganize with unlabeled_only=False" - removed
Input schema / properties / emoji / descriptionRemoved value: -"Emoji character for set_emoji (e.g. \"📊\"), or \"\" to clear" - removed
Input schema / properties / label_id / descriptionRemoved value: -"Label UUID (required for rename, set_emoji, move_source, delete)" - removed
Input schema / properties / label_ids / descriptionRemoved value: -"List of label UUIDs for batch delete (alternative to label_id)" - removed
Input schema / properties / name / descriptionRemoved value: -"Label display name (required for create and rename)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / source_id / descriptionRemoved value: -"Source UUID to assign (required for move_source)" - removed
Input schema / properties / unlabeled_only / descriptionRemoved value: -"For reorganize: if True, only label sources not yet in any label.\nIf False (default), replaces ALL existing labels from scratch (requires confirm=True)."
- Changed
note6 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Operation to perform:\n- create: Create a new note\n- list: List all notes in notebook\n- update: Update an existing note\n- delete: Delete a note permanently (requires confirm=True)" - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True for delete action" - removed
Input schema / properties / content / descriptionRemoved value: -"Note content (required for create, optional for update)" - removed
Input schema / properties / note_id / descriptionRemoved value: -"Note UUID (required for update/delete)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / title / descriptionRemoved value: -"Note title (optional for create/update)"
- Changed
notebook_create1 field changed- removed
Input schema / properties / title / descriptionRemoved value: -"Optional title for the notebook"
- Changed
notebook_delete2 fields changed- removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
notebook_describe1 field changed- removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
notebook_get1 field changed- removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
notebook_list1 field changed- removed
Input schema / properties / max_results / descriptionRemoved value: -"Maximum number of notebooks to return (default: 100)"
- Changed
notebook_query5 fields changed- removed
Input schema / properties / conversation_id / descriptionRemoved value: -"For follow-up questions" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / query / descriptionRemoved value: -"Question to ask" - removed
Input schema / properties / source_ids / descriptionRemoved value: -"Source IDs to query (default: all)" - removed
Input schema / properties / timeout / descriptionRemoved value: -"Request timeout in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0)"
- Changed
notebook_query_start5 fields changed- removed
Input schema / properties / conversation_id / descriptionRemoved value: -"For follow-up questions" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / query / descriptionRemoved value: -"Question to ask" - removed
Input schema / properties / source_ids / descriptionRemoved value: -"Source IDs to query (default: all)" - removed
Input schema / properties / timeout / descriptionRemoved value: -"Request timeout in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0)"
- Changed
notebook_query_status1 field changed- removed
Input schema / properties / query_id / descriptionRemoved value: -"The query ID returned by notebook_query_start"
- Changed
notebook_rename2 fields changed- removed
Input schema / properties / new_title / descriptionRemoved value: -"New title" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
notebook_share_batch3 fields changed- removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / recipients / descriptionRemoved value: -"List of dicts, each with 'email' (str) and optional 'role' (str).\n Role defaults to 'viewer'. Example: [{\"email\": \"a@b.com\", \"role\": \"editor\"}]"
- Changed
notebook_share_invite3 fields changed- removed
Input schema / properties / email / descriptionRemoved value: -"Email address to invite" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / role / descriptionRemoved value: -"\"viewer\" or \"editor\" (default: viewer)"
- Changed
notebook_share_public2 fields changed- removed
Input schema / properties / is_public / descriptionRemoved value: -"True to enable public link, False to disable (default: True)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
notebook_share_status1 field changed- removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
pipeline4 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Operation to perform (run, list)" - removed
Input schema / properties / input_url / descriptionRemoved value: -"URL variable for pipelines that need it (replaces $INPUT_URL)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Target notebook UUID (required for action=run)" - removed
Input schema / properties / pipeline_name / descriptionRemoved value: -"Pipeline name (required for action=run, e.g. \"ingest-and-podcast\")"
- Changed
research_import5 fields changed- removed
Input schema / properties / cited_only / descriptionRemoved value: -"Import only sources cited by the research report.\nOverrides source_indices when enabled." - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / source_indices / descriptionRemoved value: -"Source indices to import (default: all)" - removed
Input schema / properties / task_id / descriptionRemoved value: -"Research task ID" - removed
Input schema / properties / timeout / descriptionRemoved value: -"Import timeout in seconds (default: 300, increase for large notebooks)"
- Changed
research_start5 fields changed- removed
Input schema / properties / mode / descriptionRemoved value: -"fast (~30s, ~10 sources) | deep (~5min, ~40 sources, web only)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Existing notebook (creates new if not provided)" - removed
Input schema / properties / query / descriptionRemoved value: -"What to search for (e.g. \"quantum computing advances\")" - removed
Input schema / properties / source / descriptionRemoved value: -"web|drive (where to search)" - removed
Input schema / properties / title / descriptionRemoved value: -"Title for new notebook"
- Changed
research_status8 fields changed- added
Input schema / properties / auto_importAdded value: +{ + "default": false, + "type": "boolean" +} - removed
Input schema / properties / compact / descriptionRemoved value: -"If True (default), truncate report and limit sources shown to save tokens.\n Use compact=False to get full details." - changed
Input schema / properties / max_wait / defaultPrevious value: -300New value: +900 - removed
Input schema / properties / max_wait / descriptionRemoved value: -"Max seconds to wait (default: 300, 0=single poll)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / poll_interval / descriptionRemoved value: -"Seconds between polls (default: 30)" - removed
Input schema / properties / query / descriptionRemoved value: -"Optional query text for fallback matching when task_id changes (deep research).\nContributed by @saitrogen (PR #15)." - removed
Input schema / properties / task_id / descriptionRemoved value: -"Optional Task ID to poll for a specific research task."
- Changed
save_auth_tokens5 fields changed- removed
Input schema / properties / cookies / descriptionRemoved value: -"Cookie header from Chrome DevTools (only needed if CLI fails)" - removed
Input schema / properties / csrf_token / descriptionRemoved value: -"Deprecated - auto-extracted" - removed
Input schema / properties / request_body / descriptionRemoved value: -"Optional - contains CSRF if extracting manually" - removed
Input schema / properties / request_url / descriptionRemoved value: -"Optional - contains session ID if extracting manually" - removed
Input schema / properties / session_id / descriptionRemoved value: -"Deprecated - auto-extracted"
- Changed
source_add11 fields changed- removed
Input schema / properties / doc_type / descriptionRemoved value: -"Drive doc type: doc|slides|sheets|pdf (for source_type=drive)" - removed
Input schema / properties / document_id / descriptionRemoved value: -"Google Drive document ID (for source_type=drive)" - removed
Input schema / properties / file_path / descriptionRemoved value: -"Local file path (for source_type=file)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / source_type / descriptionRemoved value: -"Type of source to add:\n- url: Web page or YouTube URL\n- text: Pasted text content\n- drive: Google Drive document\n- file: Local file upload. Supported extensions:\n PDF, TXT, MD, DOCX, CSV, EPUB, MP3, M4A, WAV, AAC, OGG,\n OPUS, MP4, JPG, JPEG, PNG, GIF, WEBP. Image-bearing\n sources (PDF / JPG / PNG / etc.) feed Studio video\n generation's visual-crop pipeline — charts, photos, and\n diagrams may be extracted as on-screen aids in Video\n Overviews." - removed
Input schema / properties / text / descriptionRemoved value: -"Text content to add (for source_type=text)" - removed
Input schema / properties / title / descriptionRemoved value: -"Display title (for text sources)" - removed
Input schema / properties / url / descriptionRemoved value: -"URL to add (for source_type=url)" - removed
Input schema / properties / urls / descriptionRemoved value: -"List of URLs to add in bulk (for source_type=url, alternative to url)" - removed
Input schema / properties / wait / descriptionRemoved value: -"If True, wait for source processing to complete before returning" - removed
Input schema / properties / wait_timeout / descriptionRemoved value: -"Max seconds to wait if wait=True (default 120)"
- Changed
source_delete3 fields changed- removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / source_id / descriptionRemoved value: -"Source UUID to delete (single)" - removed
Input schema / properties / source_ids / descriptionRemoved value: -"List of source UUIDs to delete (bulk, alternative to source_id)"
- Changed
source_describe1 field changed- removed
Input schema / properties / source_id / descriptionRemoved value: -"Source UUID"
- Changed
source_get_content1 field changed- removed
Input schema / properties / source_id / descriptionRemoved value: -"Source UUID"
- Changed
source_list_drive2 fields changed- removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - added
Input schema / properties / skip_freshnessAdded value: +{ + "default": false, + "type": "boolean" +}
- Changed
source_rename3 fields changed- removed
Input schema / properties / new_title / descriptionRemoved value: -"New display title for the source" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID containing the source" - removed
Input schema / properties / source_id / descriptionRemoved value: -"Source UUID to rename"
- Changed
source_sync_drive2 fields changed- removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / source_ids / descriptionRemoved value: -"Source UUIDs to sync"
- Changed
studio_create4 fields changed- removed
Input schema / properties / artifact_type / descriptionRemoved value: -"Type of artifact to create:\n- audio: Audio Overview (podcast)\n- video: Video Overview\n- infographic: Visual infographic\n- slide_deck: Presentation slides (PDF)\n- report: Text report (Briefing Doc, Study Guide, etc.)\n- flashcards: Study flashcards\n- quiz: Multiple choice quiz\n- data_table: Structured data table\n- mind_map: Visual mind map" - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / source_ids / descriptionRemoved value: -"Source IDs to use (default: all sources)"
- Changed
studio_delete3 fields changed- removed
Input schema / properties / artifact_id / descriptionRemoved value: -"Artifact UUID (from studio_status)" - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
studio_revise4 fields changed- removed
Input schema / properties / artifact_id / descriptionRemoved value: -"UUID of the existing slide deck to revise (from studio_status)" - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / slide_instructions / descriptionRemoved value: -"List of revision instructions, each with:\n- slide: Slide number (1-based, slide 1 = first slide)\n- instruction: Text describing the desired change\nExample: [{\"slide\": 1, \"instruction\": \"Make the title larger\"}]"
- Changed
studio_status4 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Action to perform:\n- status (default): List all artifacts with their status and URLs\n- rename: Rename an artifact (requires artifact_id and new_title)\n- list_types: List all supported artifact types with their options" - removed
Input schema / properties / artifact_id / descriptionRemoved value: -"Required for action=\"rename\" - the artifact UUID to rename" - removed
Input schema / properties / new_title / descriptionRemoved value: -"Required for action=\"rename\" - the new title for the artifact" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
tag5 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Operation to perform (add, remove, list, select)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID (required for add, remove)" - removed
Input schema / properties / notebook_title / descriptionRemoved value: -"Optional display title (for add)" - removed
Input schema / properties / query / descriptionRemoved value: -"Search query (required for select; e.g. \"ai mcp\" or \"ai,mcp\")" - removed
Input schema / properties / tags / descriptionRemoved value: -"Comma-separated tags (required for add, remove; e.g. \"ai,research,llm\")"
TDQS
Scored across 48 tools
Most tools map cleanly to a distinct resource and action, and async query tools are clearly separated from sync ones. A few generic names like 'batch', 'note', 'label', 'tag', and 'pipeline' could cause some selection uncertainty, but their descriptions clarify scope.
The majority follow a readable resource_verb pattern such as notebook_list, source_add, and studio_delete. However, verb-first names like refresh_auth, save_auth_tokens, download_artifact, and export_artifact break the pattern, and bare-noun tools like batch, note, label, tag, and pipeline add a different style.
48 tools is far above the typical MCP sweet spot and creates a heavy selection surface for agents. The broad NotebookLM feature set justifies a large server, but this count feels excessive even with several 'unified' tools.
The tool surface covers notebooks, sources, chat, studio artifacts, collections, research, sharing, tags, labels, auth, and batch operations. There are no obvious dead ends: major resources have create, read, update, and delete coverage, and download/export workflows are provided.
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
Google NotebookLM via natural language: create notebooks, add sources (PDF, URL, YouTube) and ask gr
Publish, update, list, and delete Markdown pages on Booklet directly from your AI assistant.
Create and manage documents, spreadsheets, and presentations from your AI assistant.
- KnowtisOAuthapp.knowtis
Create, search and manage Knowtis collaborative notes from AI assistants.
Related MCP Servers
- AlicenseAqualityNot gradedmaintenanceEnables interaction with Google's NotebookLM through natural language, allowing users to create and manage notebooks, add sources from URLs/YouTube/Google Drive, query AI for insights, generate audio podcasts and other studio content, and perform AI-powered research and analysis.323-
- AlicenseAqualityDmaintenanceEnables interaction with Google NotebookLM through natural language to create and manage notebooks, add sources from URLs/YouTube/Google Drive, perform AI-powered research and analysis, generate audio podcasts, videos, infographics, and slide decks from notebook content.32MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to programmatically access and control Google NotebookLM, supporting operations like notebook management, source addition, audio generation, and more via natural language.MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Google NotebookLM to create notebooks, add sources (PDF, URL, YouTube), and ask questions with citations.1MIT








