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

Programmatic access to Gemini Notebook — via command-line interface (CLI) or Model Context Protocol (MCP) server.
Note: Personal/consumer accounts are tested regularly. Gemini Notebook Enterprise support is experimental. The documented
notebook.cloud.google.comhost has been live-verified with a project-qualifiedglobaldeployment; other Enterprise host variants may require additional validation.
☕ If you find notebooklm-mcp-cli useful, consider buying me a coffee. It's free and built in my spare time — but testing every Gemini Notebook feature takes real time and resources. A coffee helps me cover it and keep shipping. Thank you! 🙏
📺 Watch the Demos
Latest
Codex Setup + Cinematic Video & Slides |
|
MCP Demos
General Overview | Claude Desktop | Perplexity Desktop | MCP Super Assistant |
|
|
|
|
CLI Demos
CLI Overview | CLI, MCP & Skills | Setup, Doctor & mcpb | Infographics Support |
|
|
|
|
Two Ways to Use
🖥️ Command-Line Interface (CLI)
Use nlm directly in your terminal for scripting, automation, or interactive use:
nlm notebook list # List all notebooks
nlm notebook create "Research Project" # Create a notebook
nlm source add <notebook> --url "https://..." # Add sources
nlm audio create <notebook> --confirm # Generate podcast
nlm download audio <notebook> --id <artifact-id> # Download audio file
nlm download all <notebook> -d ./exports # Download every artifact
nlm share public <notebook> # Enable public linkRun nlm --ai for comprehensive AI-assistant documentation.
🤖 MCP Server (for AI Agents)
Connect AI assistants (Claude, Gemini, Cursor, etc.) to Gemini Notebook:
# Automatic setup — picks the right config for each tool
nlm setup add claude-code
nlm setup add claude-desktop
nlm setup add gemini
nlm setup add github-copilot
nlm setup add cursor
nlm setup add cline
nlm setup add antigravity
# Generate JSON config for any other tool
nlm setup add jsonThen use natural language: "Create a notebook about quantum computing and generate a podcast"
Related MCP server: NotebookLM MCP Server
Features
Capability | CLI Command | MCP Tool |
List notebooks |
|
|
Create notebook |
|
|
Add Sources (URL, Text, Drive, File) |
|
|
Query notebook (persists to web UI) |
|
|
List/view/export chat sessions |
|
|
Create Studio Content (Audio, Video, etc.) |
|
|
Revise slide decks |
|
|
Download artifacts |
|
|
Download all artifacts (one or all notebooks) |
|
|
Web/Drive research |
|
|
Share notebook |
|
|
Sync Drive sources |
|
|
Batch operations |
|
|
Cross-notebook query |
|
|
Pipelines (multi-step workflows) |
|
|
Tag & smart select |
|
|
Configure AI tools |
| — |
Install AI Skills |
| — |
Diagnose issues |
| — |
📚 More Documentation:
Getting Started — Install, login, agent setup, and migration from another Gemini Notebook MCP
CLI Guide — Complete command reference
MCP Guide — All 43 MCP tools with examples
Authentication — Setup and troubleshooting
Remote MCP — Web/mobile connector feasibility, security, and authentication limitations
API Reference — Internal API docs for contributors
Important Disclaimer
This MCP and CLI use internal APIs that:
Are undocumented and may change without notice
Require cookie extraction from your browser (I have a tool for that!)
Use at your own risk for personal/experimental purposes.
Installation
🆕 Claude Desktop users: Download the extension (
.mcpbfile) → double-click → done! One-click install, no config needed.
Install from PyPI. This single package includes both the CLI and MCP server:
Using uv (Recommended)
uv tool install notebooklm-mcp-cliUsing uvx (Run Without Install)
uvx --from notebooklm-mcp-cli nlm --help
uvx --from notebooklm-mcp-cli notebooklm-mcpUsing pip
pip install notebooklm-mcp-cliUsing pipx
pipx install notebooklm-mcp-cliAfter installation, you get:
nlm— Command-line interfacenotebooklm-mcp— Gemini Notebook MCP server for AI assistants
# Clone the repository
git clone https://github.com/jacob-bd/gemini-notebook-mcp-cli.git
cd notebooklm-mcp
# Install with uv
uv tool install .Upgrading
# Using uv
uv tool upgrade notebooklm-mcp-cli
# Using pip
pip install --upgrade notebooklm-mcp-cli
# Using pipx
pipx upgrade notebooklm-mcp-cliAfter upgrading, restart your AI tool to reconnect to the updated MCP server:
Claude Code: Restart the application, or use
/mcpto reconnectCursor: Restart the application
Gemini CLI: Restart the CLI session
Upgrading from Legacy Versions
If you previously installed the separate CLI and MCP packages, you need to migrate to the unified package.
Step 1: Check What You Have Installed
uv tool list | grep notebooklmLegacy packages to remove:
Package | What it was |
| Old CLI-only package |
| Old MCP-only package |
Step 2: Uninstall Legacy Packages
# Remove old CLI package (if installed)
uv tool uninstall notebooklm-cli
# Remove old MCP package (if installed)
uv tool uninstall notebooklm-mcp-serverStep 3: Reinstall the Unified Package
After removing legacy packages, reinstall to fix symlinks:
uv tool install --force notebooklm-mcp-cliWhy
--force? When multiple packages provide the same executable,uvcan leave broken symlinks after uninstalling. The--forceflag ensures clean symlinks.
Step 4: Verify Installation
uv tool list | grep notebooklmYou should see only:
notebooklm-mcp-cli v0.2.0
- nlm
- notebooklm-mcpStep 5: Re-authenticate
Your existing cookies should still work, but if you encounter auth issues:
nlm loginNote: The configured MCP server name is now
gemini-notebook-mcp. The executable remainsnotebooklm-mcpfor compatibility with existing installations.
Getting Started
If you are setting up the tool for the first time — or migrating from a browser-based Gemini Notebook MCP — see the Getting Started Guide. It covers install, login, agent registration, and a step-by-step migration path that avoids the "two Gemini Notebook servers registered" trap.
Uninstalling
To completely remove the MCP:
# Using uv
uv tool uninstall notebooklm-mcp-cli
# Using pip
pip uninstall notebooklm-mcp-cli
# Using pipx
pipx uninstall notebooklm-mcp-cli
# Remove cached auth tokens and data (optional)
rm -rf ~/.notebooklm-mcp-cliAlso remove from your AI tools:
nlm setup remove claude-code
nlm setup remove cursor
# ... or any configured toolAuthentication
Before using the CLI or MCP, you need to authenticate with Gemini Notebook:
CLI Authentication (Recommended)
# Auto mode: launches your browser, you log in, cookies extracted automatically
nlm login
# Check if already authenticated
nlm login --check
# Use a named profile (for multiple Google accounts)
nlm login --profile work
nlm login --profile personal
# Manual mode: import cookies from a file
nlm login --manual --file cookies.txt
# External CDP provider (e.g., OpenClaw-managed browser)
nlm login --provider openclaw --cdp-url http://127.0.0.1:18800Profile management:
nlm login --check # Show current auth status
nlm login switch <profile> # Switch the default profile
nlm login profile list # List all profiles with email addresses
nlm login profile delete <profile> # Delete a profile
nlm login profile rename <old> <new> # Rename a profileEnterprise Authentication (Gemini Notebook Enterprise)
For organizations using Gemini Notebook Enterprise via Google Cloud, ask your Enterprise administrator for the project ID or number, the deployment location/multi-region, and confirmation that your account has access. The current documented host is notebook.cloud.google.com; older deployments may use notebooklm.cloud.google.com or vertexaisearch.cloud.google.com.
Set Base URL, GCP Project ID & Location:
export NOTEBOOKLM_BASE_URL="https://notebook.cloud.google.com" # Required: your GCP project ID or project number from your administrator export NOTEBOOKLM_PROJECT_ID="your-gcp-project-id-or-number" # Optional: GCP location/multi-region from your administrator: global (default), us, or eu export NOTEBOOKLM_LOCATION="global"Save an Enterprise Auth Profile: This opens the configured Enterprise URL in an isolated browser profile. Sign in with your organization account:
nlm login --profile enterprise nlm login switch enterpriseYou can switch back to a personal profile at any time:
unset NOTEBOOKLM_BASE_URL NOTEBOOKLM_PROJECT_ID NOTEBOOKLM_LOCATION nlm login switch personalConfigure MCP Server with Enterprise Environment Variables: When adding the MCP server to AI assistants (Claude, Cursor, etc.), pass
NOTEBOOKLM_BASE_URL,NOTEBOOKLM_PROJECT_ID, and optionallyNOTEBOOKLM_LOCATION:{ "mcpServers": { "gemini-notebook-mcp": { "command": "notebooklm-mcp", "env": { "NOTEBOOKLM_BASE_URL": "https://notebook.cloud.google.com", "NOTEBOOKLM_PROJECT_ID": "your-gcp-project-id-or-number", "NOTEBOOKLM_LOCATION": "global" } } } }
Each profile gets its own isolated browser session, so you can be logged into multiple Google accounts simultaneously. Enterprise environment variables apply to the current process, so keep them in an Enterprise-only shell or MCP configuration when you also use a personal account.
Standalone Auth Tool
If you only need the MCP server (not the CLI):
nlm login # Auto mode (launches browser)
nlm login --manual # Manual file modeHow it works: Auto mode launches a dedicated browser profile (supports Chrome, Arc, Dia, Comet, Brave, Edge, Chromium, Firefox, and more), you log in to Google, and cookies are extracted automatically. Your login persists for future auth refreshes.
Prefer a specific browser? Set it with nlm config set auth.browser chromium (or comet, dia, brave, arc, edge, chrome, firefox, etc.). Falls back to auto-detection if the preferred named browser is not found. For any other Chromium-compatible browser, set its executable with nlm config set auth.browser_path /path/to/browser or NLM_BROWSER_PATH; an invalid explicit path fails closed instead of launching a different browser. When Chromium/CDP is unavailable, auto can fall back to Firefox.
For detailed instructions and troubleshooting, see docs/AUTHENTICATION.md.
MCP Configuration
⚠️ Context Window Warning: This MCP provides 43 tools. Disable it when not using Gemini Notebook to preserve context. In Claude Code:
@gemini-notebook-mcpto toggle. To keep it on but expose only a subset, see Selective tool exposure.
Automatic Setup (Recommended)
Use nlm setup to automatically configure the MCP server for your AI tools — no manual JSON editing required:
# Add to any supported tool
nlm setup add claude-code
nlm setup add claude-desktop
nlm setup add claude-desktop --profile 3p # Relay AI / Claude 3P
nlm setup add gemini
nlm setup add github-copilot
nlm setup add cursor
nlm setup add windsurf
# Generate JSON config for any other tool
nlm setup add json
# Check which tools are configured
nlm setup list
# Diagnose installation & auth issues
nlm doctorClaude Desktop setup only writes to profiles that are detected as present. If
both regular and Relay AI/3P profiles exist, the CLI asks whether to configure
regular, 3P, or both. For scripts, use --profile regular|3p|both. If no
Claude Desktop profile is detected, nothing is created or changed.
Removal uses the same profile selection, for example
nlm setup remove claude-desktop --profile regular.
Removal only offers detected profiles containing this MCP or a recognized
legacy entry; unrelated MCP servers are left untouched.
Before adding or removing the MCP, fully quit the selected Claude Desktop profile. The CLI detects running regular and Relay AI/3P instances and refuses to write while they are open, because Claude may rewrite the config and discard the change. Reopen Claude Desktop after setup completes.
Install AI Skills (Optional)
Install the Gemini Notebook expert guide for your AI assistant to help it use the tools effectively. Supported for Cline, Antigravity, OpenClaw, Codex, OpenCode, Claude Code, and Gemini CLI.
# Install skill files
nlm skill install cline
nlm skill install openclaw
nlm skill install codex
nlm skill install antigravity
# Update skills
nlm skill updateUser-level skill installation requires the target tool to be detected first;
the CLI will not create a missing tool directory or install anyway. Use
--level project when you intentionally want a project-local skill.
Remove from a tool
nlm setup remove claude-codeUsing uvx (No Install Required)
If you don't want to install the package, you can use uvx to run on-the-fly:
# Run CLI commands directly
uvx --from notebooklm-mcp-cli nlm setup add cursor
uvx --from notebooklm-mcp-cli nlm loginFor tools that use JSON config, point them to uvx:
{
"mcpServers": {
"gemini-notebook-mcp": {
"command": "uvx",
"args": ["--from", "notebooklm-mcp-cli", "notebooklm-mcp"]
}
}
}Tip: Run
nlm setup add jsonfor an interactive wizard that generates the right JSON snippet for your tool.
Claude Code / Gemini CLI support adding MCP servers via their own CLI:
claude mcp add --scope user gemini-notebook-mcp notebooklm-mcp
gemini mcp add --scope user gemini-notebook-mcp notebooklm-mcpCursor / Windsurf resolve commands from your PATH, so the command name is enough:
{
"mcpServers": {
"gemini-notebook-mcp": {
"command": "notebooklm-mcp"
}
}
}Tool | Config Location |
Cursor |
|
Windsurf |
|
GitHub Copilot (VS Code workspace) uses .vscode/mcp.json with a top-level servers key:
{
"servers": {
"gemini-notebook-mcp": {
"command": "notebooklm-mcp",
"args": []
}
}
}Claude Desktop may not resolve PATH — use the full path to the binary:
{
"mcpServers": {
"gemini-notebook-mcp": {
"command": "/full/path/to/notebooklm-mcp"
}
}
}Find your path with: which notebooklm-mcp
Tool | Config Location |
Claude Desktop (macOS current/3P) |
|
Claude Desktop (macOS legacy) |
|
Claude Desktop (Windows) |
|
Claude Desktop (Windows 3P) |
|
Claude Desktop (Linux) |
|
Claude Desktop (Linux 3P) |
|
GitHub Copilot |
|
📚 Full configuration details: MCP Guide — Server options, environment variables, HTTP transport, and context window management. For Claude web/mobile and public deployment, read Remote MCP Deployment first.
What You Can Do
Simply chat with your AI tool (Claude Code, Cursor, Gemini CLI) using natural language. Here are some examples:
Research & Discovery
"List all my Gemini Notebook notebooks"
"Create a new notebook called 'AI Strategy Research'"
"Start web research on 'enterprise AI ROI metrics' and show me what sources it finds"
"Do a deep research on 'cloud marketplace trends' and import the top 10 sources"
"Search my Google Drive for documents about 'product roadmap' and create a notebook"
Adding Content
"Add this URL to my notebook: https://example.com/article"
"Add this YouTube video about Kubernetes to the notebook"
"Add my meeting notes as a text source to this notebook"
"Import this Google Doc into my research notebook"
AI-Powered Analysis
"What are the key findings in this notebook?"
"Summarize the main arguments across all these sources"
"What does this source say about security best practices?"
"Get an AI summary of what this notebook is about"
"Configure the chat to use a learning guide style with longer responses"
(All queries sent from CLI or MCP automatically persist in your Gemini Notebook web UI chat history!)
Content Generation
"Create an audio podcast overview of this notebook in deep dive format"
"Generate a video explainer with classic visual style"
"Make a short vertical video overview of the key idea"
"Make a briefing doc from these sources"
"Create flashcards for studying, medium difficulty"
"Generate an infographic in landscape orientation with professional style"
"Build a mind map from my research sources"
"Create a slide deck presentation from this notebook"
Smart Management
"Check which Google Drive sources are out of date and sync them"
"Show me all the sources in this notebook with their freshness status"
"Delete this source from the notebook"
"Check the status of my audio overview generation"
"Check this specific artifact without listing every Studio item"
"List only the generated videos in this notebook"
Sharing & Collaboration
"Show me the sharing settings for this notebook"
"Make this notebook public so anyone with the link can view it"
"Disable public access to this notebook"
"Invite user@example.com as an editor to this notebook"
"Add a viewer to my research notebook"
Pro tip: After creating studio content (audio, video, reports, etc.), poll the status to get download URLs when generation completes.
Authentication Lifecycle
Component | Duration | Refresh |
Cookies | ~2-4 weeks | Auto-refresh via headless browser (if profile saved) |
CSRF Token | ~minutes | Auto-refreshed on every request failure |
Session ID | Per MCP session | Auto-extracted on MCP start |
v0.1.9+: The server now automatically handles token expiration:
Refreshes CSRF tokens immediately when expired
Reloads cookies from disk if updated externally
Runs headless browser auth if profile has saved login
You can also call refresh_auth() to explicitly reload tokens.
If automatic refresh fails (Google login fully expired), run nlm login again.
For suspected browser-bound auth replay failures, run nlm doctor auth-replay.
If the cdp_in_page probe succeeds while normal replay fails, see
Experimental browser-backed RPC transport.
Troubleshooting
uv tool upgrade Not Installing Latest Version
Symptoms:
Running
uv tool upgrade notebooklm-mcp-cliinstalls an older version (e.g., 0.1.5 instead of 0.1.9)uv cache cleandoesn't fix the issue
Why this happens: uv tool upgrade respects version constraints from your original installation. If you initially installed an older version or with a constraint, upgrade stays within those bounds by design.
Fix — Force reinstall:
uv tool install --force notebooklm-mcp-cliThis bypasses any cached constraints and installs the absolute latest version from PyPI.
Verify:
uv tool list | grep notebooklm
# Should show: notebooklm-mcp-cli v0.1.9 (or latest)Limitations
Rate limits: Free tier has ~50 queries/day
No official support: API may change without notice
Cookie expiration: Need to re-extract cookies every few weeks
Contributing
See CLAUDE.md for detailed API documentation and how to add new features.
Vibe Coding Alert
Full transparency: this project was built by a non-developer using AI coding assistants. If you're an experienced Python developer, you might look at this codebase and wince. That's okay.
The goal here was to scratch an itch - programmatic access to Gemini Notebook - and learn along the way. The code works, but it's likely missing patterns, optimizations, or elegance that only years of experience can provide.
This is where you come in. If you see something that makes you cringe, please consider contributing rather than just closing the tab. This is open source specifically because human expertise is irreplaceable. Whether it's refactoring, better error handling, type hints, or architectural guidance - PRs and issues are welcome.
Think of it as a chance to mentor an AI-assisted developer through code review. We all benefit when experienced developers share their knowledge.
Credits
Special thanks to:
Le Anh Tuan (@latuannetnam) for contributing the HTTP transport, debug logging system, and performance optimizations.
David Szabo-Pele (@davidszp) for the
source_get_contenttool and Linux auth fixes.saitrogen (@saitrogen) for the research polling query fallback fix.
devnull03 (@devnull03) for multi-browser CDP authentication support (Arc, Brave, Edge, Chromium, Vivaldi, Opera).
VooDisss (@VooDisss) for multi-browser authentication improvements.
codepiano (@codepiano) for the configurable DevTools timeout for the auth CLI.
Tony Hansmann (@997unix) for contributing the
nlm setupandnlm doctorcommands and CLI Guide documentation.Fabiana Furtado (@fabianafurtadoff) for batch operations, cross-notebook query, pipelines, and smart select/tagging (PR #90).
Amy-Ra-lph (@Amy-Ra-lph) for security hardening: TOCTOU-safe credential storage, sensitive cookie redaction from debug logs, and pinning all CI actions to full commit SHAs (PRs #205–207).
Kyle Brodeur (@kylebrodeur) for WSL2 authentication support with Windows Chrome integration (PR #138).
Robiton (@Robiton) for enterprise Gemini Notebook support via configurable base URL (PR #114).
pjeby (@pjeby) for connection pooling and fast startup improvements (PR #54).
beausea (@beausea) for making the interface language configurable via the
NOTEBOOKLM_HLenvironment variable (PR #59).JumpLao (@JumpLao) for extended audio, video, and image format support (PR #82).
cbruyndoncx (@cbruyndoncx) for including
cited_textpassages in query output (PR #81).zxyasfas (@zxyasfas) for cited-only research import (PR #188).
Serdar Akın (@SERDAR-AKIN) for the multi-probe
AuthHealthCheckerthat fixes false"stale"reports for semi-stale cookies (PR #219).
Star History
License
Available Tools
48 toolsbatchA
Perform batch operations across multiple notebooks.
Actions:
query: Query multiple notebooks with the same question
add_source: Add the same source URL to multiple notebooks
create: Create multiple notebooks at once
delete: Delete multiple notebooks (IRREVERSIBLE, requires confirm=True)
studio: Generate studio artifacts across multiple notebooks
Args: action: Operation to perform (query, add_source, create, delete, studio) query: Question to ask (for action=query) source_url: URL to add (for action=add_source) titles: Comma-separated notebook titles (for action=create) artifact_type: Artifact type (for action=studio): audio, video, report, etc. notebook_names: Comma-separated notebook names or IDs tags: Comma-separated tags to select notebooks all: Apply to ALL notebooks confirm: Must be True for delete action
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | ||
| tags | No | ||
| query | No | ||
| action | Yes | ||
| titles | No | ||
| confirm | No | ||
| source_url | No | ||
| artifact_type | No | audio | |
| notebook_names | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It highlights irreversibility of delete and necessity of confirm=True, but does not disclose other side effects (e.g., partial failures, rate limits, or permission requirements). Adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with purpose and action list, followed by parameter details. It is structured but could be slightly tighter (e.g., remove redundant phrasing). However, it is efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, multiple actions) and presence of an output schema, the description covers actions and parameter dependencies. However, it lacks details on error handling, partial failures, or atomicity, which are important for batch operations. The output schema may fill some gaps, but completeness is still moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds essential meaning: it maps parameters to actions (e.g., query for action=query, source_url for add_source) and specifies formats like 'Comma-separated notebook titles'. Some ambiguity remains (e.g., whether notebook_names accepts IDs or names), but overall significantly compensates for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Perform batch operations across multiple notebooks' and enumerates specific actions (query, add_source, create, delete, studio). This distinguishes it from single-notebook operations like notebook_query or cross_notebook_query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use each action, e.g., query requires a 'query' parameter, delete requires 'confirm=True' and is irreversible. It lacks explicit when-not or alternatives, but the action listing implies appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_configureB
Configure notebook chat settings.
Args: notebook_id: Notebook UUID goal: default|learning_guide|custom custom_prompt: Required when goal=custom (max 10000 chars) response_length: default|longer|shorter
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | default | |
| notebook_id | Yes | ||
| custom_prompt | No | ||
| response_length | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It does not disclose whether the tool is destructive/reversible, what it does to existing settings, or any authentication requirements. Only parameter constraints are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: purpose stated first, then parameter list in clean format. No superfluous text. Every sentence is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While parameters are described, the overall effect of configuration (e.g., what goal or response_length actually do) is missing. Return value or success indication not mentioned. Annotations are absent. An output schema exists but description does not reference it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds valuable meaning beyond schema: explains custom_prompt is required when goal=custom with a max length constraint. This conditional logic is not in the schema. However, 0% schema coverage means more explanation would be beneficial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Configure notebook chat settings' with a specific verb and resource. It distinguishes from sibling tools like chat_list and chat_get, which list/get chats, by indicating configuration. However, it could be more explicit about modifying existing settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use chat_configure vs alternative tools. It does not specify prerequisites or conditions (e.g., notebook existence, permissions) or exclude scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_exportA
Export a chat transcript to Markdown or JSON.
Args: notebook_id: Notebook ID or title alias conversation_id: Optional conversation ID format: Export format: 'md' or 'json' (default: 'md')
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | md | |
| notebook_id | Yes | ||
| conversation_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It does not disclose side effects, prerequisites, or whether the operation is read-only. The action 'export' is implied non-destructive but not confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a single sentence followed by a parameter list. It is front-loaded with the main action, though the parameter list could be integrated more smoothly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return values need not be explained. However, the description lacks information on output handling, limitations, or prerequisites (e.g., ownership). It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite the schema description coverage being 0%, the description provides meaningful descriptions for all parameters: 'Notebook ID or title alias', 'Optional conversation ID', and 'Export format: md or json (default: md)', adding context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Export a chat transcript' to specific formats 'Markdown or JSON'. This distinguishes it from sibling tools like chat_list (list) and chat_get (get single).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The purpose is clear but lacks context for selection among similar export methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_getA
Get full transcript of a specific chat session.
Args: notebook_id: Notebook ID or title alias conversation_id: Optional conversation ID (defaults to latest active session)
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| conversation_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description should disclose behavioral traits. It explains that conversation_id defaults to the latest active session, but does not mention error handling, rate limits, or side effects. The read-only nature is inferred but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with three lines, front-loading the purpose. Every word adds value, with no redundant or vague statements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with 2 parameters and an output schema (which documents return values), the description covers the core usage and default behavior. It lacks details on error scenarios (e.g., invalid notebook_id), but the existing information is sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description fully compensates by explaining both parameters: notebook_id as 'Notebook ID or title alias' and conversation_id as 'Optional conversation ID (defaults to latest active session)'. This adds critical meaning beyond the schema's type-only definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full transcript of a specific chat session,' providing a specific verb and resource. It distinguishes itself from sibling tools like 'chat_list' (lists sessions) and 'chat_export' (exports transcripts), so the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or comparisons with similar tools like 'chat_list' or 'chat_export', leaving the AI agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_listA
List chat sessions for a notebook.
Args: notebook_id: Notebook ID or title alias limit: Max chat sessions to return (default: 20)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks behavioral details such as error handling, pagination, or side effects. For a simple list operation, it is minimally adequate but would benefit from more disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with no extraneous text. Purpose comes first, followed by parameter details in a clear format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (list with two parameters) and presence of an output schema, the description is largely complete. Missing details like ordering or error responses are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by explaining notebook_id as ID or title alias and noting limit's default. Since schema has no descriptions, this is helpful and covers all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists chat sessions for a notebook using a specific verb and resource. This distinguishes it from siblings like chat_get (single chat) or notebook_query (different purpose).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like chat_get. No context about prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_createB
Create a new collection.
Args: name: Name of the collection notebook_ids: List of notebook UUIDs to include in the collection (optional)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| notebook_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since annotations are absent, the description carries the full burden of behavioral disclosure. It conveys only that the tool 'creates' a collection, but does not disclose what happens on duplicate names, whether notebook_ids are validated against existing notebooks, what side effects occur, or any error behavior. There is nothing misleading, but there is no behavioral nuance beyond the verb itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a single, plain purpose sentence followed by a short Args block. No filler, from any word, and the structure is appropriately minimal for a simple two-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a simple two-parameter create operation and that an output schema provides return information, the definition is minimally viable. However, it lacks broader context such as what a 'collection' is semantically, how it relates to notebooks, or any potential pitfalls (e.g., constraints on the name or behavior with invalid notebook_ids).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema itself has 0% description coverage, so the parameter semantics are introduced to compensate. The Args section does add value for notebook_ids — it explains the array contains UUIDs and that they are 'to include in the collection' — but the name parameter is glossed only as 'Name of the collection,' which nearly restates the property name and adds little semantic content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence 'Create a new collection.' states a specific verb (create) and a specific resource (collection). This clearly distinguishes it from sibling tools like collection_list, collection_edit, collection_delete, and collection_set_emoji, which each have a different operation on the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus other collection or notebook tools. It does not mention common use cases, preconditions (e.g., whether notebooks must exist before being referenced), or situations where a sibling tool such as collection_edit should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_deleteA
Delete a collection permanently. Notebooks inside the collection are NOT deleted.
Args: collection_id: UUID of the collection confirm: Must be True after user approval
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| collection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the permanent nature of deletion and the non-deletion of notebooks, which is important behavioral context. However, it doesn't mention whether the operation is reversible, what happens to associated artifacts, or any permission requirements. The confirm parameter is disclosed but its purpose (safety guard) is implied rather than explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the key fact (permanent deletion, notebooks not deleted). The Args section is clear and minimal. No wasted words, though the format could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown) and only 2 parameters, so the description covers the essential semantics. However, for a destructive operation with no annotations, it could benefit from more context about what happens to the collection's contents, whether the operation can be undone, and any side effects. The confirm parameter's role is stated but not elaborated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains collection_id as a UUID and confirm as a boolean that must be True after user approval. This adds meaning beyond the bare schema types, though it could be more detailed about the confirm parameter's role in preventing accidental deletion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a collection permanently and explicitly notes that notebooks inside are NOT deleted. This distinguishes it from sibling tools like notebook_delete and source_delete, though it doesn't name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for deleting a collection, and the confirm parameter requirement is stated. However, it doesn't explicitly contrast with alternatives like notebook_delete or provide conditions for when to use this vs. other deletion tools. The 'confirm must be True after user approval' gives some usage context but no explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_editA
Edit an existing collection's name and/or list of notebooks.
Args: collection_id: UUID of the collection name: New name for the collection (optional) notebook_ids: New complete list of notebook UUIDs to include (optional)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| notebook_ids | No | ||
| collection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that notebook_ids is a 'New complete list' to include, implying replacement rather than incremental updates, and marks fields as optional. But it does not mention permissions, failure behavior, or the effect of omitting notebooks from the list beyond the 'complete list' wording.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence followed by a compact argument list. Every line carries useful information with no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All three parameters are described, an output schema exists, and the core edit/replacement semantics are communicated, making the tool callable. It is slightly incomplete in lacking explicit alternative-tool routing and more thorough side-effect disclosure, but these are minor given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate, and it does. The Args section explains collection_id as a UUID, name as the new optional name, and notebook_ids as the complete replacement list, adding real semantic meaning beyond types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Edit') and identifies the resource ('existing collection') plus the exact mutable aspects: name and list of notebooks. This clearly distinguishes it from collection_create, collection_delete, collection_list, and collection_set_emoji.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it: when an existing collection's name or notebook membership needs changing. However, it never explicitly contrasts it with siblings like collection_set_emoji or notebook_rename, nor gives any exclusions or conditions for choosing an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_listB
List all native collections.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that the tool lists collections, with no mention of read-only semantics, authentication requirements, pagination, ordering, or the meaning of 'native'. This is a significant gap for a tool with zero annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is slightly under-specified, particularly the ambiguous 'native' qualifier, but it remains appropriately brief for a no-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple (no parameters, output schema exists), the description is mostly adequate, but the undefined term 'native' and lack of behavioral details such as pagination or ordering leave room for agent confusion. A sentence clarifying 'native' or noting the output shape would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is already fully described (100% coverage), so the baseline of 4 applies. The description correctly adds no parameter information because there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('all native collections'), making the tool's purpose immediately clear. Among siblings, there is no other collection-list tool, so the name and description together distinguish it from collection_create, collection_edit, collection_delete, and collection_set_emoji.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, nor any exclusion criteria. The qualifier 'native' vaguely implies a distinction from non-native collections, but this is not explained, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_set_emojiB
Set or clear the emoji marker on a collection.
Args: collection_id: UUID of the collection emoji: Emoji character (use empty string "" to clear)
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | Yes | ||
| collection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It does disclose a key nuance: passing an empty string clears the emoji rather than setting it. However, it does not mention permissions, overwrite behavior, or any side effects beyond the mutation, leaving some uncertainty for a tool with no annotation safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is minimal and well structured: one purpose sentence followed by two arg lines. There is no filler, and the important clearing behavior is included efficiently without bloating the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and an output schema exists, so return values need not be described. But the description lacks when-to-use routing relative to collection_edit, error/precondition notes, and any behavioral context beyond the bare mutation. It is adequate for invocation but has gaps an agent might stumble on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no property descriptions, so the description must compensate. It does so for both parameters: collection_id is explained as the UUID of the collection, and emoji is described with the special empty-string clearing behavior. This is sufficient for a simple two-parameter tool, though it omits format constraints like maximum emoji length or valid emoji characters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Set or clear the emoji marker on a collection.' This is clear and unambiguous. However, it does not explicitly differentiate itself from sibling collection_edit, which could also modify collection fields, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose this tool over collection_edit or other collection tools. It states what the tool does but not the conditions, exclusions, or alternatives that should drive selection. No sibling is named or recommended.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_notebook_queryA
Query multiple notebooks and get aggregated answers with per-notebook citations.
Specify notebooks by name, by tags, or use all=True for all notebooks.
Args: query: Question to ask across notebooks notebook_names: Comma-separated notebook names or IDs (e.g. "AI Research, Dev Tools") tags: Comma-separated tags to select notebooks (e.g. "ai,mcp") all: Query ALL notebooks (use with caution — rate limits apply)
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | ||
| tags | No | ||
| query | Yes | ||
| notebook_names | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It mentions rate limits for all=True and describes the output format. However, it does not explicitly state that the tool is read-only or disclose other behavioral traits like error handling or synchronization.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a brief summary followed by an Args list. Every sentence adds value, with no fluff. It is well-structured and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is an output schema (unseen), the description covers the main aspects: query purpose, parameter options, and output format. It lacks details on error handling, authentication, or concurrency, but is sufficient for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully document parameters. It describes all four parameters with examples (e.g., 'AI Research, Dev Tools') and their roles. It adds meaning beyond the schema types, though it omits explicit mention of defaults for notebook_names and tags.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'query', resource 'multiple notebooks', and output 'aggregated answers with per-notebook citations'. This distinguishes it from sibling 'notebook_query' which likely queries a single notebook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to specify notebooks (by name, tags, or all=True) and includes a caution for all=True about rate limits. However, it does not explicitly state when to use this tool versus alternatives like notebook_query, though it is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_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.
Args: notebook_id: Notebook UUID (omit when all_notebooks=True) output_dir: Base directory for the per-notebook folders, relative to the download directory (default: the download directory itself). Paths outside it are refused; see download_artifact. artifact_types: Restrict to these types, e.g. ["video", "slide_deck", "mind_map", "report"]. Default: all types. output_format: For quiz/flashcards only: json|markdown|html slide_deck_format: For slide decks only: pdf (default) or pptx all_notebooks: Sweep every notebook in the account instead of one skip_existing: Skip artifacts whose target file already exists — makes repeated runs incremental
Returns: dict with status, output_dir, and per-artifact items (single notebook) or per-notebook outcomes (sweep), plus downloaded/failed counts
Example: download_all_artifacts(notebook_id="abc123", output_dir="exports") download_all_artifacts(all_notebooks=True, output_dir="exports", skip_existing=True)
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No | . | |
| notebook_id | No | ||
| all_notebooks | No | ||
| output_format | No | json | |
| skip_existing | No | ||
| artifact_types | No | ||
| slide_deck_format | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full behavioral burden and does well by disclosing partial-failure handling, skipped in-progress/failed artifacts, failure isolation across items, and path restrictions. It does not explicitly state whether existing files are overwritten when skip_existing=False, which is a relevant side-effect for a file-writing tool, so it loses a point.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately detailed for a 7-parameter tool, with a clear opening summary, an Args section that mirrors the schema, a Returns summary, and two examples. Every sentence contributes useful information, and the structure is easy to scan. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, multi-mode download tool with no annotations, the description covers all important aspects: scope selection, directory creation, extension mapping, failure behavior, parameter constraints, and return shape. The examples clarify realistic usage. There is no meaningful gap an agent would need to guess about before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description fully documents all 7 parameters with meaningful details: notebook_id vs all_notebooks, output_dir semantics, artifact_types, output_format scoping, slide_deck_format selection, and skip_existing behavior. It even includes examples of default file extensions. This fully compensates for the absent schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Download all completed studio artifacts of one notebook — or every notebook.' It clearly distinguishes from the singular sibling download_artifact by emphasizing the bulk scope, and explains the output structure. This leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear when-to-use context: use a single notebook_id or sweep with all_notebooks, restrict artifact types, and use skip_existing for incremental runs. It even references download_artifact for path-refusal details. It could more explicitly say 'for downloading a single artifact, use download_artifact instead,' but the contrast with the sibling is otherwise clear from the name and scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_artifactA
Download any NotebookLM artifact to a file.
Unified download tool replacing 9 separate download tools. Supports all artifact types: audio, video, report, mind_map, slide_deck, infographic, data_table, file, quiz, flashcards.
Args:
notebook_id: Notebook UUID
artifact_type: Type of artifact to download:
- audio: Audio Overview (MP4/MP3)
- video: Video Overview (MP4)
- report: Report (Markdown)
- mind_map: Mind Map (JSON)
- slide_deck: Slide Deck (PDF or PPTX)
- infographic: Infographic (PNG)
- data_table: Data Table (CSV)
- data_table_xlsx: Data Table Excel export (XLSX)
- file: Generic Studio file export
- quiz: Quiz (json|markdown|html)
- flashcards: Flashcards (json|markdown|html)
output_path: Where to save the file, relative to the download
directory (e.g. "podcast.m4a" or "My Notebook/report.md").
Downloads are confined to that directory; a path outside it is
refused. It defaults to ~/Downloads/gemini-notebook and the
operator can move it with NOTEBOOKLM_DOWNLOAD_DIR. The saved
absolute path comes back in the result.
artifact_id: Optional specific artifact ID (uses latest if not provided)
output_format: For quiz/flashcards only: json|markdown|html (default: json)
slide_deck_format: For slide_deck only: pdf (default) or pptx
wait: Poll while the artifact download is still propagating
wait_timeout: Maximum seconds to wait when wait is enabled
poll_interval: Seconds between readiness checks
Returns: dict with status and saved file path
Example: download_artifact(notebook_id="abc123", artifact_type="audio", output_path="podcast.m4a") download_artifact(notebook_id="abc123", artifact_type="quiz", output_path="quiz.html", output_format="html") download_artifact(notebook_id="abc123", artifact_type="slide_deck", output_path="slides.pptx", slide_deck_format="pptx")
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| artifact_id | No | ||
| notebook_id | Yes | ||
| output_path | Yes | ||
| wait_timeout | No | ||
| artifact_type | Yes | ||
| output_format | No | json | |
| poll_interval | No | ||
| slide_deck_format | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full burden and delivers: downloads are sandboxed to the download directory and outside paths are refused; default location (~/Downloads/gemini-notebook) and NOTEBOOKLM_DOWNLOAD_DIR override are disclosed; polling semantics (wait, wait_timeout, poll_interval) are explained; and artifact_id falls back to 'latest' when omitted. This is far more than the schema or annotations reveal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence purpose is front-loaded, followed by a positioning statement and a compact type list. The Args block is organized per-parameter with defaults and formats, and the Returns line plus three varied examples close it out. For a 9-parameter tool with no schema descriptions, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Every one of the 9 parameters is documented with defaults, allowed values, and behavioral notes; the path-confinement constraint and polling knobs are covered; and since an output schema exists, the brief 'Returns: dict with status and saved file path' suffices. Nothing an agent needs to invoke this complex tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does comprehensively. artifact_type maps each value to its format (audio→MP4/MP3, report→Markdown, etc.), output_path explains relative pathing and confinement, output_format and slide_deck_format get explicit value lists and defaults, and every optional parameter's behavior is described. Three usage examples ground the semantics concretely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'Download any NotebookLM artifact to a file.' The next sentence, 'Unified download tool replacing 9 separate download tools,' explicitly positions it against the per-type download tools an agent might otherwise reach for. The full artifact-type list removes any ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Unified download tool replacing 9 separate download tools. Supports all artifact types' gives clear context that this is the single entry point for downloading any one artifact. However, it does not explicitly say when to prefer the sibling download_all_artifacts or export_artifact, so the when-not-to-use guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_artifactA
Export a NotebookLM artifact to Google Docs or Sheets.
Supports:
Data Tables → Google Sheets
Reports (Briefing Doc, Study Guide, Blog Post) → Google Docs
Args: notebook_id: Notebook UUID artifact_id: Artifact UUID to export export_type: "docs" or "sheets" title: Title for exported document (optional)
Returns: URL to the created Google Doc/Sheet
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| artifact_id | Yes | ||
| export_type | Yes | ||
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description states it exports and returns a URL, but does not disclose permissions, side effects (e.g., whether it creates a new document in user's drive), or any destructive behavior. It is a read-like operation but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, uses bullet points for supported conversions, and front-loads the core action. Every sentence adds value; no unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (so return value is covered), the description covers all parameters, supported conversions, and the return URL. It could mention error conditions or prerequisites, but overall complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It lists three required parameters and one optional, and explains the mapping of export_type to target format. However, it does not specify valid values for export_type as an enum or describe format constraints for IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it exports an artifact to Google Docs or Sheets, with specific mappings (Data Tables → Sheets, Reports → Docs). It uses a specific verb+resource and distinguishes from sibling tools like download_artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (export to Google Docs/Sheets) but does not explicitly tell when not to use or compare to alternatives like download_artifact. No exclusion criteria or context-driven guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
labelA
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
Args: notebook_id: Notebook UUID action: Operation to perform: - auto: AI auto-labels all sources into thematic categories - list: List current labels (triggers AI if none exist) - reorganize: Force AI re-categorization (requires confirm=True unless unlabeled_only=True) - create: Create a new empty label (requires name) - rename: Rename a label (requires label_id, name) - set_emoji: Set or clear emoji on a label (requires label_id, emoji) - move_source: Assign a source to a label (requires label_id, source_id) - delete: Delete label(s) permanently (requires label_id or label_ids, confirm=True) label_id: Label UUID (required for rename, set_emoji, move_source, delete) label_ids: List of label UUIDs for batch delete (alternative to label_id) name: Label display name (required for create and rename) emoji: Emoji character for set_emoji (e.g. "📊"), or "" to clear source_id: Source UUID to assign (required for move_source) unlabeled_only: For reorganize: if True, only label sources not yet in any label. If False (default), replaces ALL existing labels from scratch (requires confirm=True). confirm: Must be True for delete action and for reorganize with unlabeled_only=False
Returns: Action-specific response with status
Example: label(notebook_id="abc", action="auto") label(notebook_id="abc", action="list") label(notebook_id="abc", action="reorganize", confirm=True) label(notebook_id="abc", action="reorganize", unlabeled_only=True) label(notebook_id="abc", action="create", name="Research", emoji="📚") label(notebook_id="abc", action="rename", label_id="xyz", name="Better Name") label(notebook_id="abc", action="set_emoji", label_id="xyz", emoji="🎯") label(notebook_id="abc", action="move_source", label_id="xyz", source_id="src-id") label(notebook_id="abc", action="delete", label_id="xyz", confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| emoji | No | ||
| action | Yes | ||
| confirm | No | ||
| label_id | No | ||
| label_ids | No | ||
| source_id | No | ||
| notebook_id | Yes | ||
| unlabeled_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, detailing behaviors like destructive actions ('delete permanently'), required confirmations, and preconditions (5+ sources). However, it omits some aspects like error behavior or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, enumerated actions, parameter details, and multiple examples. Every sentence adds value, and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, no annotations, and an output schema, the description covers all actions, parameter requirements, preconditions, and examples, making it complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds rich meaning for all parameters, listing valid actions, required fields per action, and examples, fully compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Manage source labels in a notebook' and emphasizes it's a 'Unified tool for all label operations,' distinguishing it from siblings like 'tag' by covering all label-related actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed usage for each action (e.g., 'requires 5+ sources for auto-labeling', 'confirm=True needed for delete'), but does not explicitly mention when to use alternative sibling tools or exclude them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
noteA
Manage notes in a notebook. Unified tool for all note operations.
Supports: create, list, update, delete
Args: notebook_id: Notebook UUID action: Operation to perform: - create: Create a new note - list: List all notes in notebook - update: Update an existing note - delete: Delete a note permanently (requires confirm=True) note_id: Note UUID (required for update/delete) content: Note content (required for create, optional for update) title: Note title (optional for create/update) confirm: Must be True for delete action
Returns: Action-specific response with status
Example: note(notebook_id="abc", action="list") note(notebook_id="abc", action="create", content="My note", title="Title") note(notebook_id="abc", action="update", note_id="xyz", content="Updated") note(notebook_id="abc", action="delete", note_id="xyz", confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| action | Yes | ||
| confirm | No | ||
| content | No | ||
| note_id | No | ||
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that delete is permanent and requires confirm=True, and describes parameter dependencies per action. It does not cover rate limits or auth, but is otherwise transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with bullet points, and includes four clear examples. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, 4 actions) and the presence of an output schema, the description provides all necessary context: parameter details, action-specific requirements, and concrete examples. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description thoroughly explains each parameter, including required conditions, defaults, and valid actions. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a unified tool for all note operations, listing create, list, update, delete. It distinguishes from sibling tools by focusing specifically on notes within a notebook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly covers all note operations and provides examples, but does not explicitly state when not to use it or mention sibling tools for comparison. However, it is clear enough for an agent to understand its scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_createB
Create a new notebook.
Args: title: Optional title for the notebook
| Name | Required | Description | Default |
|---|---|---|---|
| title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states the creation action without disclosing side effects, auth requirements, or constraints such as duplicate title handling. Since no annotations are provided, the description carries full burden but adds minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with no wasted words, front-loading the action effectively. It includes an args section in a clear format, though it could be slightly more informative without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with one optional parameter and an output schema, the description is minimally adequate. However, it omits details about what constitutes a notebook (e.g., structure) and any prerequisites, leaving some gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description adds 'Optional title for the notebook,' which clarifies the parameter's optionality and role. This provides some added meaning beyond the schema's default value, though it lacks details like length limits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new notebook.' clearly states the action (create) and the resource (notebook). It distinguishes the tool from siblings like notebook_list, notebook_get, and notebook_delete, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as notebook_import or notebook_clone. There are no when-to-use or when-not-to-use indicators, leaving the agent to infer usage without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_deleteA
Delete notebook permanently. IRREVERSIBLE. Requires confirm=True.
Args: notebook_id: Notebook UUID confirm: Must be True after user approval
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description explicitly declares 'IRREVERSIBLE' and notes the confirm parameter requirement, fully disclosing the destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and efficient, but could be slightly more structured (e.g., separate sections). However, it is clear and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete tool, the description covers all essential aspects: action, irreversibility, required parameter confirmation. Output schema exists, so return value explanation is not needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds crucial meaning: notebook_id is a UUID, confirm must be True after user approval. This compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') and resource ('notebook'), clearly indicating permanent deletion. It distinguishes from sibling tools like notebook_rename and notebook_query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the requirement for confirm=True and user approval. While it does not explicitly compare to alternatives, the action is unambiguous and guidelines are implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_describeA
Get AI-generated notebook summary with suggested topics.
Args: notebook_id: Notebook UUID
Returns: summary (markdown), suggested_topics list
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the return format (summary in markdown, suggested topics list), but does not mention that the summary is AI-generated (which may imply latency, cost, or content considerations). No side effects or restrictions are noted, leaving behavioral traits partially unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the purpose in the first sentence. The inclusion of an args block is slightly redundant but acceptable. Every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown), the description could omit return details but chooses to include them, which is helpful. However, it does not explain what 'suggested topics' means or any prerequisites for the notebook (e.g., must have content). The completeness is adequate for a simple summary tool but could be richer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description adds 'Notebook UUID' to the notebook_id parameter, clarifying its expected format beyond the schema's type string. This adds meaningful semantics for a single required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns an AI-generated notebook summary with suggested topics. This distinguishes it from siblings like notebook_get (which likely returns raw metadata) and notebook_query (which runs queries). The verb-resource combination is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for obtaining a summary, but it does not explicitly state when to use this instead of other notebook tools (e.g., notebook_get for raw data, notebook_query for specific queries). No exclusions or alternatives are mentioned, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_getC
Get notebook details with sources.
Args: notebook_id: Notebook UUID
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description solely communicates a read operation ('get'). It does not disclose any behavioral traits such as data scope, permission requirements, or side effects. The term 'sources' is vague and not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences covering the action and single parameter. No unnecessary words. However, it could be expanded slightly for clarity without violating conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description doesn't need return value details, but it fails to explain what 'details' and 'sources' mean. The tool has many siblings (e.g., notebook_describe, notebook_list), and the description provides no context for selection, making it incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only repeats the parameter name and type ('Notebook UUID'), adding minimal semantic value beyond the schema. At 0% schema description coverage, the description should elaborate on the parameter's purpose or format, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get notebook details with sources', specifying the verb and resource. However, it does not explicitly distinguish from sibling tools like notebook_describe or notebook_list, so there is room for improvement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., notebook_list for summaries, notebook_describe for different details). The description lacks any usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_listB
List all notebooks.
Args: max_results: Maximum number of notebooks to return (default: 100)
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description lacks details on pagination, ordering, or filtering behavior beyond max_results. It does not disclose whether the list is complete or limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and to the point, with two sentences. But the parameter description could be integrated more naturally. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of output schema, the description is adequate but lacks details on return format or pagination behavior. It could mention that notebooks are returned as a list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains max_results parameter with default value, adding meaning beyond schema. However, it could specify whether results are sorted or if there is a maximum limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all notebooks,' which is a specific verb+resource. It distinguishes from sibling tools like notebook_get, notebook_create, and notebook_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like search or filter tools. The description does not mention excluded scenarios or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_queryA
Ask AI about EXISTING sources already in notebook. NOT for finding new sources.
Use research_start instead for: deep research, web search, find new sources, Drive search.
Args: notebook_id: Notebook UUID query: Question to ask source_ids: Source IDs to query (default: all) conversation_id: For follow-up questions timeout: Wall-clock query budget in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0; source-heavy notebooks may need 180+) new_conversation: Start a fresh conversation when conversation_id is omitted
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| timeout | No | ||
| source_ids | No | ||
| notebook_id | Yes | ||
| conversation_id | No | ||
| new_conversation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the disclosure burden. It discloses the restriction to existing sources, the timeout budget behavior, and conversation handling. It does not mention authentication or side effects, but since the tool appears read-only and the description conveys that, it is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the primary purpose and a clear exclusion, then a compact Args list. It wastes no words while covering all parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters incl. optional ones, the description provides defaults, environment fallback, and usage notes. Output schema exists (per context) so return values need not be described. Comprehensive enough for an agent to operate without further lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema shows 6 params and 0% description coverage, but the description explains all six parameters: notebook_id, query, source_ids (default all), conversation_id (follow-up), timeout (default from env or 120, 180+ recommendation), and new_conversation. That adds significant meaning beyond the raw types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with 'Ask AI about EXISTING sources already in notebook' – a specific verb and resource. It immediately excludes the alternative use case ('NOT for finding new sources') and names the sibling tool (research_start) that handles that. This leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (ask AI about existing notebook sources) and when not to (finding new sources), and points to the alternative tool. Clear contextual cues for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_query_startA
Start a notebook query asynchronously for 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.
Args: notebook_id: Notebook UUID query: Question to ask source_ids: Source IDs to query (default: all) conversation_id: For follow-up questions timeout: Wall-clock query budget in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0; source-heavy notebooks may need 180+) new_conversation: Start a fresh conversation when conversation_id is omitted
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| timeout | No | ||
| source_ids | No | ||
| notebook_id | Yes | ||
| conversation_id | No | ||
| new_conversation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the asynchronous nature, immediate return of a query_id, the need to poll status, and the timeout budget. It could additionally mention failure modes or whether starting a query mutates conversation state, but the core behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and usage, followed by a compact workflow line and an Args block. It is slightly repetitive around the 120-second/180-second timeout guidance, but every sentence contributes useful information and the structure is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter asynchronous tool with no annotations, the description covers the essential workflow, timeout behavior, and parameter meanings. An output schema exists, so the return shape need not be repeated. It stops short of explaining status semantics or error/timeout outcomes, but the explicit polling workflow mitigates that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: all six parameters are named with semantic explanations and defaults, such as 'source_ids: Source IDs to query (default: all)' and 'timeout: Wall-clock query budget in seconds'. Minor ambiguities remain around new_conversation and conversation_id interaction, but the description adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Start a notebook query asynchronously.' It clearly distinguishes itself from notebook_query by framing this as the variant for source-heavy notebooks or long questions, so an agent can identify the tool's role among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent when to choose this tool: 'Use this instead of notebook_query when the response may take longer than the default 120-second budget.' It also provides the follow-up workflow, 'notebook_query_start -> poll notebook_query_status until completed', which is direct, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_query_statusA
Check the status of an async notebook query started with notebook_query_start.
Returns the query result when completed, or current status if still in progress. Poll this tool every few seconds until status is 'completed' or 'error'.
Args: query_id: The query ID returned by notebook_query_start
| Name | Required | Description | Default |
|---|---|---|---|
| query_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool returns query result or current status, and mentions polling behavior. However, it lacks details on error handling, side effects, or rate limits. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear purpose statement, behavioral note, polling instruction, and args section. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but indicated), the description adequately covers the tool's behavior. It explains return values (result or status) and polling usage. No gaps for a simple polling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (query_id) with 0% schema description coverage. The description adds meaning by stating 'The query ID returned by notebook_query_start', linking it to the start tool. This compensates for the schema's lack of description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check the status of an async notebook query started with notebook_query_start', specifying the resource (async notebook query) and action (check status). It distinguishes from sibling tools like notebook_query_start which initiates the query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit polling guidance: 'Poll this tool every few seconds until status is 'completed' or 'error'.' This indicates when and how to use it after starting a query. No explicit alternatives or when-not, but the advice is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_renameC
Rename a notebook.
Args: notebook_id: Notebook UUID new_title: New title
| Name | Required | Description | Default |
|---|---|---|---|
| new_title | Yes | ||
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks behavioral details such as side effects, permissions needed, or error conditions. For a mutation tool, more transparency is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise with a clear one-sentence purpose and a list of parameters. Could be slightly more structured but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (not shown), the description does not explain return values. Lacks behavioral context and usage guidelines, making it incomplete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description lists parameter names and types in Args, adding minimal value beyond the schema itself. No further semantic detail about constraints or formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Rename a notebook,' using a specific verb and resource. It distinguishes from sibling tools like notebook_delete and notebook_query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipelineA
Manage and execute multi-step notebook pipelines.
Actions:
run: Execute a pipeline on a notebook
list: List all available pipelines (builtin and user-defined)
Args: action: Operation to perform (run, list) notebook_id: Target notebook UUID (required for action=run) pipeline_name: Pipeline name (required for action=run, e.g. "ingest-and-podcast") input_url: URL variable for pipelines that need it (replaces $INPUT_URL)
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| input_url | No | ||
| notebook_id | No | ||
| pipeline_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects (e.g., whether 'run' modifies data), authentication requirements, or rate limits. The term 'execute' implies mutation but lacks explicit safety warnings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a single-sentence overview, bulleted actions, and a detailed args list. Every sentence adds value without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers actions and parameters adequately, it lacks behavioral context (e.g., synchronous vs async, error handling) and does not leverage the existing output schema to explain return values. Given no annotations, more completeness is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining all four parameters: action (with values 'run' and 'list'), notebook_id (required for run), pipeline_name (with example 'ingest-and-podcast'), and input_url (replaces $INPUT_URL). This adds essential context beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages and executes multi-step notebook pipelines, with explicit actions 'run' and 'list' to further clarify scope. This distinguishes it from sibling tools like notebook_query or chat_list that handle different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists actions but provides no guidance on when to use this tool vs alternatives like notebook_query or source_list_drive. It does not specify prerequisites or when not to use it, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_authA
Reload auth tokens from disk or run headless re-authentication.
Call this after running nlm login to pick up new tokens,
or to attempt automatic re-authentication if Chrome profile has saved login.
Returns status indicating if tokens were refreshed successfully.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool reloads from disk and attempts re-authentication, and returns a status. However, it lacks details on side effects, failure modes, or what happens during re-authentication. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four sentences: first states action, second and third provide usage context, fourth describes return. No unnecessary words, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and only an output schema, the description covers purpose, use cases, and return value comprehensively. For a simple auth refresh tool, it provides sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters, and schema description coverage is 100%. The description does not need to add parameter info. Baseline score of 4 applies as no parameter details are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Reload auth tokens from disk or run headless re-authentication') and specifies distinct use cases (after `nlm login` or automatic re-authentication). It differentiates itself from sibling tools like `save_auth_tokens` by focusing on reloading and re-authentication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call the tool: 'Call this after running `nlm login` to pick up new tokens, or to attempt automatic re-authentication if Chrome profile has saved login.' Provides clear context, though no explicit when-not-to-use or alternative comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_importA
Import discovered sources into notebook.
Call after research_status shows status="completed".
Args: notebook_id: Notebook UUID task_id: Research task ID source_indices: Source indices to import (default: all) timeout: Import timeout in seconds (default: 300, increase for large notebooks) cited_only: Import only sources cited by the research report. Overrides source_indices when enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| timeout | No | ||
| cited_only | No | ||
| notebook_id | Yes | ||
| source_indices | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses meaningful runtime behavior: source_indices defaults to all, timeout defaults to 300 and should be increased for large notebooks, and cited_only overrides source_indices. It does not describe side effects, error conditions, or whether imports are idempotent, but the covered behavior is genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the primary purpose, and then structured with a precondition and a compact Args block. Every sentence adds relevant workflow or parameter information, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 5-parameter tool with no schema descriptions and no annotations, the description is complete for invocation: it supplies the required workflow state, all argument meanings, the default behavior, and customization guidance. The presence of an output schema means return value details do not need to be duplicated here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 0% parameter descriptions, so the description must fully compensate. It does: every parameter is explained, including notebook_id, task_id, source_indices semantics, timeout guidance, and cited_only override behavior. This makes the entire parameter surface safely invocable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Import discovered sources into notebook.' This clearly differentiates it from siblings like research_status, source_add, and notebook_* tools by tying it to the research workflow and notebook destination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit precondition: 'Call after research_status shows status=completed.' It also explains when cited_only should be used. It does not name an alternative tool or exclude other cases, so the guidance is clear but not as strong as an explicit when-not/alternative comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_startA
Deep research / fast research: Search web or Google Drive to FIND NEW sources.
Use this for: "deep research on X", "find sources about Y", "search web for Z", "search Drive". Workflow: research_start -> poll research_status -> research_import.
Args: query: What to search for (e.g. "quantum computing advances") source: web|drive (where to search) mode: fast (~30s, ~10 sources) | deep (~5min, ~40 sources, web only) notebook_id: Existing notebook (creates new if not provided) title: Title for new notebook
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | fast | |
| query | Yes | ||
| title | No | ||
| source | No | web | |
| notebook_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses mode duration and source counts (fast ~30s, ~10 sources; deep ~5min, ~40 sources, web only), and explains that notebook_id creates a new notebook if omitted. It does not mention authentication, rate limits, or whether the operation is read-only, but the creation aspect is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary line, usage examples, workflow, and parameter list. It is front-loaded with purpose. The Args section is clear but could be slightly tighter; however, it avoids unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but known), the description does not need to explain return values. It covers inputs, workflow, approximate outcomes, and the polling/import sequence, providing a complete picture for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain parameters. It does so in the Args section, providing meanings for query, source, mode (with durations and source counts), notebook_id (optional, creates new), and title. This adds substantial value beyond the schema's default values and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search web or Google Drive to FIND NEW sources.' It provides example use cases ('deep research on X', 'find sources about Y') and distinguishes from siblings by outlining the workflow (research_start -> research_status -> research_import).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists explicit usage scenarios ('Use this for...') and the workflow implies when to use this tool versus research_status or research_import. However, it does not explicitly state when not to use this tool or provide alternative tools beyond the workflow chain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_statusA
Poll research progress. Blocks until complete or timeout.
Args: notebook_id: Notebook UUID poll_interval: Seconds between polls (default: 30) max_wait: Max seconds to wait (default: 900, 0=single poll) compact: If True (default), truncate report and limit sources shown to save tokens. Use compact=False to get full details. task_id: Optional Task ID to poll for a specific research task. query: Optional query text for fallback matching when task_id changes (deep research). Contributed by @saitrogen (PR #15). auto_import: If True, automatically import sources when research completes. If False (default), returns next_action hint to call research_import manually.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| compact | No | ||
| task_id | No | ||
| max_wait | No | ||
| auto_import | No | ||
| notebook_id | Yes | ||
| poll_interval | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses blocking behavior, polling intervals, timeout, compact mode, and the auto_import side effect. It is transparent about key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then lists parameters clearly. It is not overly long, though the contributor credit is unnecessary but minor. Well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 params) and no annotations, the description covers all necessary details: blocking, polling, compact, auto_import interaction, and fallback matching. An output schema exists, so return value detail is not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains all 7 parameters (notebook_id, poll_interval, max_wait, compact, task_id, query, auto_import) with clear meanings and defaults, fully compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Poll research progress. Blocks until complete or timeout.' This is a specific verb+resource combination that distinguishes it from siblings like research_start, research_import, and notebook_query_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While no explicit when-to-use/alternatives are given, the description implies usage for synchronous waiting and provides context for optional parameters like task_id and query, helping the agent understand its role in the research workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_auth_tokensA
Save NotebookLM cookies (FALLBACK method - try nlm login first!).
IMPORTANT FOR AI ASSISTANTS:
First, run
nlm loginvia Bash/terminal (automated, preferred)Only use this tool if the automated CLI fails
Args: cookies: Cookie header from Chrome DevTools (only needed if CLI fails) csrf_token: Deprecated - auto-extracted session_id: Deprecated - auto-extracted request_body: Optional - contains CSRF if extracting manually request_url: Optional - contains session ID if extracting manually
| Name | Required | Description | Default |
|---|---|---|---|
| cookies | Yes | ||
| csrf_token | No | ||
| session_id | No | ||
| request_url | No | ||
| request_body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses fallback nature, deprecation, and auto-extraction but does not detail side effects (e.g., file writing, overwriting) or permissions needed, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and front-loaded purpose. Some redundancy (e.g., 'IMPORTANT FOR AI ASSISTANTS') but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations are absent, the description covers all parameters, usage logic, and alternatives, making it complete for a fallback authentication tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds detailed meaning: cookies source, deprecation, auto-extraction, and manual extraction conditions. This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it saves NotebookLM cookies as a fallback method. It distinguishes from the preferred 'nlm login' command, making the purpose and context explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to try 'nlm login' first and only use this tool if CLI fails. Also notes deprecated parameters, guiding proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoA
Get version, auth status, and conservative MCP capability visibility.
AI assistants: If update_available is True, inform the user that a new version is available and suggest updating with the provided command.
auth_status is the result of an AuthHealthChecker probe. The checker
runs a multi-probe strategy (homepage fetch + API fallback) with
30-second TTL caching and mtime-based bypass on auth-file changes.
The reported value may therefore be up to 30 seconds old, and an
external nlm login is picked up within one check cycle without
waiting for the TTL to expire.
auth_status meanings:
"configured" — homepage (or API fallback) check passed; credentials are good. Cached credentials may be reported as configured for up to 30 seconds.
"not_configured" — no credentials are stored (first-time setup).
"stale" — credentials are known-bad (expired or past the 7-day heuristic). Operations will fail; ask the user to run
nlm loginto refresh."unverified" — the check could not be completed (network error, timeout, non-200 response). Cached credentials may still work for actual API calls, so do not assume the user needs to re-auth.
"error" — unexpected exception inside the check itself.
Returns: dict with version info: - version: Current installed version - latest_version: Latest version on PyPI (or None if check failed) - update_available: True if a newer version is available - auth_status: configured | stale | unverified | not_configured | error - update_command: Command to run to update - mcp_capabilities: Built-in tool groups visible in this server process - provider_capabilities: Explicitly unprobed provider/account capabilities
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so excellently. It discloses the 30-second TTL caching, mtime-based bypass, up-to-30-second staleness, semantics for each auth_status value, and the meaning of latest_version being None. This is far more transparent than typical descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-structured, with a clear opening sentence and distinct sections for auth_status and return fields. Every sentence adds necessary detail, though some trimming of the auth_status explanation could make it tighter without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description leaves little ambiguous: it documents all return fields, explains each auth_status value with failure modes, covers caching behavior, and gives user-facing instructions. The output schema exists but the description goes beyond it, making the tool fully understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts no parameters, so there are no parameter semantics to clarify. The description appropriately focuses on the return payload and status meanings. The baseline of 4 applies because no parameter documentation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get version, auth status, and conservative MCP capability visibility.' It uses a specific verb and resource, and is distinct from sibling tools like refresh_auth or save_auth_tokens, which handle authentication actions rather than status reporting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides actionable guidance for AI assistants, such as what to do when update_available is True, and thoroughly explains auth_status interpretations. It does not explicitly contrast with sibling tools or state when to prefer this tool, but the context clues are strong enough for a status-only tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_addA
Add a source to a notebook. Unified tool for all source types.
Supports: url, text, drive, file
Args: notebook_id: Notebook UUID source_type: Type of source to add: - url: Web page or YouTube URL - text: Pasted text content - drive: Google Drive document - file: Local file upload. 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. url: URL to add (for source_type=url) urls: List of URLs to add in bulk (for source_type=url, alternative to url) text: Text content to add (for source_type=text) title: Display title (for text sources) file_path: Local file path on the machine running the MCP server (for source_type=file). A path on a different client/agent host is not accessible to the server. document_id: Google Drive document ID (for source_type=drive) doc_type: Drive doc type: doc|slides|sheets|pdf (for source_type=drive) wait: If True, wait for source processing to complete before returning wait_timeout: Max seconds to wait if wait=True (default 120)
Example: source_add(notebook_id="abc", source_type="url", url="https://example.com") source_add(notebook_id="abc", source_type="url", urls=["https://a.com", "https://b.com"]) source_add(notebook_id="abc", source_type="url", url="https://example.com", wait=True) source_add(notebook_id="abc", source_type="file", file_path="/path/to/doc.pdf", wait=True) source_add(notebook_id="abc", source_type="file", file_path="/path/to/screenshot.png", wait=True)
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| text | No | ||
| urls | No | ||
| wait | No | ||
| title | No | ||
| doc_type | No | doc | |
| file_path | No | ||
| document_id | No | ||
| notebook_id | Yes | ||
| source_type | Yes | ||
| wait_timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and meets it admirably. It discloses that admission does not guarantee provider processing success, notes that file paths are relative to the MCP server machine, explains the impact of the 'wait' parameter, and mentions that image sources may feed video generation pipelines. These details go beyond simple parameter lists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with a synopsis, parameter list, and examples, making it easy to scan. However, the omission of the 43 file extensions (or moving them to an external reference) would improve conciseness without losing critical operational detail. The structure itself is strong, but the length borders on excessive for an MCP tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity (11 parameters, 4 source types, async behavior), the description is remarkably complete. It covers edge cases like bulk uploads, server-side file paths, wait timeouts, and provider processing caveats. Since an output schema exists in the structured data, the omission of return value details is acceptable, and the description fully supports the agent in a wide range of usage scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate, which it does. Every parameter is documented with its purpose, allowed values (like source_type options), and behavioral implications (e.g., url vs urls mutual exclusivity, file_path accessibility, wait_timeout default). The examples further illustrate parameter usage in context, making the schema far more usable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Add a source to a notebook. Unified tool for all source types,' which uses a specific verb and resource while clearly stating its role as the consolidated tool. This differentiates it from specialized sibling tools like source_delete, source_rename, and source_describe, which are all listed alongside it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context for each source type (url, text, drive, file) and includes multiple examples demonstrating single vs bulk URLs, wait behavior, and file usage. It implicitly excludes non-add operations, though it does not explicitly name alternative tools for other operations. The guidance that 'a path on a different client/agent host is not accessible' is a valuable caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_deleteA
Delete source(s) permanently. IRREVERSIBLE. Requires confirm=True.
Args: source_id: Source UUID to delete (single) source_ids: List of source UUIDs to delete (bulk, alternative to source_id) confirm: Must be True after user approval
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| source_id | No | ||
| source_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full responsibility. It explicitly discloses that deletion is permanent and irreversible, and that confirm must be set after user approval, covering the most critical side effects. It does not mention potential cascading effects or partial failures in bulk operations, but it adequately warns about the destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core action and warnings, and includes a clear args section. No fluff or redundancy; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (3 optional params, destructive operation) and the presence of an output schema, the description is reasonably complete. It covers the action, irreversibility, confirmation, and parameter meanings. It could mention success/failure semantics or atomicity for bulk operations, but these are not essential for a straightforward delete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by explaining source_id as a single UUID and source_ids as a list for bulk, including that they are alternatives. It also clarifies confirm's role. There is a slight inconsistency: schema allows source_ids to be a string or array, while description says 'List', which could confuse agents expecting only arrays. Overall, it significantly improves schema comprehension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete source(s) permanently' with a specific verb and resource, and adds the critical nuance of irreversibility. It distinguishes from sibling tools like source_add or source_rename by indicating a destructive action. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides usage context by stating 'Requires confirm=True' and 'Must be True after user approval', which guides when it's safe to invoke. However, it does not explicitly mention alternatives or when-not-to-use scenarios, and while it's obvious this is for deletion, it lacks formal comparison to other source management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_describeA
Get AI-generated source summary with keyword chips.
Args: source_id: Source UUID
Returns: summary (markdown with bold keywords), keywords list
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral clarity. It discloses that the summary is AI-generated and returns markdown with bold keywords, indicating a read-only, non-destructive operation. However, it does not explicitly state it is safe or mention any required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with a one-line purpose followed by labeled Args and Returns sections. Every sentence is informative, and the structure is front-loaded, allowing quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description adequately covers the key aspects: what it does, its input, and its return type. It could mention that it's read-only, but that is inferred from 'Get'. Overall, it is sufficient for a single-purpose describe tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds semantic value to the single parameter 'source_id' by explaining it is a 'Source UUID', which goes beyond the schema's mere 'type: string'. Since schema coverage is 0%, this context is essential and well-provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get AI-generated source summary with keyword chips', specifying the verb 'Get' and the resource 'source summary'. This distinguishes it from sibling tools like 'source_add' or 'source_delete', which are for adding or deleting sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing a source summary, but it does not explicitly state when to use or avoid this tool compared to alternatives. It provides no exclusions or alternative tool suggestions, relying on the tool name for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_get_contentA
Get raw text content of a source (no AI processing).
Returns the original indexed text from PDFs, web pages, pasted text, or YouTube transcripts. Much faster than notebook_query for content export.
Args:
source_id: Source UUID
wait: Poll until indexed content is available
wait_timeout: Maximum seconds to wait when wait is enabled
poll_interval: Seconds between readiness checks
Returns: content (str), title (str), source_type (str), char_count (int)
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| source_id | Yes | ||
| wait_timeout | No | ||
| poll_interval | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that it returns raw indexed text, the wait/polling behavior, and the returned fields. However, it does not mention potential errors (e.g., source not found) or other edge cases, so it's not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, leading with the main purpose, then explains returns and provides a flat Args list. Every sentence adds value with no unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action, parameter meaning, return values, and usage context. Given the tool's moderate complexity and lack of annotations, this is sufficient for an agent to select and correctly invoke the tool. The output schema (though not shown) is complemented by the Returns section.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining each parameter: source_id as UUID, wait as polling activation, wait_timeout as max seconds, and poll_interval as check frequency. It also documents return fields, making parameter semantics clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: 'Get raw text content of a source (no AI processing).' It specifies the resource (source) and the action (get content), and distinguishes itself from notebook_query by noting it's faster for content export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it ('for content export') and contrasts it with an alternative ('Much faster than notebook_query'). It also clarifies that no AI processing is involved, helping the agent choose between this and other query tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_list_driveA
List sources with types and Drive freshness status.
Use before source_sync_drive to identify stale sources.
Args: notebook_id: Notebook UUID skip_freshness: If True, skip per-source freshness checks for faster listing
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| skip_freshness | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Describes the listing nature and skip_freshness parameter effect. Implies read-only (no mutation). Could explicitly state it's a read operation, but sufficient for a list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus parameter list. No unnecessary words. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description need not detail return values. Covers purpose, usage, and parameter meaning adequately. Could elaborate on 'freshness status' but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. Explains skip_freshness effectively ('skip per-source freshness checks for faster listing'). Description for notebook_id is minimal ('Notebook UUID'), repeating type but adding no context. Partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists sources with types and Drive freshness status, and explicitly links to source_sync_drive as a precursor. Differentiates from sibling tools by specifying its role in identifying stale sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage: 'Use before source_sync_drive to identify stale sources.' This tells when to use. Does not mention when not to use, but the context and sibling tool list imply it's for listing only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_renameB
Rename a source in a notebook.
Args: notebook_id: Notebook UUID containing the source source_id: Source UUID to rename new_title: New display title for the source
| Name | Required | Description | Default |
|---|---|---|---|
| new_title | Yes | ||
| source_id | Yes | ||
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must disclose behavior. It states 'rename' (mutation) but does not mention side effects, permissions, reversibility, or error handling. The existence of an output schema is acknowledged but not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single sentence stating the purpose followed by a structured parameter list. It is front-loaded with the main action, but the parameter list is slightly redundant with the schema, though it adds context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple rename tool, the description covers purpose and parameters minimally but misses behavioral context (idempotency, failure modes, return type) and prerequisites (e.g., existence of notebook/source). The output schema exists but is not leveraged to describe the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description adds value by naming parameters and giving brief explanations (e.g., 'Notebook UUID containing the source'). However, it lacks details on constraints (e.g., title length limits, UUID format) and does not explain the meaning beyond what is obvious from the names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Rename' and the resource 'source in a notebook', distinguishing it from sibling tools like source_add, source_delete, and source_describe. It specifies the context and action concisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., source_add for adding, source_delete for removing). No prerequisites or exclusion conditions are mentioned, leaving the agent to infer usage without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_sync_driveA
Sync Drive sources with latest content. Requires confirm=True.
Call source_list_drive first to identify stale sources.
Args: source_ids: Source UUIDs to sync confirm: Must be True after user approval
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| source_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses an important behavioral requirement: 'Requires confirm=True' and clarifies that it must be set after user approval, implying the operation has side effects. It also hints at the sync behavior via 'latest content' and the prerequisite workflow, but could be more explicit about what synchronizing does (e.g., overwrite local data or pull from Drive).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It leads with the purpose, then the requirement, a prerequisite, and an Args list. Every sentence earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only 2 parameters, one required, and an output schema, the description is fairly complete. It covers purpose, prerequisites, parameter meanings, and a safety requirement. The only minor gap is lack of explicit clarification on what happens during sync (e.g., whether it is incremental or overwriting), but the output schema likely covers return values, so the description is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The Args section adds meaning: 'source_ids: Source UUIDs to sync' and 'confirm: Must be True after user approval.' This goes beyond the raw schema types, explaining what each parameter is for and the constraint on confirm, though it could provide more detail on edge cases or formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Sync Drive sources with latest content.' This is a specific verb ('sync') and resource ('Drive sources'), distinguishing it from sibling tools like 'source_list_drive' (which lists sources) and 'source_delete' (which deletes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete usage guideline: 'Call source_list_drive first to identify stale sources.' This implies the tool should be used after listing and identifies a prerequisite. It could be stronger if it explicitly stated when not to use it or named an alternative, but it provides clear workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_createA
Create any NotebookLM studio artifact. Unified creation tool.
Supports: audio, video, infographic, slide_deck, report, flashcards, quiz, data_table, mind_map
Args: notebook_id: Notebook UUID artifact_type: Type of artifact to create: - audio: Audio Overview (podcast) - video: Video Overview - infographic: Visual infographic - slide_deck: Presentation slides (PDF) - report: Text report (Briefing Doc, Study Guide, etc.) - flashcards: Study flashcards - quiz: Multiple choice quiz - data_table: Structured data table - mind_map: Visual mind map source_ids: Source IDs to use (default: all sources) confirm: Must be True after user approval
Type-specific options:
- audio: audio_format (deep_dive|brief|critique|debate), audio_length (short|default|long)
- video: video_format (explainer|brief|cinematic|short), visual_style (auto_select|custom|classic|whiteboard|kawaii|anime|watercolor|retro_print|heritage|paper_craft; not for cinematic/short), video_style_prompt
- infographic: orientation (landscape|portrait|square), detail_level (concise|standard|detailed), infographic_style (auto_select|sketch_note|professional|bento_grid|editorial|instructional|bricks|clay|anime|kawaii|scientific)
- slide_deck: slide_format (detailed_deck|presenter_slides), slide_length (short|default)
- report: report_format (Briefing Doc|Study Guide|Blog Post|Create Your Own), custom_prompt
- flashcards: difficulty (easy|medium|hard)
- quiz: question_count (int), difficulty (easy|medium|hard)
- data_table: description (required)
- mind_map: title
Common options:
- language: BCP-47 code (en, es, fr, de, ja). Defaults to NOTEBOOKLM_HL env var or 'en'
- focus_prompt: Optional focus textExample: studio_create(notebook_id="abc", artifact_type="audio", confirm=True) studio_create(notebook_id="abc", artifact_type="quiz", question_count=5, confirm=True)
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Mind Map | |
| confirm | No | ||
| language | No | ||
| difficulty | No | medium | |
| source_ids | No | ||
| description | No | ||
| notebook_id | Yes | ||
| orientation | No | landscape | |
| audio_format | No | deep_dive | |
| audio_length | No | default | |
| detail_level | No | standard | |
| focus_prompt | No | ||
| slide_format | No | detailed_deck | |
| slide_length | No | default | |
| video_format | No | explainer | |
| visual_style | No | auto_select | |
| artifact_type | Yes | ||
| custom_prompt | No | ||
| report_format | No | Briefing Doc | |
| question_count | No | ||
| infographic_style | No | auto_select | |
| video_style_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that confirm must be True after user approval, that source_ids defaults to all sources, and that language falls back to NOTEBOOKLM_HL env var or 'en'. It also notes constraints like visual_style not allowed for cinematic/short. It does not mention async behavior or how to monitor progress, but for a creation tool it provides meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but justifiably so for a 22-parameter polymorphic tool. It is front-loaded with the main purpose, then uses headings, bullet lists, and examples to organize information efficiently. No unneeded sentences – every section adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All 22 schema parameters are accounted for in the description, and it adds enums, constraints, and defaults. The presence of an output schema means return-value documentation can be external. The description also includes practical examples, making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the sole source of parameter meaning. It explains every parameter, including artifact_type with nine enumerated values and type-specific sub-options (audio_format, video_format, orientation, etc.), which goes far beyond the schema's raw defaults and anyOf types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create any NotebookLM studio artifact' – a clear verb and resource. It then lists all supported artifact types (audio, video, infographic, etc.), making its scope explicit and distinguishing it from siblings like studio_delete and studio_revise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It is described as a 'Unified creation tool', which clearly signals when to use it for artifact creation. The examples demonstrate valid calls. However, it does not explicitly mention alternatives for revision (e.g., studio_revise) or when not to use this tool, leaving a slight gap in exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_deleteA
Delete studio artifact. IRREVERSIBLE. Requires confirm=True.
Args: notebook_id: Notebook UUID artifact_id: Artifact UUID (from studio_status) confirm: Must be True after user approval
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| artifact_id | Yes | ||
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses critical behavior: 'IRREVERSIBLE' and 'Requires confirm=True.' With no annotations, the description fully informs the agent about the destructive nature and confirmation requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: a brief header with warning, followed by a bulleted list of arguments. No superfluous text; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, parameters, and behavioral traits adequately. An output schema exists, so return values are not needed. Could mention prerequisites like user permissions, but overall complete for a delete tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides detailed explanations for each parameter: notebook_id is Notebook UUID, artifact_id is Artifact UUID (from studio_status), and confirm must be True after user approval.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Delete studio artifact' using a specific verb and resource. It distinguishes from siblings like notebook_delete and source_delete by specifying 'studio artifact.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance: it warns of irreversibility and requires confirm=True. It also references artifact_id from studio_status. However, it lacks explicit when-not-to-use or comparison with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_reviseA
Revise individual slides in an existing slide deck. Creates a NEW artifact.
Only slide decks support revision. The original artifact is not modified. Poll studio_status after calling to check when the new deck is ready.
Args: notebook_id: Notebook UUID artifact_id: UUID of the existing slide deck to revise (from studio_status) slide_instructions: List of revision instructions, each with: - slide: Slide number (1-based, slide 1 = first slide) - instruction: Text describing the desired change Example: [{"slide": 1, "instruction": "Make the title larger"}] confirm: Must be True after user approval
Example: studio_revise( notebook_id="abc", artifact_id="xyz", slide_instructions=[ {"slide": 1, "instruction": "Make the title larger"}, {"slide": 3, "instruction": "Remove the image"} ], confirm=True )
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| artifact_id | Yes | ||
| notebook_id | Yes | ||
| slide_instructions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals key behavioral traits: creates a new artifact (original unchanged), asynchronous (poll studio_status), requires confirmation (confirm=True). The existence of an output schema compensates for missing return details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with an Args section and example. Every sentence provides useful information without redundancy. It is appropriately front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to explain return values. It covers purpose, parameter details, usage flow (async polling, confirmation), and constraints (only slide decks). It is complete for a revision tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description explains each parameter thoroughly, especially slide_instructions with structure, examples, and the confirm parameter's semantics. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Revise individual slides') and the resource ('existing slide deck'). It distinguishes from siblings like studio_create and studio_status by emphasizing that it creates a new artifact and requires polling. The verb and resource are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: only slide decks support revision, and users should poll studio_status after calling. It does not explicitly state when not to use it, but the context and siblings imply it is the appropriate tool for revisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_statusA
Check studio content generation status and get URLs, or rename an artifact.
Args: notebook_id: Notebook UUID action: Action to perform: - status (default): List all artifacts with their status and URLs - rename: Rename an artifact (requires artifact_id and new_title) - list_types: List all supported artifact types with their options artifact_id: For status, return only this artifact. Required for action="rename". new_title: Required for action="rename" - the new title for the artifact include_details: Include prompts, source IDs, report content, and media details limit: Maximum artifacts to return for status (1-100, default 20) offset: Number of artifacts to skip for status pagination
Returns: Dictionary with status and results. For action="status": - status: "success" - artifacts: Lean page of artifacts, each containing: - artifact_id: UUID - title: Artifact title - type: audio, video, report, etc. - status: completed, in_progress, failed - created_at: Creation timestamp - error_reason: Failure guidance when status is failed With include_details=True, artifacts also include prompts, source IDs, report content, media URLs, and other rich fields. - summary: Counts of total, completed, in_progress - pagination: returned, offset, limit, and has_more
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| action | No | status | |
| offset | No | ||
| new_title | No | ||
| artifact_id | No | ||
| notebook_id | Yes | ||
| include_details | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description details behavior: status returns artifacts with statuses, rename modifies title, list_types shows supported types. It covers pagination and include_details impact. It does not mention auth or rate limits but is sufficient for safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-organized with bullet points and sections for actions, parameters, and return values. It is front-loaded with the main purpose and avoids redundancy. Minor improvements could trim some detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, 3 actions, pagination, return structure), the description is comprehensive. It documents the output dictionary with fields and details, compensating for the lack of an output schema. No gaps are apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by explaining each parameter's role, dependencies (e.g., artifact_id required for rename), defaults, and constraints (e.g., limit 1-100). It provides critical semantic meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Check studio content generation status and get URLs, or rename an artifact.' It uses specific verbs and resources, distinguishing from sibling tools like studio_create and studio_revise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description outlines three actions (status, rename, list_types) with clear conditions for each. It doesn't explicitly compare to siblings, but the actions are self-contained and context is implied via sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tagA
Manage notebook tags and find relevant notebooks by tag matching.
Actions:
add: Add tags to a notebook for smart selection
remove: Remove tags from a notebook
list: List all tagged notebooks with their tags
select: Find notebooks relevant to a query using tag matching
Args: action: Operation to perform (add, remove, list, select) notebook_id: Notebook UUID (required for add, remove) tags: Comma-separated tags (required for add, remove; e.g. "ai,research,llm") notebook_title: Optional display title (for add) query: Search query (required for select; e.g. "ai mcp" or "ai,mcp")
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| query | No | ||
| action | Yes | ||
| notebook_id | No | ||
| notebook_title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It outlines actions and required parameters but does not mention side effects (e.g., consequences of adding duplicate tags), idempotency, or authentication requirements, leaving gaps for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement followed by bullet lists for actions and parameters. It is mostly concise, though some parameter examples could be trimmed without loss of clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no annotations, and an output schema exists, the description covers input well but does not explain return values or pagination. It is adequate but leaves some behavioral context unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds full meaning for all parameters: action, notebook_id, tags (with comma-separated example), notebook_title, and query (with example). It specifies which parameters are required for which actions, significantly enhancing the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages notebook tags and finds relevant notebooks via tag matching. It lists specific actions (add, remove, list, select) and differentiates from siblings like notebook_query which are about querying content rather than tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via actions but does not explicitly guide when to use this tool versus alternatives like notebook_query or cross_notebook_query. It lacks when-not or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.9.14- Added
collection_create - Added
collection_delete - Added
collection_edit - Added
collection_list - Added
collection_set_emoji
7 tool updates
v0.9.12- Changed
notebook_query2 fields changed- added
Input schema / properties / new_conversationAdded value: +{ + "default": false, + "type": "boolean" +} - changed
Input schema / properties / source_ids / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
notebook_query_start2 fields changed- added
Input schema / properties / new_conversationAdded value: +{ + "default": false, + "type": "boolean" +} - changed
Input schema / properties / source_ids / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
research_import1 field changed- changed
Input schema / properties / source_indices / anyOfPrevious value: -[ - { - "items": { - "type": "integer" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
source_add1 field changed- changed
Input schema / properties / urls / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
source_delete1 field changed- changed
Input schema / properties / source_ids / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
source_sync_drive3 fields changed- added
Input schema / properties / source_ids / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / source_ids / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / source_ids / typeRemoved value: -"array"
- Changed
studio_create1 field changed- changed
Input schema / properties / source_ids / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
2 tool updates
v0.9.7- Changed
download_artifact3 fields changed- added
Input schema / properties / poll_intervalAdded value: +{ + "default": 5, + "type": "number" +} - added
Input schema / properties / waitAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / wait_timeoutAdded value: +{ + "default": 180, + "type": "number" +}
- Changed
source_get_content3 fields changed- added
Input schema / properties / poll_intervalAdded value: +{ + "default": 3, + "type": "number" +} - added
Input schema / properties / waitAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / wait_timeoutAdded value: +{ + "default": 120, + "type": "number" +}
15 tool updates
v0.9.5- Added
chat_configure - Added
download_all_artifacts - Added
export_artifact - Added
label - Added
notebook_create - Added
notebook_describe - Added
notebook_get - Added
notebook_list - Added
notebook_query_status - Added
refresh_auth - Added
research_start - Added
research_status - Added
server_info - Added
source_get_content - Added
source_sync_drive
18 tool updates
v0.9.1- Added
batch - Added
chat_list - Added
cross_notebook_query - Added
download_artifact - Removed
export_artifact - Added
note - Added
notebook_delete - Removed
notebook_get - Removed
notebook_list - Added
notebook_rename - Added
research_import - Removed
research_start - Removed
research_status - Added
source_add - Added
source_rename - Removed
source_sync_drive - Added
studio_create - Added
studio_status
24 tool updates
v0.9.1- Removed
batch - Added
chat_export - Added
chat_get - Added
export_artifact - Added
notebook_get - Added
notebook_query - Added
notebook_query_start - Removed
notebook_query_status - Added
notebook_share_batch - Added
notebook_share_invite - Added
notebook_share_public - Added
notebook_share_status - Added
pipeline - Added
research_start - Added
research_status - Added
save_auth_tokens - Removed
source_add - Added
source_delete - Added
source_describe - Added
source_list_drive - Added
source_sync_drive - Added
studio_delete - Added
studio_revise - Added
tag
6 tool updates
v0.8.9- Added
batch - Removed
notebook_get - Added
notebook_list - Added
notebook_query_status - Added
source_add - Removed
tag
37 tool updates
v0.8.9- Removed
batch - Removed
chat_configure - Removed
cross_notebook_query - Removed
download_artifact - Removed
export_artifact - Removed
label - Removed
note - Removed
notebook_create - Removed
notebook_delete - Removed
notebook_describe - Removed
notebook_list - Removed
notebook_query - Removed
notebook_query_start - Removed
notebook_query_status - Removed
notebook_rename - Removed
notebook_share_batch - Removed
notebook_share_invite - Removed
notebook_share_public - Removed
notebook_share_status - Removed
pipeline - Removed
refresh_auth - Removed
research_import - Removed
research_start - Removed
research_status - Removed
save_auth_tokens - Removed
server_info - Removed
source_add - Removed
source_delete - Removed
source_describe - Removed
source_get_content - Removed
source_list_drive - Removed
source_rename - Removed
source_sync_drive - Removed
studio_create - Removed
studio_delete - Removed
studio_revise - Removed
studio_status
37 tool updates
v0.7.7- Changed
batch9 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Operation to perform (query, add_source, create, delete, studio)" - removed
Input schema / properties / all / descriptionRemoved value: -"Apply to ALL notebooks" - removed
Input schema / properties / artifact_type / descriptionRemoved value: -"Artifact type (for action=studio): audio, video, report, etc." - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True for delete action" - removed
Input schema / properties / notebook_names / descriptionRemoved value: -"Comma-separated notebook names or IDs" - removed
Input schema / properties / query / descriptionRemoved value: -"Question to ask (for action=query)" - removed
Input schema / properties / source_url / descriptionRemoved value: -"URL to add (for action=add_source)" - removed
Input schema / properties / tags / descriptionRemoved value: -"Comma-separated tags to select notebooks" - removed
Input schema / properties / titles / descriptionRemoved value: -"Comma-separated notebook titles (for action=create)"
- Changed
chat_configure4 fields changed- removed
Input schema / properties / custom_prompt / descriptionRemoved value: -"Required when goal=custom (max 10000 chars)" - removed
Input schema / properties / goal / descriptionRemoved value: -"default|learning_guide|custom" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / response_length / descriptionRemoved value: -"default|longer|shorter"
- Changed
cross_notebook_query4 fields changed- removed
Input schema / properties / all / descriptionRemoved value: -"Query ALL notebooks (use with caution — rate limits apply)" - removed
Input schema / properties / notebook_names / descriptionRemoved value: -"Comma-separated notebook names or IDs (e.g. \"AI Research, Dev Tools\")" - removed
Input schema / properties / query / descriptionRemoved value: -"Question to ask across notebooks" - removed
Input schema / properties / tags / descriptionRemoved value: -"Comma-separated tags to select notebooks (e.g. \"ai,mcp\")"
- Changed
download_artifact6 fields changed- removed
Input schema / properties / artifact_id / descriptionRemoved value: -"Optional specific artifact ID (uses latest if not provided)" - removed
Input schema / properties / artifact_type / descriptionRemoved value: -"Type of artifact to download:\n- audio: Audio Overview (MP4/MP3)\n- video: Video Overview (MP4)\n- report: Report (Markdown)\n- mind_map: Mind Map (JSON)\n- slide_deck: Slide Deck (PDF or PPTX)\n- infographic: Infographic (PNG)\n- data_table: Data Table (CSV)\n- quiz: Quiz (json|markdown|html)\n- flashcards: Flashcards (json|markdown|html)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / output_format / descriptionRemoved value: -"For quiz/flashcards only: json|markdown|html (default: json)" - removed
Input schema / properties / output_path / descriptionRemoved value: -"Path to save the file" - removed
Input schema / properties / slide_deck_format / descriptionRemoved value: -"For slide_deck only: pdf (default) or pptx"
- Changed
export_artifact4 fields changed- removed
Input schema / properties / artifact_id / descriptionRemoved value: -"Artifact UUID to export" - removed
Input schema / properties / export_type / descriptionRemoved value: -"\"docs\" or \"sheets\"" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / title / descriptionRemoved value: -"Title for exported document (optional)"
- Changed
label9 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Operation to perform:\n- auto: AI auto-labels all sources into thematic categories\n- list: List current labels (triggers AI if none exist)\n- reorganize: Force AI re-categorization (requires confirm=True unless unlabeled_only=True)\n- create: Create a new empty label (requires name)\n- rename: Rename a label (requires label_id, name)\n- set_emoji: Set or clear emoji on a label (requires label_id, emoji)\n- move_source: Assign a source to a label (requires label_id, source_id)\n- delete: Delete label(s) permanently (requires label_id or label_ids, confirm=True)" - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True for delete action and for reorganize with unlabeled_only=False" - removed
Input schema / properties / emoji / descriptionRemoved value: -"Emoji character for set_emoji (e.g. \"📊\"), or \"\" to clear" - removed
Input schema / properties / label_id / descriptionRemoved value: -"Label UUID (required for rename, set_emoji, move_source, delete)" - removed
Input schema / properties / label_ids / descriptionRemoved value: -"List of label UUIDs for batch delete (alternative to label_id)" - removed
Input schema / properties / name / descriptionRemoved value: -"Label display name (required for create and rename)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / source_id / descriptionRemoved value: -"Source UUID to assign (required for move_source)" - removed
Input schema / properties / unlabeled_only / descriptionRemoved value: -"For reorganize: if True, only label sources not yet in any label.\nIf False (default), replaces ALL existing labels from scratch (requires confirm=True)."
- Changed
note6 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Operation to perform:\n- create: Create a new note\n- list: List all notes in notebook\n- update: Update an existing note\n- delete: Delete a note permanently (requires confirm=True)" - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True for delete action" - removed
Input schema / properties / content / descriptionRemoved value: -"Note content (required for create, optional for update)" - removed
Input schema / properties / note_id / descriptionRemoved value: -"Note UUID (required for update/delete)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / title / descriptionRemoved value: -"Note title (optional for create/update)"
- Changed
notebook_create1 field changed- removed
Input schema / properties / title / descriptionRemoved value: -"Optional title for the notebook"
- Changed
notebook_delete2 fields changed- removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
notebook_describe1 field changed- removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
notebook_get1 field changed- removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
notebook_list1 field changed- removed
Input schema / properties / max_results / descriptionRemoved value: -"Maximum number of notebooks to return (default: 100)"
- Changed
notebook_query5 fields changed- removed
Input schema / properties / conversation_id / descriptionRemoved value: -"For follow-up questions" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / query / descriptionRemoved value: -"Question to ask" - removed
Input schema / properties / source_ids / descriptionRemoved value: -"Source IDs to query (default: all)" - removed
Input schema / properties / timeout / descriptionRemoved value: -"Request timeout in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0)"
- Changed
notebook_query_start5 fields changed- removed
Input schema / properties / conversation_id / descriptionRemoved value: -"For follow-up questions" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / query / descriptionRemoved value: -"Question to ask" - removed
Input schema / properties / source_ids / descriptionRemoved value: -"Source IDs to query (default: all)" - removed
Input schema / properties / timeout / descriptionRemoved value: -"Request timeout in seconds (default: from env NOTEBOOKLM_QUERY_TIMEOUT or 120.0)"
- Changed
notebook_query_status1 field changed- removed
Input schema / properties / query_id / descriptionRemoved value: -"The query ID returned by notebook_query_start"
- Changed
notebook_rename2 fields changed- removed
Input schema / properties / new_title / descriptionRemoved value: -"New title" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
notebook_share_batch3 fields changed- removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / recipients / descriptionRemoved value: -"List of dicts, each with 'email' (str) and optional 'role' (str).\n Role defaults to 'viewer'. Example: [{\"email\": \"a@b.com\", \"role\": \"editor\"}]"
- Changed
notebook_share_invite3 fields changed- removed
Input schema / properties / email / descriptionRemoved value: -"Email address to invite" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / role / descriptionRemoved value: -"\"viewer\" or \"editor\" (default: viewer)"
- Changed
notebook_share_public2 fields changed- removed
Input schema / properties / is_public / descriptionRemoved value: -"True to enable public link, False to disable (default: True)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
notebook_share_status1 field changed- removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
pipeline4 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Operation to perform (run, list)" - removed
Input schema / properties / input_url / descriptionRemoved value: -"URL variable for pipelines that need it (replaces $INPUT_URL)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Target notebook UUID (required for action=run)" - removed
Input schema / properties / pipeline_name / descriptionRemoved value: -"Pipeline name (required for action=run, e.g. \"ingest-and-podcast\")"
- Changed
research_import5 fields changed- removed
Input schema / properties / cited_only / descriptionRemoved value: -"Import only sources cited by the research report.\nOverrides source_indices when enabled." - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / source_indices / descriptionRemoved value: -"Source indices to import (default: all)" - removed
Input schema / properties / task_id / descriptionRemoved value: -"Research task ID" - removed
Input schema / properties / timeout / descriptionRemoved value: -"Import timeout in seconds (default: 300, increase for large notebooks)"
- Changed
research_start5 fields changed- removed
Input schema / properties / mode / descriptionRemoved value: -"fast (~30s, ~10 sources) | deep (~5min, ~40 sources, web only)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Existing notebook (creates new if not provided)" - removed
Input schema / properties / query / descriptionRemoved value: -"What to search for (e.g. \"quantum computing advances\")" - removed
Input schema / properties / source / descriptionRemoved value: -"web|drive (where to search)" - removed
Input schema / properties / title / descriptionRemoved value: -"Title for new notebook"
- Changed
research_status8 fields changed- added
Input schema / properties / auto_importAdded value: +{ + "default": false, + "type": "boolean" +} - removed
Input schema / properties / compact / descriptionRemoved value: -"If True (default), truncate report and limit sources shown to save tokens.\n Use compact=False to get full details." - changed
Input schema / properties / max_wait / defaultPrevious value: -300New value: +900 - removed
Input schema / properties / max_wait / descriptionRemoved value: -"Max seconds to wait (default: 300, 0=single poll)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / poll_interval / descriptionRemoved value: -"Seconds between polls (default: 30)" - removed
Input schema / properties / query / descriptionRemoved value: -"Optional query text for fallback matching when task_id changes (deep research).\nContributed by @saitrogen (PR #15)." - removed
Input schema / properties / task_id / descriptionRemoved value: -"Optional Task ID to poll for a specific research task."
- Changed
save_auth_tokens5 fields changed- removed
Input schema / properties / cookies / descriptionRemoved value: -"Cookie header from Chrome DevTools (only needed if CLI fails)" - removed
Input schema / properties / csrf_token / descriptionRemoved value: -"Deprecated - auto-extracted" - removed
Input schema / properties / request_body / descriptionRemoved value: -"Optional - contains CSRF if extracting manually" - removed
Input schema / properties / request_url / descriptionRemoved value: -"Optional - contains session ID if extracting manually" - removed
Input schema / properties / session_id / descriptionRemoved value: -"Deprecated - auto-extracted"
- Changed
source_add11 fields changed- removed
Input schema / properties / doc_type / descriptionRemoved value: -"Drive doc type: doc|slides|sheets|pdf (for source_type=drive)" - removed
Input schema / properties / document_id / descriptionRemoved value: -"Google Drive document ID (for source_type=drive)" - removed
Input schema / properties / file_path / descriptionRemoved value: -"Local file path (for source_type=file)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / source_type / descriptionRemoved value: -"Type of source to add:\n- url: Web page or YouTube URL\n- text: Pasted text content\n- drive: Google Drive document\n- file: Local file upload. Supported extensions:\n PDF, TXT, MD, DOCX, CSV, EPUB, MP3, M4A, WAV, AAC, OGG,\n OPUS, MP4, JPG, JPEG, PNG, GIF, WEBP. Image-bearing\n sources (PDF / JPG / PNG / etc.) feed Studio video\n generation's visual-crop pipeline — charts, photos, and\n diagrams may be extracted as on-screen aids in Video\n Overviews." - removed
Input schema / properties / text / descriptionRemoved value: -"Text content to add (for source_type=text)" - removed
Input schema / properties / title / descriptionRemoved value: -"Display title (for text sources)" - removed
Input schema / properties / url / descriptionRemoved value: -"URL to add (for source_type=url)" - removed
Input schema / properties / urls / descriptionRemoved value: -"List of URLs to add in bulk (for source_type=url, alternative to url)" - removed
Input schema / properties / wait / descriptionRemoved value: -"If True, wait for source processing to complete before returning" - removed
Input schema / properties / wait_timeout / descriptionRemoved value: -"Max seconds to wait if wait=True (default 120)"
- Changed
source_delete3 fields changed- removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / source_id / descriptionRemoved value: -"Source UUID to delete (single)" - removed
Input schema / properties / source_ids / descriptionRemoved value: -"List of source UUIDs to delete (bulk, alternative to source_id)"
- Changed
source_describe1 field changed- removed
Input schema / properties / source_id / descriptionRemoved value: -"Source UUID"
- Changed
source_get_content1 field changed- removed
Input schema / properties / source_id / descriptionRemoved value: -"Source UUID"
- Changed
source_list_drive2 fields changed- removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - added
Input schema / properties / skip_freshnessAdded value: +{ + "default": false, + "type": "boolean" +}
- Changed
source_rename3 fields changed- removed
Input schema / properties / new_title / descriptionRemoved value: -"New display title for the source" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID containing the source" - removed
Input schema / properties / source_id / descriptionRemoved value: -"Source UUID to rename"
- Changed
source_sync_drive2 fields changed- removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / source_ids / descriptionRemoved value: -"Source UUIDs to sync"
- Changed
studio_create4 fields changed- removed
Input schema / properties / artifact_type / descriptionRemoved value: -"Type of artifact to create:\n- audio: Audio Overview (podcast)\n- video: Video Overview\n- infographic: Visual infographic\n- slide_deck: Presentation slides (PDF)\n- report: Text report (Briefing Doc, Study Guide, etc.)\n- flashcards: Study flashcards\n- quiz: Multiple choice quiz\n- data_table: Structured data table\n- mind_map: Visual mind map" - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / source_ids / descriptionRemoved value: -"Source IDs to use (default: all sources)"
- Changed
studio_delete3 fields changed- removed
Input schema / properties / artifact_id / descriptionRemoved value: -"Artifact UUID (from studio_status)" - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
studio_revise4 fields changed- removed
Input schema / properties / artifact_id / descriptionRemoved value: -"UUID of the existing slide deck to revise (from studio_status)" - removed
Input schema / properties / confirm / descriptionRemoved value: -"Must be True after user approval" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID" - removed
Input schema / properties / slide_instructions / descriptionRemoved value: -"List of revision instructions, each with:\n- slide: Slide number (1-based, slide 1 = first slide)\n- instruction: Text describing the desired change\nExample: [{\"slide\": 1, \"instruction\": \"Make the title larger\"}]"
- Changed
studio_status4 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Action to perform:\n- status (default): List all artifacts with their status and URLs\n- rename: Rename an artifact (requires artifact_id and new_title)\n- list_types: List all supported artifact types with their options" - removed
Input schema / properties / artifact_id / descriptionRemoved value: -"Required for action=\"rename\" - the artifact UUID to rename" - removed
Input schema / properties / new_title / descriptionRemoved value: -"Required for action=\"rename\" - the new title for the artifact" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID"
- Changed
tag5 fields changed- removed
Input schema / properties / action / descriptionRemoved value: -"Operation to perform (add, remove, list, select)" - removed
Input schema / properties / notebook_id / descriptionRemoved value: -"Notebook UUID (required for add, remove)" - removed
Input schema / properties / notebook_title / descriptionRemoved value: -"Optional display title (for add)" - removed
Input schema / properties / query / descriptionRemoved value: -"Search query (required for select; e.g. \"ai mcp\" or \"ai,mcp\")" - removed
Input schema / properties / tags / descriptionRemoved value: -"Comma-separated tags (required for add, remove; e.g. \"ai,research,llm\")"
39 tool updates
v0.6.13- First observed
batch - First observed
chat_configure - First observed
cross_notebook_query - First observed
download_artifact - First observed
export_artifact - First observed
label - First observed
note - First observed
notebook_create - First observed
notebook_delete - First observed
notebook_describe - First observed
notebook_get - First observed
notebook_list - First observed
notebook_query - First observed
notebook_query_start - First observed
notebook_query_status - First observed
notebook_rename - First observed
notebook_share_batch - First observed
notebook_share_invite - First observed
notebook_share_public - First observed
notebook_share_status - First observed
pipeline - First observed
refresh_auth - First observed
research_import - First observed
research_start - First observed
research_status - First observed
save_auth_tokens - First observed
server_info - First observed
source_add - First observed
source_delete - First observed
source_describe - First observed
source_get_content - First observed
source_list_drive - First observed
source_rename - First observed
source_sync_drive - First observed
studio_create - First observed
studio_delete - First observed
studio_revise - First observed
studio_status - First observed
tag
TDQS
Most tools are clearly separated by resource (notebook, source, studio, collection, research) and descriptions explicitly disambiguate tricky pairs like notebook_query vs research_start. However, the catch-all batch tool overlaps with notebook_query, source_add, notebook_create/delete, and studio_create; cross_notebook_query duplicates the batch query action; and label vs tag are easy to confuse despite operating on different entities.
The dominant noun_verb pattern (notebook_list, source_add, studio_create, collection_delete) is consistent across most resource groups, including the notebook_query_start/_status async pair. But verb-first exceptions (refresh_auth, save_auth_tokens, download_artifact, export_artifact) and five bare-verb umbrella tools (batch, label, note, pipeline, tag) break the pattern and create a mixed convention.
48 tools is well into the 'too many' range (25+) and close to the extreme threshold. The unified action-dispatching tools (label, note, tag, batch, download_artifact) help cap the count, but the surface still forces agents to navigate a large tool space with many near-duplicate query, status, and batch paths.
The surface covers the NotebookLM domain thoroughly: full CRUD for notebooks, collections, notes, and labels; complete studio lifecycle (create, status, revise, delete, download, export); research workflow (start, status, import); chat, sharing, and auth. Minor gaps: no generic 'list all sources' tool (only source_list_drive, though notebook_get returns sources) and no chat deletion or source-moving capability.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Google NotebookLM via natural language: create notebooks, add sources (PDF, URL, YouTube) and ask gr
Publish, update, list, and delete Markdown pages on Booklet directly from your AI assistant.
Create and manage documents, spreadsheets, and presentations from your AI assistant.
- KnowtisOAuthapp.knowtis
Create, search and manage Knowtis collaborative notes from AI assistants.
Related MCP Servers
- AlicenseAqualityNot gradedmaintenanceEnables interaction with Google's NotebookLM through natural language, allowing users to create and manage notebooks, add sources from URLs/YouTube/Google Drive, query AI for insights, generate audio podcasts and other studio content, and perform AI-powered research and analysis.323-
- AlicenseAqualityDmaintenanceEnables interaction with Google NotebookLM through natural language to create and manage notebooks, add sources from URLs/YouTube/Google Drive, perform AI-powered research and analysis, generate audio podcasts, videos, infographics, and slide decks from notebook content.32MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to programmatically access and control Google NotebookLM, supporting operations like notebook management, source addition, audio generation, and more via natural language.MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Google NotebookLM to create notebooks, add sources (PDF, URL, YouTube), and ask questions with citations.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jacob-bd/gemini-notebook-mcp-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server








