Skip to main content
Glama

Gemini Notebook (formerly Google NotebookLM) CLI & MCP Server

Gemini Notebook MCP Header

PyPI version PyPI downloads Total downloads Python License

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.com host has been live-verified with a project-qualified global deployment; 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

Latest

MCP Demos

General Overview

Claude Desktop

Perplexity Desktop

MCP Super Assistant

General

Claude

Perplexity

MCP SuperAssistant

CLI Demos

CLI Overview

CLI, MCP & Skills

Setup, Doctor & mcpb

Infographics Support

CLI Overview

CLI, MCP & Skills

Setup, Doctor & mcpb

Infographics

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 link

Run 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 json

Then 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

nlm notebook list

notebook_list

Create notebook

nlm notebook create

notebook_create

Add Sources (URL, Text, Drive, File)

nlm source add

source_add

Query notebook (persists to web UI)

nlm notebook query

notebook_query

List/view/export chat sessions

nlm chats list/get/export

chat_list/chat_get/chat_export

Create Studio Content (Audio, Video, etc.)

nlm studio create

studio_create

Revise slide decks

nlm slides revise

studio_revise

Download artifacts

nlm download <type>

download_artifact

Download all artifacts (one or all notebooks)

nlm download all

download_all_artifacts

Web/Drive research

nlm research start

research_start

Share notebook

nlm share public/invite

notebook_share_*

Sync Drive sources

nlm source sync

source_sync_drive

Batch operations

nlm batch query/create/delete

batch

Cross-notebook query

nlm cross query

cross_notebook_query

Pipelines (multi-step workflows)

nlm pipeline run/list

pipeline

Tag & smart select

nlm tag add/list/select

tag

Configure AI tools

nlm setup add/remove/list

Install AI Skills

nlm skill install/update

Diagnose issues

nlm doctor

📚 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 (.mcpb file) → double-click → done! One-click install, no config needed.

Install from PyPI. This single package includes both the CLI and MCP server:

uv tool install notebooklm-mcp-cli

Using uvx (Run Without Install)

uvx --from notebooklm-mcp-cli nlm --help
uvx --from notebooklm-mcp-cli notebooklm-mcp

Using pip

pip install notebooklm-mcp-cli

Using pipx

pipx install notebooklm-mcp-cli

After installation, you get:

  • nlm — Command-line interface

  • notebooklm-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-cli

After upgrading, restart your AI tool to reconnect to the updated MCP server:

  • Claude Code: Restart the application, or use /mcp to reconnect

  • Cursor: 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 notebooklm

Legacy packages to remove:

Package

What it was

notebooklm-cli

Old CLI-only package

notebooklm-mcp-server

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-server

Step 3: Reinstall the Unified Package

After removing legacy packages, reinstall to fix symlinks:

uv tool install --force notebooklm-mcp-cli

Why --force? When multiple packages provide the same executable, uv can leave broken symlinks after uninstalling. The --force flag ensures clean symlinks.

Step 4: Verify Installation

uv tool list | grep notebooklm

You should see only:

notebooklm-mcp-cli v0.2.0
- nlm
- notebooklm-mcp

Step 5: Re-authenticate

Your existing cookies should still work, but if you encounter auth issues:

nlm login

Note: The configured MCP server name is now gemini-notebook-mcp. The executable remains notebooklm-mcp for 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-cli

Also remove from your AI tools:

nlm setup remove claude-code
nlm setup remove cursor
# ... or any configured tool

Authentication

Before using the CLI or MCP, you need to authenticate with Gemini Notebook:

# 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:18800

Profile 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 profile

Unattended / 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 profile

Run 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.

  1. 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"
  2. 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 enterprise

    You can switch back to a personal profile at any time:

    unset NOTEBOOKLM_BASE_URL NOTEBOOKLM_PROJECT_ID NOTEBOOKLM_LOCATION
    nlm login switch personal
  3. Configure 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 optionally NOTEBOOKLM_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 mode

How 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-mcp to toggle. To keep it on but expose only a subset, see Selective tool exposure.

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 doctor

Claude 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 update

User-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-code

Using 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 login

For 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 json for 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-mcp

Cursor / Windsurf resolve commands from your PATH, so the command name is enough:

{
  "mcpServers": {
    "gemini-notebook-mcp": {
      "command": "notebooklm-mcp"
    }
  }
}

Tool

Config Location

Cursor

~/.cursor/mcp.json

Windsurf

~/.codeium/windsurf/mcp_config.json

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)

~/Library/Application Support/Claude-3p/claude_desktop_config.json

Claude Desktop (macOS legacy)

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Desktop (Windows)

%APPDATA%\Claude\claude_desktop_config.json (an unambiguous MSIX path is detected automatically)

Claude Desktop (Windows 3P)

%LOCALAPPDATA%\Claude-3p\claude_desktop_config.json

Claude Desktop (Linux)

~/.config/Claude/claude_desktop_config.json

Claude Desktop (Linux 3P)

${XDG_CONFIG_HOME:-~/.config}/Claude-3p/claude_desktop_config.json

GitHub Copilot

.vscode/mcp.json

📚 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:

  1. Refreshes CSRF tokens immediately when expired

  2. Reloads cookies from disk if updated externally

  3. 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-cli installs an older version (e.g., 0.1.5 instead of 0.1.9)

  • uv cache clean doesn'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-cli

This 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_content tool 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 setup and nlm doctor commands 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_HL environment variable (PR #59).

  • JumpLao (@JumpLao) for extended audio, video, and image format support (PR #82).

  • cbruyndoncx (@cbruyndoncx) for including cited_text passages in query output (PR #81).

  • zxyasfas (@zxyasfas) for cited-only research import (PR #188).

  • Serdar Akın (@SERDAR-AKIN) for the multi-probe AuthHealthChecker that fixes false "stale" reports for semi-stale cookies (PR #219).

Star History

Star History Chart

License

MIT License

Available Tools

48 tools
batchBatchA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoApply to ALL notebooks
tagsNoComma-separated tags to select notebooks
queryNoQuestion to ask (for action=query)
actionYesOperation to perform (query, add_source, create, delete, studio)
titlesNoComma-separated notebook titles (for action=create)
confirmNoMust be True for delete action
source_urlNoURL to add (for action=add_source)
artifact_typeNoArtifact type (for action=studio): audio, video, report, etc.audio
notebook_namesNoComma-separated notebook names or IDs

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNodefault|learning_guide|customdefault
notebook_idYesNotebook UUID
custom_promptNoRequired when goal=custom (max 10000 chars)
response_lengthNodefault|longer|shorterdefault

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoExport format: 'md' or 'json' (default: 'md')md
notebook_idYesNotebook ID or title alias
conversation_idNoOptional conversation ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idYesNotebook ID or title alias
conversation_idNoOptional conversation ID (defaults to latest active session)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax chat sessions to return (default: 20)
notebook_idYesNotebook ID or title alias

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the collection
notebook_idsNoList of notebook UUIDs to include in the collection (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be True after user approval
collection_idYesUUID of the collection

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the collection (optional)
notebook_idsNoNew complete list of notebook UUIDs to include (optional)
collection_idYesUUID of the collection

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emojiYesEmoji character (use empty string "" to clear)
collection_idYesUUID of the collection

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoQuery ALL notebooks (use with caution — rate limits apply)
tagsNoComma-separated tags to select notebooks (e.g. "ai,mcp")
queryYesQuestion to ask across notebooks
notebook_namesNoComma-separated notebook names or IDs (e.g. "AI Research, Dev Tools")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_dirNoBase 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_idNoNotebook UUID (omit when all_notebooks=True)
all_notebooksNoSweep every notebook in the account instead of one
output_formatNoFor quiz/flashcards only: json|markdown|htmljson
skip_existingNoSkip artifacts whose target file already exists — makes repeated runs incremental
artifact_typesNoRestrict to these types, e.g. ["video", "slide_deck", "mind_map", "report"]. Default: all types.
slide_deck_formatNoFor slide decks only: pdf (default) or pptxpdf

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll while the artifact download is still propagating
artifact_idNoOptional specific artifact ID (uses latest if not provided)
notebook_idYesNotebook UUID
output_pathYesWhere 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_timeoutNoMaximum seconds to wait when ``wait`` is enabled
artifact_typeYesType 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_formatNoFor quiz/flashcards only: json|markdown|html (default: json)json
poll_intervalNoSeconds between readiness checks
slide_deck_formatNoFor slide_deck only: pdf (default) or pptxpdf

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoTitle for exported document (optional)
artifact_idYesArtifact UUID to export
export_typeYes"docs" or "sheets"
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoLabel display name (required for create and rename)
emojiNoEmoji character for set_emoji (e.g. "📊"), or "" to clear
actionYesOperation 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)
confirmNoMust be True for delete action and for reorganize with unlabeled_only=False
label_idNoLabel UUID (required for rename, set_emoji, move_source, delete)
label_idsNoList of label UUIDs for batch delete (alternative to label_id)
source_idNoSource UUID to assign (required for move_source)
notebook_idYesNotebook UUID
unlabeled_onlyNoFor 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNote title (optional for create/update)
actionYesOperation 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)
confirmNoMust be True for delete action
contentNoNote content (required for create, optional for update)
note_idNoNote UUID (required for update/delete)
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional title for the notebook

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be True after user approval
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNoMaximum number of notebooks to return (default: 100)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesQuestion to ask
timeoutNoWall-clock query budget in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0; source-heavy notebooks may need 180+)
source_idsNoSource IDs to query (default: all)
notebook_idYesNotebook UUID
conversation_idNoFor follow-up questions
new_conversationNoStart a fresh conversation when conversation_id is omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesQuestion to ask
timeoutNoWall-clock query budget in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0; source-heavy notebooks may need 180+)
source_idsNoSource IDs to query (default: all)
notebook_idYesNotebook UUID
conversation_idNoFor follow-up questions
new_conversationNoStart a fresh conversation when conversation_id is omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
query_idYesThe query ID returned by notebook_query_start

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_titleYesNew title
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

notebook_share_batchNotebook Share BatchC

Invite multiple collaborators in a single request.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be True after user approval
recipientsYesList of dicts, each with 'email' (str) and optional 'role' (str). Role defaults to 'viewer'. Example: [{"email": "a@b.com", "role": "editor"}]
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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 only states that the tool invites multiple collaborators in one request, omitting key behaviors such as the need for confirm=True after user approval, the mutating nature of the action, and any side effects like email notifications. This is too minimal for a sensitive sharing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundancy. It is concise, though it sacrifices necessary context. Conciseness itself is strong, but the terseness contributes to the overall incompleteness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a confirmation parameter and several sharing siblings, this one-sentence description is not complete enough. An agent cannot tell when to use batch sharing, that user approval is required, or how this differs from notebook_share_invite. The presence of an output schema does not compensate for the missing behavioral and usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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-level meaning beyond what the schema already provides; recipients, notebook_id, and confirm are each documented in the input schema, so the tool description does not need to repeat them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Invite') and the resource ('collaborators'), with 'multiple' and 'in a single request' conveying the batch nature, which loosely distinguishes it from the single-invite sibling (notebook_share_invite). However, it does not explicitly mention the notebook context or name alternatives, 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.

Usage Guidelines2/5

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 notebook_share_invite or notebook_share_public, and it does not mention the confirm=True prerequisite that appears in the schema. An agent is left without context for choosing this tool or understanding the approval flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notebook_share_inviteNotebook Share InviteC

Invite a collaborator by email.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNo"viewer" or "editor" (default: viewer)viewer
emailYesEmail address to invite
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral disclosure burden. It only says 'Invite a collaborator by email' and does not disclose whether an email is sent, whether invites can be duplicated, whether permissions are required, or what 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is six words and contains no filler, so it is very concise. However, its brevity comes at the cost of omitting useful behavioral and selection context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple invite tool with fully described parameters and an output schema, the basic call signature is covered. Yet the absence of annotations and any information about side effects or sibling alternatives leaves an agent with meaningful gaps about consequences and correct selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with notebook_id, email, and role already described, including the default role value. The phrase 'by email' does not add meaningful parameter details beyond what the schema already 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('invite') and resource ('collaborator by email'), making the tool's core function clear. It is reasonably separable from sibling tools like notebook_share_public and notebook_share_batch because it emphasizes email invitation, though it does not explicitly name or contrast those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance about when to use this tool versus notebook_share_batch, notebook_share_public, or notebook_share_status. It states the action but gives no selection criteria, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notebook_share_publicNotebook Share PublicA

Enable or disable public link access.

ParametersJSON Schema
NameRequiredDescriptionDefault
is_publicNoTrue to enable public link, False to disable (default: True)
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior itself, and it does state the core mutation: enabling or disabling public link access. It does not mention side effects, permission requirements, or whether toggling affects existing access, but the simple boolean semantics keep this minimally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence states the action and object with no filler. It is front-loaded and appropriately sized for a two-parameter toggle tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple boolean toggle with an output schema and fully described parameters, the description covers the essential operation. It does not discuss when to use it versus sharing alternatives, but the low complexity means this is not a critical gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameter descriptions already explain notebook_id and is_public. The tool description adds little beyond labeling the action 'public link access,' which maps directly to is_public, so it meets the baseline without adding new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb pair (enable/disable) and a clear resource (public link access), so an agent knows this tool toggles public sharing for a notebook. It does not explicitly name sibling tools, but the operation is distinct from notebook_share_status, notebook_share_invite, and notebook_share_batch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the description: call this when you need to turn a notebook's public link on or off. However, it gives no explicit guidance about when to prefer this over the sibling sharing tools or any prerequisites/exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notebook_share_statusNotebook Share StatusA

Get current sharing settings and collaborators.

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden for behavioral disclosure. 'Get current...' clearly implies a read-only status operation rather than a mutation, but it does not mention permissions, session requirements, or explicitly state that no changes are made. It is minimally transparent but leaves some behavioral details to inference.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that gets straight to the operation and target resource. There is no filler, repetition, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

One parameter, an output schema, and a simple read operation make this a low-complexity tool. The description plus schema cover what the tool returns and what input is required, though the lack of usage guidance remains a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is fully described in the schema as 'Notebook UUID,' so schema coverage is 100%. The description adds no additional parameter semantics, but the schema already provides the required meaning. A baseline 3 is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses 'Get' as a specific verb and identifies the exact resource: current sharing settings and collaborators. This clearly distinguishes the tool from mutating share siblings like notebook_share_public, notebook_share_invite, and notebook_share_batch, and from general notebook_get/notebook_describe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus the other sharing tools or notebook_describe. The description states what the tool does but provides no condition, prerequisite, or 'use this when' cue.

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform (run, list)
input_urlNoURL variable for pipelines that need it (replaces $INPUT_URL)
notebook_idNoTarget notebook UUID (required for action=run)
pipeline_nameNoPipeline name (required for action=run, e.g. "ingest-and-podcast")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesResearch task ID
timeoutNoImport timeout in seconds (default: 300, increase for large notebooks)
cited_onlyNoImport only sources cited by the research report. Overrides source_indices when enabled.
notebook_idYesNotebook UUID
source_indicesNoSource indices to import (default: all)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNofast (~30s, ~10 sources) | deep (~5min, ~40 sources, web only)fast
queryYesWhat to search for (e.g. "quantum computing advances")
titleNoTitle for new notebook
sourceNoweb|drive (where to search)web
notebook_idNoExisting notebook (creates new if not provided)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional query text for fallback matching when task_id changes (deep research). Contributed by @saitrogen (PR #15).
compactNoIf True (default), truncate report and limit sources shown to save tokens. Use compact=False to get full details.
task_idNoOptional Task ID to poll for a specific research task.
max_waitNoMax seconds to wait (default: 900, 0=single poll)
auto_importNoIf True, automatically import sources when research completes. If False (default), returns next_action hint to call research_import manually.
notebook_idYesNotebook UUID
poll_intervalNoSeconds between polls (default: 30)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 login via Bash/terminal (automated, preferred)

  • Only use this tool if the automated CLI fails

ParametersJSON Schema
NameRequiredDescriptionDefault
cookiesYesCookie header from Chrome DevTools (only needed if CLI fails)
csrf_tokenNoDeprecated - auto-extracted
session_idNoDeprecated - auto-extracted
request_urlNoOptional - contains session ID if extracting manually
request_bodyNoOptional - contains CSRF if extracting manually

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines5/5

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 login to 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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to add (for source_type=url)
textNoText content to add (for source_type=text)
urlsNoList of URLs to add in bulk (for source_type=url, alternative to url)
waitNoIf True, wait for source processing to complete before returning
titleNoDisplay title (for text sources)
doc_typeNoDrive doc type: doc|slides|sheets|pdf (for source_type=drive)doc
file_pathNoLocal 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_idNoGoogle Drive document ID (for source_type=drive)
notebook_idYesNotebook UUID
source_typeYesType 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_timeoutNoMax seconds to wait if wait=True (default 120)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be True after user approval
source_idNoSource UUID to delete (single)
source_idsNoList of source UUIDs to delete (bulk, alternative to source_id)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYesSource UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until indexed content is available
source_idYesSource UUID
wait_timeoutNoMaximum seconds to wait when ``wait`` is enabled
poll_intervalNoSeconds between readiness checks

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notebook_idYesNotebook UUID
skip_freshnessNoIf True, skip per-source freshness checks for faster listing

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_titleYesNew display title for the source
source_idYesSource UUID to rename
notebook_idYesNotebook UUID containing the source

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be True after user approval
source_idsYesSource UUIDs to sync

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoMind Map
confirmNoMust be True after user approval
languageNo
difficultyNomedium
source_idsNoSource IDs to use (default: all sources)
descriptionNo
notebook_idYesNotebook UUID
orientationNolandscape
audio_formatNodeep_dive
audio_lengthNodefault
detail_levelNostandard
focus_promptNo
slide_formatNodetailed_deck
slide_lengthNodefault
video_formatNoexplainer
visual_styleNoauto_select
artifact_typeYesType 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_promptNo
report_formatNoBriefing Doc
question_countNo
infographic_styleNoauto_select
video_style_promptNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be True after user approval
artifact_idYesArtifact UUID (from studio_status)
notebook_idYesNotebook UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be True after user approval
artifact_idYesUUID of the existing slide deck to revise (from studio_status)
notebook_idYesNotebook UUID
slide_instructionsYesList 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum artifacts to return for status (1-100, default 20)
actionNoAction 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 optionsstatus
offsetNoNumber of artifacts to skip for status pagination
new_titleNoRequired for action="rename" - the new title for the artifact
artifact_idNoFor status, return only this artifact. Required for action="rename".
notebook_idYesNotebook UUID
include_detailsNoInclude prompts, source IDs, report content, and media details

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoComma-separated tags (required for add, remove; e.g. "ai,research,llm")
queryNoSearch query (required for select; e.g. "ai mcp" or "ai,mcp")
actionYesOperation to perform (add, remove, list, select)
notebook_idNoNotebook UUID (required for add, remove)
notebook_titleNoOptional display title (for add)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

  1. 45 tool updatesv0.11.2
    • Changedbatch9 fields changed
      • addedInput schema / properties / action / description
        Added value: +"Operation to perform (query, add_source, create, delete, studio)"
      • addedInput schema / properties / all / description
        Added value: +"Apply to ALL notebooks"
      • addedInput schema / properties / artifact_type / description
        Added value: +"Artifact type (for action=studio): audio, video, report, etc."
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True for delete action"
      • addedInput schema / properties / notebook_names / description
        Added value: +"Comma-separated notebook names or IDs"
      • addedInput schema / properties / query / description
        Added value: +"Question to ask (for action=query)"
      • addedInput schema / properties / source_url / description
        Added value: +"URL to add (for action=add_source)"
      • addedInput schema / properties / tags / description
        Added value: +"Comma-separated tags to select notebooks"
      • addedInput schema / properties / titles / description
        Added value: +"Comma-separated notebook titles (for action=create)"
    • Changedchat_configure4 fields changed
      • addedInput schema / properties / custom_prompt / description
        Added value: +"Required when goal=custom (max 10000 chars)"
      • addedInput schema / properties / goal / description
        Added value: +"default|learning_guide|custom"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / response_length / description
        Added value: +"default|longer|shorter"
    • Changedchat_export3 fields changed
      • addedInput schema / properties / conversation_id / description
        Added value: +"Optional conversation ID"
      • addedInput schema / properties / format / description
        Added value: +"Export format: 'md' or 'json' (default: 'md')"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook ID or title alias"
    • Changedchat_get2 fields changed
      • addedInput schema / properties / conversation_id / description
        Added value: +"Optional conversation ID (defaults to latest active session)"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook ID or title alias"
    • Changedchat_list2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Max chat sessions to return (default: 20)"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook ID or title alias"
    • Changedcollection_create2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Name of the collection"
      • addedInput schema / properties / notebook_ids / description
        Added value: +"List of notebook UUIDs to include in the collection (optional)"
    • Changedcollection_delete2 fields changed
      • addedInput schema / properties / collection_id / description
        Added value: +"UUID of the collection"
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True after user approval"
    • Changedcollection_edit3 fields changed
      • addedInput schema / properties / collection_id / description
        Added value: +"UUID of the collection"
      • addedInput schema / properties / name / description
        Added value: +"New name for the collection (optional)"
      • addedInput schema / properties / notebook_ids / description
        Added value: +"New complete list of notebook UUIDs to include (optional)"
    • Changedcollection_set_emoji2 fields changed
      • addedInput schema / properties / collection_id / description
        Added value: +"UUID of the collection"
      • addedInput schema / properties / emoji / description
        Added value: +"Emoji character (use empty string \"\" to clear)"
    • Changedcross_notebook_query4 fields changed
      • addedInput schema / properties / all / description
        Added value: +"Query ALL notebooks (use with caution — rate limits apply)"
      • addedInput schema / properties / notebook_names / description
        Added value: +"Comma-separated notebook names or IDs (e.g. \"AI Research, Dev Tools\")"
      • addedInput schema / properties / query / description
        Added value: +"Question to ask across notebooks"
      • addedInput schema / properties / tags / description
        Added value: +"Comma-separated tags to select notebooks (e.g. \"ai,mcp\")"
    • Changeddownload_all_artifacts7 fields changed
      • addedInput schema / properties / all_notebooks / description
        Added value: +"Sweep every notebook in the account instead of one"
      • addedInput schema / properties / artifact_types / description
        Added value: +"Restrict to these types, e.g. [\"video\", \"slide_deck\",\n\"mind_map\", \"report\"]. Default: all types."
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID (omit when all_notebooks=True)"
      • addedInput schema / properties / output_dir / description
        Added 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."
      • addedInput schema / properties / output_format / description
        Added value: +"For quiz/flashcards only: json|markdown|html"
      • addedInput schema / properties / skip_existing / description
        Added value: +"Skip artifacts whose target file already exists —\nmakes repeated runs incremental"
      • addedInput schema / properties / slide_deck_format / description
        Added value: +"For slide decks only: pdf (default) or pptx"
    • Changeddownload_artifact9 fields changed
      • addedInput schema / properties / artifact_id / description
        Added value: +"Optional specific artifact ID (uses latest if not provided)"
      • addedInput schema / properties / artifact_type / description
        Added 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)"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / output_format / description
        Added value: +"For quiz/flashcards only: json|markdown|html (default: json)"
      • addedInput schema / properties / output_path / description
        Added 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."
      • addedInput schema / properties / poll_interval / description
        Added value: +"Seconds between readiness checks"
      • addedInput schema / properties / slide_deck_format / description
        Added value: +"For slide_deck only: pdf (default) or pptx"
      • addedInput schema / properties / wait / description
        Added value: +"Poll while the artifact download is still propagating"
      • addedInput schema / properties / wait_timeout / description
        Added value: +"Maximum seconds to wait when ``wait`` is enabled"
    • Changedexport_artifact4 fields changed
      • addedInput schema / properties / artifact_id / description
        Added value: +"Artifact UUID to export"
      • addedInput schema / properties / export_type / description
        Added value: +"\"docs\" or \"sheets\""
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / title / description
        Added value: +"Title for exported document (optional)"
    • Changedlabel9 fields changed
      • addedInput schema / properties / action / description
        Added 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)"
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True for delete action and for reorganize with unlabeled_only=False"
      • addedInput schema / properties / emoji / description
        Added value: +"Emoji character for set_emoji (e.g. \"📊\"), or \"\" to clear"
      • addedInput schema / properties / label_id / description
        Added value: +"Label UUID (required for rename, set_emoji, move_source, delete)"
      • addedInput schema / properties / label_ids / description
        Added value: +"List of label UUIDs for batch delete (alternative to label_id)"
      • addedInput schema / properties / name / description
        Added value: +"Label display name (required for create and rename)"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / source_id / description
        Added value: +"Source UUID to assign (required for move_source)"
      • addedInput schema / properties / unlabeled_only / description
        Added 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)."
    • Changednote6 fields changed
      • addedInput schema / properties / action / description
        Added 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)"
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True for delete action"
      • addedInput schema / properties / content / description
        Added value: +"Note content (required for create, optional for update)"
      • addedInput schema / properties / note_id / description
        Added value: +"Note UUID (required for update/delete)"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / title / description
        Added value: +"Note title (optional for create/update)"
    • Changednotebook_create1 field changed
      • addedInput schema / properties / title / description
        Added value: +"Optional title for the notebook"
    • Changednotebook_delete2 fields changed
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True after user approval"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
    • Changednotebook_describe1 field changed
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
    • Changednotebook_get1 field changed
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
    • Changednotebook_list1 field changed
      • addedInput schema / properties / max_results / description
        Added value: +"Maximum number of notebooks to return (default: 100)"
    • Changednotebook_query6 fields changed
      • addedInput schema / properties / conversation_id / description
        Added value: +"For follow-up questions"
      • addedInput schema / properties / new_conversation / description
        Added value: +"Start a fresh conversation when conversation_id is omitted"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / query / description
        Added value: +"Question to ask"
      • addedInput schema / properties / source_ids / description
        Added value: +"Source IDs to query (default: all)"
      • addedInput schema / properties / timeout / description
        Added value: +"Wall-clock query budget in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0; source-heavy notebooks may need 180+)"
    • Changednotebook_query_start6 fields changed
      • addedInput schema / properties / conversation_id / description
        Added value: +"For follow-up questions"
      • addedInput schema / properties / new_conversation / description
        Added value: +"Start a fresh conversation when conversation_id is omitted"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / query / description
        Added value: +"Question to ask"
      • addedInput schema / properties / source_ids / description
        Added value: +"Source IDs to query (default: all)"
      • addedInput schema / properties / timeout / description
        Added value: +"Wall-clock query budget in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0; source-heavy notebooks may need 180+)"
    • Changednotebook_query_status1 field changed
      • addedInput schema / properties / query_id / description
        Added value: +"The query ID returned by notebook_query_start"
    • Changednotebook_rename2 fields changed
      • addedInput schema / properties / new_title / description
        Added value: +"New title"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
    • Changednotebook_share_batch3 fields changed
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True after user approval"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / recipients / description
        Added value: +"List of dicts, each with 'email' (str) and optional 'role' (str).\n        Role defaults to 'viewer'. Example: [{\"email\": \"a@b.com\", \"role\": \"editor\"}]"
    • Changednotebook_share_invite3 fields changed
      • addedInput schema / properties / email / description
        Added value: +"Email address to invite"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / role / description
        Added value: +"\"viewer\" or \"editor\" (default: viewer)"
    • Changednotebook_share_public2 fields changed
      • addedInput schema / properties / is_public / description
        Added value: +"True to enable public link, False to disable (default: True)"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
    • Changednotebook_share_status1 field changed
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
    • Changedpipeline4 fields changed
      • addedInput schema / properties / action / description
        Added value: +"Operation to perform (run, list)"
      • addedInput schema / properties / input_url / description
        Added value: +"URL variable for pipelines that need it (replaces $INPUT_URL)"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Target notebook UUID (required for action=run)"
      • addedInput schema / properties / pipeline_name / description
        Added value: +"Pipeline name (required for action=run, e.g. \"ingest-and-podcast\")"
    • Changedresearch_import5 fields changed
      • addedInput schema / properties / cited_only / description
        Added value: +"Import only sources cited by the research report.\nOverrides source_indices when enabled."
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / source_indices / description
        Added value: +"Source indices to import (default: all)"
      • addedInput schema / properties / task_id / description
        Added value: +"Research task ID"
      • addedInput schema / properties / timeout / description
        Added value: +"Import timeout in seconds (default: 300, increase for large notebooks)"
    • Changedresearch_start5 fields changed
      • addedInput schema / properties / mode / description
        Added value: +"fast (~30s, ~10 sources) | deep (~5min, ~40 sources, web only)"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Existing notebook (creates new if not provided)"
      • addedInput schema / properties / query / description
        Added value: +"What to search for (e.g. \"quantum computing advances\")"
      • addedInput schema / properties / source / description
        Added value: +"web|drive (where to search)"
      • addedInput schema / properties / title / description
        Added value: +"Title for new notebook"
    • Changedresearch_status7 fields changed
      • addedInput schema / properties / auto_import / description
        Added value: +"If True, automatically import sources when research completes.\n        If False (default), returns next_action hint to call research_import manually."
      • addedInput schema / properties / compact / description
        Added value: +"If True (default), truncate report and limit sources shown to save tokens.\n    Use compact=False to get full details."
      • addedInput schema / properties / max_wait / description
        Added value: +"Max seconds to wait (default: 900, 0=single poll)"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / poll_interval / description
        Added value: +"Seconds between polls (default: 30)"
      • addedInput schema / properties / query / description
        Added value: +"Optional query text for fallback matching when task_id changes (deep research).\nContributed by @saitrogen (PR #15)."
      • addedInput schema / properties / task_id / description
        Added value: +"Optional Task ID to poll for a specific research task."
    • Changedsave_auth_tokens5 fields changed
      • addedInput schema / properties / cookies / description
        Added value: +"Cookie header from Chrome DevTools (only needed if CLI fails)"
      • addedInput schema / properties / csrf_token / description
        Added value: +"Deprecated - auto-extracted"
      • addedInput schema / properties / request_body / description
        Added value: +"Optional - contains CSRF if extracting manually"
      • addedInput schema / properties / request_url / description
        Added value: +"Optional - contains session ID if extracting manually"
      • addedInput schema / properties / session_id / description
        Added value: +"Deprecated - auto-extracted"
    • Changedsource_add11 fields changed
      • addedInput schema / properties / doc_type / description
        Added value: +"Drive doc type: doc|slides|sheets|pdf (for source_type=drive)"
      • addedInput schema / properties / document_id / description
        Added value: +"Google Drive document ID (for source_type=drive)"
      • addedInput schema / properties / file_path / description
        Added 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."
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / source_type / description
        Added 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."
      • addedInput schema / properties / text / description
        Added value: +"Text content to add (for source_type=text)"
      • addedInput schema / properties / title / description
        Added value: +"Display title (for text sources)"
      • addedInput schema / properties / url / description
        Added value: +"URL to add (for source_type=url)"
      • addedInput schema / properties / urls / description
        Added value: +"List of URLs to add in bulk (for source_type=url, alternative to url)"
      • addedInput schema / properties / wait / description
        Added value: +"If True, wait for source processing to complete before returning"
      • addedInput schema / properties / wait_timeout / description
        Added value: +"Max seconds to wait if wait=True (default 120)"
    • Changedsource_delete3 fields changed
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True after user approval"
      • addedInput schema / properties / source_id / description
        Added value: +"Source UUID to delete (single)"
      • addedInput schema / properties / source_ids / description
        Added value: +"List of source UUIDs to delete (bulk, alternative to source_id)"
    • Changedsource_describe1 field changed
      • addedInput schema / properties / source_id / description
        Added value: +"Source UUID"
    • Changedsource_get_content4 fields changed
      • addedInput schema / properties / poll_interval / description
        Added value: +"Seconds between readiness checks"
      • addedInput schema / properties / source_id / description
        Added value: +"Source UUID"
      • addedInput schema / properties / wait / description
        Added value: +"Poll until indexed content is available"
      • addedInput schema / properties / wait_timeout / description
        Added value: +"Maximum seconds to wait when ``wait`` is enabled"
    • Changedsource_list_drive2 fields changed
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / skip_freshness / description
        Added value: +"If True, skip per-source freshness checks for faster listing"
    • Changedsource_rename3 fields changed
      • addedInput schema / properties / new_title / description
        Added value: +"New display title for the source"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID containing the source"
      • addedInput schema / properties / source_id / description
        Added value: +"Source UUID to rename"
    • Changedsource_sync_drive2 fields changed
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True after user approval"
      • addedInput schema / properties / source_ids / description
        Added value: +"Source UUIDs to sync"
    • Changedstudio_create4 fields changed
      • addedInput schema / properties / artifact_type / description
        Added 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"
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True after user approval"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / source_ids / description
        Added value: +"Source IDs to use (default: all sources)"
    • Changedstudio_delete3 fields changed
      • addedInput schema / properties / artifact_id / description
        Added value: +"Artifact UUID (from studio_status)"
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True after user approval"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
    • Changedstudio_revise4 fields changed
      • addedInput schema / properties / artifact_id / description
        Added value: +"UUID of the existing slide deck to revise (from studio_status)"
      • addedInput schema / properties / confirm / description
        Added value: +"Must be True after user approval"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / slide_instructions / description
        Added 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\"}]"
    • Changedstudio_status7 fields changed
      • addedInput schema / properties / action / description
        Added 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"
      • addedInput schema / properties / artifact_id / description
        Added value: +"For status, return only this artifact. Required for action=\"rename\"."
      • addedInput schema / properties / include_details / description
        Added value: +"Include prompts, source IDs, report content, and media details"
      • addedInput schema / properties / limit / description
        Added value: +"Maximum artifacts to return for status (1-100, default 20)"
      • addedInput schema / properties / new_title / description
        Added value: +"Required for action=\"rename\" - the new title for the artifact"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID"
      • addedInput schema / properties / offset / description
        Added value: +"Number of artifacts to skip for status pagination"
    • Changedtag5 fields changed
      • addedInput schema / properties / action / description
        Added value: +"Operation to perform (add, remove, list, select)"
      • addedInput schema / properties / notebook_id / description
        Added value: +"Notebook UUID (required for add, remove)"
      • addedInput schema / properties / notebook_title / description
        Added value: +"Optional display title (for add)"
      • addedInput schema / properties / query / description
        Added value: +"Search query (required for select; e.g. \"ai mcp\" or \"ai,mcp\")"
      • addedInput schema / properties / tags / description
        Added value: +"Comma-separated tags (required for add, remove; e.g. \"ai,research,llm\")"
  2. 5 tool updatesv0.9.14
    • Addedcollection_create
    • Addedcollection_delete
    • Addedcollection_edit
    • Addedcollection_list
    • Addedcollection_set_emoji
  3. 7 tool updatesv0.9.12
    • Changednotebook_query2 fields changed
      • addedInput schema / properties / new_conversation
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • changedInput schema / properties / source_ids / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changednotebook_query_start2 fields changed
      • addedInput schema / properties / new_conversation
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • changedInput schema / properties / source_ids / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedresearch_import1 field changed
      • changedInput schema / properties / source_indices / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "integer"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "integer"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsource_add1 field changed
      • changedInput schema / properties / urls / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsource_delete1 field changed
      • changedInput schema / properties / source_ids / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsource_sync_drive3 fields changed
      • addedInput schema / properties / source_ids / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  }
        +]
      • removedInput schema / properties / source_ids / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / source_ids / type
        Removed value: -"array"
    • Changedstudio_create1 field changed
      • changedInput schema / properties / source_ids / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  4. 2 tool updatesv0.9.7
    • Changeddownload_artifact3 fields changed
      • addedInput schema / properties / poll_interval
        Added value: +{
        +  "default": 5,
        +  "type": "number"
        +}
      • addedInput schema / properties / wait
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / wait_timeout
        Added value: +{
        +  "default": 180,
        +  "type": "number"
        +}
    • Changedsource_get_content3 fields changed
      • addedInput schema / properties / poll_interval
        Added value: +{
        +  "default": 3,
        +  "type": "number"
        +}
      • addedInput schema / properties / wait
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / wait_timeout
        Added value: +{
        +  "default": 120,
        +  "type": "number"
        +}
  5. 15 tool updatesv0.9.5
    • Addedchat_configure
    • Addeddownload_all_artifacts
    • Addedexport_artifact
    • Addedlabel
    • Addednotebook_create
    • Addednotebook_describe
    • Addednotebook_get
    • Addednotebook_list
    • Addednotebook_query_status
    • Addedrefresh_auth
    • Addedresearch_start
    • Addedresearch_status
    • Addedserver_info
    • Addedsource_get_content
    • Addedsource_sync_drive
  6. 18 tool updatesv0.9.1
    • Addedbatch
    • Addedchat_list
    • Addedcross_notebook_query
    • Addeddownload_artifact
    • Removedexport_artifact
    • Addednote
    • Addednotebook_delete
    • Removednotebook_get
    • Removednotebook_list
    • Addednotebook_rename
    • Addedresearch_import
    • Removedresearch_start
    • Removedresearch_status
    • Addedsource_add
    • Addedsource_rename
    • Removedsource_sync_drive
    • Addedstudio_create
    • Addedstudio_status
  7. 24 tool updatesv0.9.1
    • Removedbatch
    • Addedchat_export
    • Addedchat_get
    • Addedexport_artifact
    • Addednotebook_get
    • Addednotebook_query
    • Addednotebook_query_start
    • Removednotebook_query_status
    • Addednotebook_share_batch
    • Addednotebook_share_invite
    • Addednotebook_share_public
    • Addednotebook_share_status
    • Addedpipeline
    • Addedresearch_start
    • Addedresearch_status
    • Addedsave_auth_tokens
    • Removedsource_add
    • Addedsource_delete
    • Addedsource_describe
    • Addedsource_list_drive
    • Addedsource_sync_drive
    • Addedstudio_delete
    • Addedstudio_revise
    • Addedtag
  8. 6 tool updatesv0.8.9
    • Addedbatch
    • Removednotebook_get
    • Addednotebook_list
    • Addednotebook_query_status
    • Addedsource_add
    • Removedtag
  9. 37 tool updatesv0.8.9
    • Removedbatch
    • Removedchat_configure
    • Removedcross_notebook_query
    • Removeddownload_artifact
    • Removedexport_artifact
    • Removedlabel
    • Removednote
    • Removednotebook_create
    • Removednotebook_delete
    • Removednotebook_describe
    • Removednotebook_list
    • Removednotebook_query
    • Removednotebook_query_start
    • Removednotebook_query_status
    • Removednotebook_rename
    • Removednotebook_share_batch
    • Removednotebook_share_invite
    • Removednotebook_share_public
    • Removednotebook_share_status
    • Removedpipeline
    • Removedrefresh_auth
    • Removedresearch_import
    • Removedresearch_start
    • Removedresearch_status
    • Removedsave_auth_tokens
    • Removedserver_info
    • Removedsource_add
    • Removedsource_delete
    • Removedsource_describe
    • Removedsource_get_content
    • Removedsource_list_drive
    • Removedsource_rename
    • Removedsource_sync_drive
    • Removedstudio_create
    • Removedstudio_delete
    • Removedstudio_revise
    • Removedstudio_status
  10. 37 tool updatesv0.7.7
    • Changedbatch9 fields changed
      • removedInput schema / properties / action / description
        Removed value: -"Operation to perform (query, add_source, create, delete, studio)"
      • removedInput schema / properties / all / description
        Removed value: -"Apply to ALL notebooks"
      • removedInput schema / properties / artifact_type / description
        Removed value: -"Artifact type (for action=studio): audio, video, report, etc."
      • removedInput schema / properties / confirm / description
        Removed value: -"Must be True for delete action"
      • removedInput schema / properties / notebook_names / description
        Removed value: -"Comma-separated notebook names or IDs"
      • removedInput schema / properties / query / description
        Removed value: -"Question to ask (for action=query)"
      • removedInput schema / properties / source_url / description
        Removed value: -"URL to add (for action=add_source)"
      • removedInput schema / properties / tags / description
        Removed value: -"Comma-separated tags to select notebooks"
      • removedInput schema / properties / titles / description
        Removed value: -"Comma-separated notebook titles (for action=create)"
    • Changedchat_configure4 fields changed
      • removedInput schema / properties / custom_prompt / description
        Removed value: -"Required when goal=custom (max 10000 chars)"
      • removedInput schema / properties / goal / description
        Removed value: -"default|learning_guide|custom"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / response_length / description
        Removed value: -"default|longer|shorter"
    • Changedcross_notebook_query4 fields changed
      • removedInput schema / properties / all / description
        Removed value: -"Query ALL notebooks (use with caution — rate limits apply)"
      • removedInput schema / properties / notebook_names / description
        Removed value: -"Comma-separated notebook names or IDs (e.g. \"AI Research, Dev Tools\")"
      • removedInput schema / properties / query / description
        Removed value: -"Question to ask across notebooks"
      • removedInput schema / properties / tags / description
        Removed value: -"Comma-separated tags to select notebooks (e.g. \"ai,mcp\")"
    • Changeddownload_artifact6 fields changed
      • removedInput schema / properties / artifact_id / description
        Removed value: -"Optional specific artifact ID (uses latest if not provided)"
      • removedInput schema / properties / artifact_type / description
        Removed 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)"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / output_format / description
        Removed value: -"For quiz/flashcards only: json|markdown|html (default: json)"
      • removedInput schema / properties / output_path / description
        Removed value: -"Path to save the file"
      • removedInput schema / properties / slide_deck_format / description
        Removed value: -"For slide_deck only: pdf (default) or pptx"
    • Changedexport_artifact4 fields changed
      • removedInput schema / properties / artifact_id / description
        Removed value: -"Artifact UUID to export"
      • removedInput schema / properties / export_type / description
        Removed value: -"\"docs\" or \"sheets\""
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / title / description
        Removed value: -"Title for exported document (optional)"
    • Changedlabel9 fields changed
      • removedInput schema / properties / action / description
        Removed 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)"
      • removedInput schema / properties / confirm / description
        Removed value: -"Must be True for delete action and for reorganize with unlabeled_only=False"
      • removedInput schema / properties / emoji / description
        Removed value: -"Emoji character for set_emoji (e.g. \"📊\"), or \"\" to clear"
      • removedInput schema / properties / label_id / description
        Removed value: -"Label UUID (required for rename, set_emoji, move_source, delete)"
      • removedInput schema / properties / label_ids / description
        Removed value: -"List of label UUIDs for batch delete (alternative to label_id)"
      • removedInput schema / properties / name / description
        Removed value: -"Label display name (required for create and rename)"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / source_id / description
        Removed value: -"Source UUID to assign (required for move_source)"
      • removedInput schema / properties / unlabeled_only / description
        Removed 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)."
    • Changednote6 fields changed
      • removedInput schema / properties / action / description
        Removed 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)"
      • removedInput schema / properties / confirm / description
        Removed value: -"Must be True for delete action"
      • removedInput schema / properties / content / description
        Removed value: -"Note content (required for create, optional for update)"
      • removedInput schema / properties / note_id / description
        Removed value: -"Note UUID (required for update/delete)"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / title / description
        Removed value: -"Note title (optional for create/update)"
    • Changednotebook_create1 field changed
      • removedInput schema / properties / title / description
        Removed value: -"Optional title for the notebook"
    • Changednotebook_delete2 fields changed
      • removedInput schema / properties / confirm / description
        Removed value: -"Must be True after user approval"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
    • Changednotebook_describe1 field changed
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
    • Changednotebook_get1 field changed
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
    • Changednotebook_list1 field changed
      • removedInput schema / properties / max_results / description
        Removed value: -"Maximum number of notebooks to return (default: 100)"
    • Changednotebook_query5 fields changed
      • removedInput schema / properties / conversation_id / description
        Removed value: -"For follow-up questions"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / query / description
        Removed value: -"Question to ask"
      • removedInput schema / properties / source_ids / description
        Removed value: -"Source IDs to query (default: all)"
      • removedInput schema / properties / timeout / description
        Removed value: -"Request timeout in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0)"
    • Changednotebook_query_start5 fields changed
      • removedInput schema / properties / conversation_id / description
        Removed value: -"For follow-up questions"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / query / description
        Removed value: -"Question to ask"
      • removedInput schema / properties / source_ids / description
        Removed value: -"Source IDs to query (default: all)"
      • removedInput schema / properties / timeout / description
        Removed value: -"Request timeout in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0)"
    • Changednotebook_query_status1 field changed
      • removedInput schema / properties / query_id / description
        Removed value: -"The query ID returned by notebook_query_start"
    • Changednotebook_rename2 fields changed
      • removedInput schema / properties / new_title / description
        Removed value: -"New title"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
    • Changednotebook_share_batch3 fields changed
      • removedInput schema / properties / confirm / description
        Removed value: -"Must be True after user approval"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / recipients / description
        Removed value: -"List of dicts, each with 'email' (str) and optional 'role' (str).\n        Role defaults to 'viewer'. Example: [{\"email\": \"a@b.com\", \"role\": \"editor\"}]"
    • Changednotebook_share_invite3 fields changed
      • removedInput schema / properties / email / description
        Removed value: -"Email address to invite"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / role / description
        Removed value: -"\"viewer\" or \"editor\" (default: viewer)"
    • Changednotebook_share_public2 fields changed
      • removedInput schema / properties / is_public / description
        Removed value: -"True to enable public link, False to disable (default: True)"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
    • Changednotebook_share_status1 field changed
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
    • Changedpipeline4 fields changed
      • removedInput schema / properties / action / description
        Removed value: -"Operation to perform (run, list)"
      • removedInput schema / properties / input_url / description
        Removed value: -"URL variable for pipelines that need it (replaces $INPUT_URL)"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Target notebook UUID (required for action=run)"
      • removedInput schema / properties / pipeline_name / description
        Removed value: -"Pipeline name (required for action=run, e.g. \"ingest-and-podcast\")"
    • Changedresearch_import5 fields changed
      • removedInput schema / properties / cited_only / description
        Removed value: -"Import only sources cited by the research report.\nOverrides source_indices when enabled."
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / source_indices / description
        Removed value: -"Source indices to import (default: all)"
      • removedInput schema / properties / task_id / description
        Removed value: -"Research task ID"
      • removedInput schema / properties / timeout / description
        Removed value: -"Import timeout in seconds (default: 300, increase for large notebooks)"
    • Changedresearch_start5 fields changed
      • removedInput schema / properties / mode / description
        Removed value: -"fast (~30s, ~10 sources) | deep (~5min, ~40 sources, web only)"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Existing notebook (creates new if not provided)"
      • removedInput schema / properties / query / description
        Removed value: -"What to search for (e.g. \"quantum computing advances\")"
      • removedInput schema / properties / source / description
        Removed value: -"web|drive (where to search)"
      • removedInput schema / properties / title / description
        Removed value: -"Title for new notebook"
    • Changedresearch_status8 fields changed
      • addedInput schema / properties / auto_import
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • removedInput schema / properties / compact / description
        Removed value: -"If True (default), truncate report and limit sources shown to save tokens.\n    Use compact=False to get full details."
      • changedInput schema / properties / max_wait / default
        Previous value: -300New value: +900
      • removedInput schema / properties / max_wait / description
        Removed value: -"Max seconds to wait (default: 300, 0=single poll)"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / poll_interval / description
        Removed value: -"Seconds between polls (default: 30)"
      • removedInput schema / properties / query / description
        Removed value: -"Optional query text for fallback matching when task_id changes (deep research).\nContributed by @saitrogen (PR #15)."
      • removedInput schema / properties / task_id / description
        Removed value: -"Optional Task ID to poll for a specific research task."
    • Changedsave_auth_tokens5 fields changed
      • removedInput schema / properties / cookies / description
        Removed value: -"Cookie header from Chrome DevTools (only needed if CLI fails)"
      • removedInput schema / properties / csrf_token / description
        Removed value: -"Deprecated - auto-extracted"
      • removedInput schema / properties / request_body / description
        Removed value: -"Optional - contains CSRF if extracting manually"
      • removedInput schema / properties / request_url / description
        Removed value: -"Optional - contains session ID if extracting manually"
      • removedInput schema / properties / session_id / description
        Removed value: -"Deprecated - auto-extracted"
    • Changedsource_add11 fields changed
      • removedInput schema / properties / doc_type / description
        Removed value: -"Drive doc type: doc|slides|sheets|pdf (for source_type=drive)"
      • removedInput schema / properties / document_id / description
        Removed value: -"Google Drive document ID (for source_type=drive)"
      • removedInput schema / properties / file_path / description
        Removed value: -"Local file path (for source_type=file)"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / source_type / description
        Removed 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."
      • removedInput schema / properties / text / description
        Removed value: -"Text content to add (for source_type=text)"
      • removedInput schema / properties / title / description
        Removed value: -"Display title (for text sources)"
      • removedInput schema / properties / url / description
        Removed value: -"URL to add (for source_type=url)"
      • removedInput schema / properties / urls / description
        Removed value: -"List of URLs to add in bulk (for source_type=url, alternative to url)"
      • removedInput schema / properties / wait / description
        Removed value: -"If True, wait for source processing to complete before returning"
      • removedInput schema / properties / wait_timeout / description
        Removed value: -"Max seconds to wait if wait=True (default 120)"
    • Changedsource_delete3 fields changed
      • removedInput schema / properties / confirm / description
        Removed value: -"Must be True after user approval"
      • removedInput schema / properties / source_id / description
        Removed value: -"Source UUID to delete (single)"
      • removedInput schema / properties / source_ids / description
        Removed value: -"List of source UUIDs to delete (bulk, alternative to source_id)"
    • Changedsource_describe1 field changed
      • removedInput schema / properties / source_id / description
        Removed value: -"Source UUID"
    • Changedsource_get_content1 field changed
      • removedInput schema / properties / source_id / description
        Removed value: -"Source UUID"
    • Changedsource_list_drive2 fields changed
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • addedInput schema / properties / skip_freshness
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Changedsource_rename3 fields changed
      • removedInput schema / properties / new_title / description
        Removed value: -"New display title for the source"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID containing the source"
      • removedInput schema / properties / source_id / description
        Removed value: -"Source UUID to rename"
    • Changedsource_sync_drive2 fields changed
      • removedInput schema / properties / confirm / description
        Removed value: -"Must be True after user approval"
      • removedInput schema / properties / source_ids / description
        Removed value: -"Source UUIDs to sync"
    • Changedstudio_create4 fields changed
      • removedInput schema / properties / artifact_type / description
        Removed 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"
      • removedInput schema / properties / confirm / description
        Removed value: -"Must be True after user approval"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / source_ids / description
        Removed value: -"Source IDs to use (default: all sources)"
    • Changedstudio_delete3 fields changed
      • removedInput schema / properties / artifact_id / description
        Removed value: -"Artifact UUID (from studio_status)"
      • removedInput schema / properties / confirm / description
        Removed value: -"Must be True after user approval"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
    • Changedstudio_revise4 fields changed
      • removedInput schema / properties / artifact_id / description
        Removed value: -"UUID of the existing slide deck to revise (from studio_status)"
      • removedInput schema / properties / confirm / description
        Removed value: -"Must be True after user approval"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
      • removedInput schema / properties / slide_instructions / description
        Removed 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\"}]"
    • Changedstudio_status4 fields changed
      • removedInput schema / properties / action / description
        Removed 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"
      • removedInput schema / properties / artifact_id / description
        Removed value: -"Required for action=\"rename\" - the artifact UUID to rename"
      • removedInput schema / properties / new_title / description
        Removed value: -"Required for action=\"rename\" - the new title for the artifact"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID"
    • Changedtag5 fields changed
      • removedInput schema / properties / action / description
        Removed value: -"Operation to perform (add, remove, list, select)"
      • removedInput schema / properties / notebook_id / description
        Removed value: -"Notebook UUID (required for add, remove)"
      • removedInput schema / properties / notebook_title / description
        Removed value: -"Optional display title (for add)"
      • removedInput schema / properties / query / description
        Removed value: -"Search query (required for select; e.g. \"ai mcp\" or \"ai,mcp\")"
      • removedInput schema / properties / tags / description
        Removed value: -"Comma-separated tags (required for add, remove; e.g. \"ai,research,llm\")"

TDQS

B3.3/5.0

Scored across 48 tools

Disambiguation4/5

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.

Naming Consistency3/5

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.

Tool Count2/5

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.

Completeness5/5

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

ActivityActive
ResponsivenessResponsive

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

Related MCP Servers