NotebookLM MCP
Provides tools to manage NotebookLM notebooks, ingest sources (URLs, YouTube, Google Drive, text), trigger deep research, and generate Audio Overviews, Briefing Docs, Infographics, Slide Decks, and Quizzes.
Allows ingesting Google Drive files as sources into NotebookLM notebooks.
Allows ingesting YouTube transcripts as sources into NotebookLM notebooks.
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 MCPDeep research on climate change impacts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π§ NotebookLM MCP Server
Bridge the Gap Between Google NotebookLM and Your AI Workspace
Stop jumping between browser tabs. NotebookLM MCP brings the full analytical power of Google NotebookLM directly into your local terminal, IDE, and AI assistants like Claude, Cursor, and VS Code.
Manage notebooks, ingest diverse sources, trigger deep research, and generate studio-quality contentβall via a single, standardized Model Context Protocol (MCP) interface.
New to MCP? The Model Context Protocol is a standard for connecting LLMs to external data sources and tools. This package speaks MCP over stdio β your AI client (Claude Desktop, Cursor, VS Code, etc.) spawns
notebooklm-mcp serveas a subprocess and the two communicate over JSON-RPC. The 27 tools below become callable functions in the model's tool list.
π₯ Key Capabilities
β‘ Seamless Authentication: Log in once with
notebooklm-mcp auth. Our automated CDP-based flow handles secure cookie extraction so you can focus on your data.π Resilient Connectivity: Built-in background session restoration. If your session expires, the server transparently reconnects without breaking your workflow.
π Universal Ingestion: Instantly add URLs, YouTube transcripts, Google Drive files, or raw text snippets to any notebook.
π΅οΈ Autonomous Research: Harness Google's Deep Research engine. Start a task, poll its progress, and import structured insights directly into your project.
π Creative Studio: Programmatically generate Audio Overviews (podcasts), Briefing Docs, Infographics, Slide Decks, and Quizzes from your sources.
Related MCP server: notebooklm-py-diet-mcp
π Quick Start
1. Installation
Run it instantly with npx:
npx -y @m4ykeldev/notebooklm-mcp serveOr install globally for better performance:
npm install -g @m4ykeldev/notebooklm-mcpDevelopers who want to hack on the source: this repo uses pnpm (pinned via
packageManagerinpackage.json). After cloning, runcorepack enable && pnpm install. See CONTRIBUTING.md on GitHub for the full dev / release flow.
2. The "One-Click" Login
Say goodbye to manual cookie hunting. Our smart auth flow does the heavy lifting for you.
notebooklm-mcp authA secure Chrome window will open. Simply log into your Google account, and we'll handle the rest. Your session is stored locally and securely.
Auth fallbacks if automated Chrome can't run:
notebooklm-mcp auth --manual # interactive copy/paste from your browser
notebooklm-mcp auth --file tokens.json # import a previously exported bundle
notebooklm-mcp auth --show-tokens # verify the cached sessionFor headless / CI environments, set NOTEBOOKLM_COOKIES (and optionally NOTEBOOKLM_CSRF_TOKEN, NOTEBOOKLM_SESSION_ID) instead of running the auth flow. Token resolution order: env var β ~/.notebooklm-mcp/auth.json β error.
π€ AI Assistant Integration
Pick your client below β every section shows the config file path per OS, a minimal copy-paste block, and the advanced variant with --query-timeout and NOTEBOOKLM_COOKIES env override.
Client | Config file | Format |
| JSON | |
| JSON / CLI | |
| TOML | |
in-code | Python | |
in-code | TypeScript | |
| JSON | |
| JSON | |
| JSON | |
| JSON | |
| JSON | |
| JSON | |
| JSONC | |
extension settings UI | JSON | |
| YAML | |
in-app settings | GUI | |
not yet supported | β | |
yours | β |
Claude Desktop
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"]
}
}
}{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000", "--debug"],
"env": {
"NOTEBOOKLM_COOKIES": "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..."
}
}
}
}Verify: restart Claude Desktop, click the hammer icon at the bottom-right of the input. Gotchas: absolute paths only; relative paths fail silently on startup.
Claude Code (CLI)
Recommended path is the claude mcp add CLI (writes the JSON for you):
claude mcp add --transport stdio notebooklm -- npx -y @m4ykeldev/notebooklm-mcp serve{
"mcpServers": {
"notebooklm": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"]
}
}
}claude mcp add --transport stdio \
--env NOTEBOOKLM_COOKIES="SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..." \
notebooklm -- npx -y @m4ykeldev/notebooklm-mcp serve --query-timeout 180000Verify: claude mcp list && claude mcp get notebooklm, or /mcp inside a session. Gotchas: all options before the server name; use -- to separate options from the command. Project-scoped .mcp.json needs interactive approval on first sight.
Codex CLI
macOS:
~/.codex/config.tomlLinux:
~/.config/codex/config.tomlWindows:
%APPDATA%\codex\config.toml
[mcp_servers.notebooklm]
command = "npx"
args = ["-y", "@m4ykeldev/notebooklm-mcp", "serve"][mcp_servers.notebooklm]
command = "npx"
args = ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000"]
env = { NOTEBOOKLM_COOKIES = "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..." }Verify: codex --list-tools should list the NotebookLM tools. Gotchas: Codex CLI's MCP schema is still being formalized β double-check against the latest openai/codex README.
OpenAI Agents SDK β Python
Wire it in code (no config file):
from agents.mcp import MCPServerStdio
async with MCPServerStdio(
name="NotebookLM",
params={
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"],
},
) as server:
tools = await server.list_tools()
print([t.name for t in tools]) # 27 toolsasync with MCPServerStdio(
name="NotebookLM",
params={
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000"],
"env": {"NOTEBOOKLM_COOKIES": "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..."},
},
) as server:
...OpenAI Agents SDK β TypeScript
import { MCPServerStdio } from "@openai/agents";
const server = new MCPServerStdio({
command: "npx",
args: ["-y", "@m4ykeldev/notebooklm-mcp", "serve"],
});
await server.connect();
const tools = await server.listTools();
console.log(tools.map((t) => t.name)); // 27 toolsconst server = new MCPServerStdio({
command: "npx",
args: ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000"],
env: { NOTEBOOKLM_COOKIES: "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..." },
});Gemini CLI
~/.gemini/settings.json (user-global) or .gemini/settings.json (per-project).
{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"]
}
}
}{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"],
"timeout": 180000,
"env": {
"NOTEBOOKLM_COOKIES": "$NOTEBOOKLM_COOKIES"
}
}
}
}Verify: gemini mcp list, or /mcp in a session. Gotchas: undefined $VAR resolves to empty string β pre-export them in your shell.
Cursor
macOS / Linux:
~/.cursor/mcp.json(global) or.cursor/mcp.json(per-project)Windows:
%APPDATA%\Cursor\mcp.json
{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"]
}
}
}{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000"],
"env": {
"NOTEBOOKLM_COOKIES": "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..."
}
}
}
}Verify: Cursor Settings β MCP should show notebooklm in green, or MCP: View Server Status in the Command Palette. Gotchas: Cursor only loads MCP servers at startup β fully quit and relaunch after edits. Soft ~40-tool ceiling across all enabled servers combined.
VS Code (Copilot Chat agent mode)
.vscode/mcp.json (per-project). Top-level key is servers (not mcpServers β Microsoft renamed this).
{
"servers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"]
}
}
}{
"servers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000"],
"env": {
"NOTEBOOKLM_COOKIES": "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..."
}
}
}
}Verify: Command Palette β MCP: Open User Configuration. Ask Copilot Chat in agent mode to list NotebookLM notebooks.
Windsurf
macOS / Linux:
~/.codeium/windsurf/mcp_config.jsonWindows:
%APPDATA%\Codeium\Windsurf\mcp_config.json
{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"]
}
}
}{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000"],
"env": {
"NOTEBOOKLM_COOKIES": "${env:NOTEBOOKLM_COOKIES}"
}
}
}
}Verify: open the Cascade sidebar β MCP settings β confirm notebooklm is active. Gotchas: prefer ${env:VAR} / ${file:/path} interpolation over inlining cookies; Windsurf substitutes at server-launch time so secrets stay out of the config file.
JetBrains AI Assistant / Junie
macOS / Linux:
~/.junie/mcp/mcp.json(user-global) or.junie/mcp/mcp.json(per-project)Windows:
%APPDATA%\JetBrains\Junie\mcp.json
{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"]
}
}
}{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000"],
"env": {
"NOTEBOOKLM_COOKIES": "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..."
}
}
}
}Verify: Settings (Ctrl+Alt+S) β Tools β Junie β MCP Settings β notebooklm should appear in the discovered list.
Zed
~/.config/zed/settings.json β the relevant key is context_servers (Zed's MCP equivalent).
{
"context_servers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"]
}
}
}{
"context_servers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000"],
"env": {
"NOTEBOOKLM_COOKIES": "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..."
}
}
}
}Verify: Zed's AI Agent Panel lists notebooklm as an available context source.
OpenCode (sst)
opencode.jsonc (project root) or ~/.config/opencode/config.json.
{
"mcp": {
"servers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"]
}
}
}
}{
"mcp": {
"servers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000"],
"env": {
"NOTEBOOKLM_COOKIES": "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..."
}
}
}
}
}Verify: start OpenCode and ask "List my NotebookLM notebooks." β the model should call notebook_list. Gotchas: OpenCode's MCP schema is still evolving; confirm against the OpenCode docs if startup fails.
Cline (VS Code extension)
Managed via Cline's MCP settings UI inside VS Code. Underlying file (don't edit by hand): ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json.
Open the Cline panel β click the MCP icon β
Configure MCP Servers.Paste:
{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve"]
}
}
}Save. Cline restarts the server automatically.
{
"mcpServers": {
"notebooklm": {
"command": "npx",
"args": ["-y", "@m4ykeldev/notebooklm-mcp", "serve", "--query-timeout", "180000"],
"env": {
"NOTEBOOKLM_COOKIES": "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..."
}
}
}
}Verify: ask Cline "List my NotebookLM notebooks." β the tool-call panel shows notebook_list.
Goose (Block)
~/.config/goose/config.yaml (or via goose configure). Goose calls MCP servers "extensions".
extensions:
notebooklm:
type: stdio
command: npx
args:
- "-y"
- "@m4ykeldev/notebooklm-mcp"
- serveextensions:
notebooklm:
type: stdio
command: npx
args:
- "-y"
- "@m4ykeldev/notebooklm-mcp"
- serve
- "--query-timeout"
- "180000"
env:
NOTEBOOKLM_COOKIES: "SID=...; HSID=...; SSID=...; APISID=...; SAPISID=..."Verify: goose configure β confirm the extension is enabled, then goose session and ask "List my NotebookLM notebooks."
5ire
GUI app (no user-editable config file):
Open 5ire β
Settings(Mod+KβProviders).Click Add MCP Server.
Name:
notebooklmType:
StdioCommand:
npxArgs:
-y @m4ykeldev/notebooklm-mcp serve(add--query-timeout 180000if needed)Env vars (optional):
NOTEBOOKLM_COOKIES=SID=...; HSID=...; SSID=...; APISID=...; SAPISID=...Save and restart.
Verify: ask in chat "List my NotebookLM notebooks." β tool-call panel shows notebook_list.
Aider
Aider does not yet have first-class MCP-server client integration. Workarounds: run notebooklm-mcp serve separately and pipe responses, or use the generic stdio caller inside a small wrapper script. Track upstream support via the Aider Discord.
Generic stdio caller
If your client speaks the MCP protocol over stdio but isn't listed above, every config above reduces to the same primitive:
spawn: npx -y @m4ykeldev/notebooklm-mcp serve
stdio: parent <- stdout (JSON-RPC responses) | parent -> stdin (JSON-RPC requests)
env: (optional)
NOTEBOOKLM_COOKIES=... # skip the auth flow in CI
NOTEBOOKLM_CSRF_TOKEN=...
NOTEBOOKLM_SESSION_ID=...
flags: (optional)
--query-timeout <ms> # per-RPC timeout, default 120000
--debug # verbose stderr loggingOn connection the server advertises 27 tools β see the Complete Tool Reference below.
Verify any wiring
After restarting your client, ask:
"List my NotebookLM notebooks."
If the model invokes notebook_list and returns a table of titles, you're connected.
π¬ Example Prompts
Once wired up, your AI can drive NotebookLM end-to-end with natural language. The model picks the right tool from the 32 below.
Goal | Sample prompt | Tools the model will call |
Inventory | "Show me every NotebookLM project I own" |
|
Start a project | "Create a notebook called 'Q3 Earnings' and add the AAPL 10-Q PDF at https://β¦" |
|
Grounded Q&A | "From the AAPL notebook, what is the year-over-year services revenue change?" |
|
Multi-source brief | "In my 'Climate Policy' notebook, generate a one-page briefing doc focused on IRA tax credits" |
|
Studio podcast | "Make a 10-min audio overview of my 'AI Safety Reading' notebook" |
|
Deep Research β import | "Run deep research on 'kelp aquaculture in Maine' and import the findings into my 'Climate' notebook" |
|
Cleanup | "Delete the 'Old Drafts' notebook I no longer need" |
|
π Complete Tool Reference (27)
Every tool is designed to work seamlessly within your AI's context window.
π Notebook Management
Tool | Description |
| Get an overview of all your notebooks, including titles, source counts, and ownership metadata. |
| Create a new NotebookLM project instantly from your terminal or AI assistant. |
| Retrieve deep metadata and a full list of sources for a specific notebook. |
| Get a high-level, AI-generated summary of everything inside a notebook. |
| Update the title of an existing notebook. |
| Permanently remove a notebook (requires explicit confirmation). |
π Source Ingestion & Management
Tool | Description |
| Add any website or YouTube video as a source. Transcripts are automatically handled. |
| Ingest raw text snippets or local file contents directly into your project. |
| Connect and import documents, sheets, or slides from your Google Drive. |
| Get detailed AI analysis, summaries, and key topics for any individual source. |
| Extract the full underlying text of a source for processing by other AI tools. |
| Sync selected Google Drive sources to pull the latest changes into NotebookLM. |
| Remove a specific source from your notebook. |
π¬ Research & Deep Analysis
Tool | Description |
| Launch an autonomous research task using Google's engine (Web or Drive sources). |
| Track the progress of active research tasks and view discovered insights. |
| Instantly import the findings of a research task as new sources in your notebook. |
| Ask complex, grounded questions. Answers are cited directly from your sources. |
π¬ Studio (AI Content Generation)
Tool | Description |
| Transform your notebook's sources into a professional, podcast-style audio discussion. |
| Generate a structured video explainer based on your project data. |
| Create professional Briefing Docs, Study Guides, or Blog Posts tailored to your sources. |
| Turn your research into a presenter-ready slide deck automatically. |
| Visualize complex data and relationships with an AI-generated infographic. |
| Generate interactive study flashcards to master your notebook's content. |
| Create a comprehensive quiz to test knowledge grounded in your provided sources. |
| Check the generation status of your Studio artifacts and get download links. |
π Authentication Helpers
Tool | Description |
| Manually trigger a session refresh if you encounter connection issues. |
| Manually save cookie data (legacy fallback method). |
π CLI Reference
notebooklm-mcp serve [--query-timeout <ms>] [--debug]
notebooklm-mcp auth [--manual] [--file <path>] [--show-tokens]
notebooklm-mcp --versionFlag | Default | Description |
|
| Per-RPC timeout in ms. Bump for large studio jobs or slow research. |
| off | Verbose stderr logging of every RPC + retry. |
| off | Skip Chrome automation; paste cookies yourself. |
| β | Import a previously exported tokens JSON. |
| β | Print the cached session's metadata (cookie names, age, CSRF/SID presence β never the secret values). |
π©Ή Troubleshooting
Symptom | Likely cause | Fix |
"Could not find Google Chrome or Chromium" | No Chrome/Chromium on PATH | Install Chrome or run |
"Authentication expired" inside the AI session | Cookies stale | The server auto-refreshes once; if it can't, re-run |
Tool calls hang past 2 min | Big studio job over default timeout | Restart server with |
"file_path β¦ outside the allowed roots" |
| Copy the file into your working directory or pass |
MCP client reports server crashed on startup |
|
|
Multiple Chrome windows pop up on concurrent failures | Older version without single-flight mutex | Upgrade to β₯ |
π‘ Pro Tips
Custom Timeouts: Working with massive sources? Increase the timeout:
notebooklm-mcp serve --query-timeout 180000Check Connections: Use
notebooklm-mcp auth --show-tokensto verify your session validity without exposing the secrets.CI / headless: Set
NOTEBOOKLM_COOKIES(plusNOTEBOOKLM_CSRF_TOKEN,NOTEBOOKLM_SESSION_ID) to skip the browser flow entirely.
π‘ Security & Privacy
Local Storage with hardened perms. Tokens live at
~/.notebooklm-mcp/auth.json(mode0600) inside~/.notebooklm-mcp/(mode0700). Nothing leaves your machine except calls to Google.Path-traversal guard.
notebook_add_textrejectsfile_patharguments outside the working directory or the OS temp directory β a hostile MCP prompt cannot ask the server to read your~/.ssh/id_rsa.Loopback-only Chrome DevTools. The automated auth flow launches Chrome with an OS-assigned ephemeral port bound to
127.0.0.1β no fixed-port squatting, no LAN exposure.Single-flight auth refresh. Concurrent requests that hit an expired session share one refresh promise instead of each spawning their own Chrome.
Supply-chain gated releases. Every publish runs gitleaks β osv-scanner β
pnpm audit(high+) βnpm audit signatures(Sigstore) β lockfile registry pinning β publish-manifest preview beforepnpm publishships via OIDC trusted publishers. See CONTRIBUTING.md β Releasing on GitHub.Test coverage: 100% statements / branches / functions / lines, enforced by CI.
Unofficial Tool: This project is an independent community effort and is not affiliated with Google. It interfaces with internal endpoints and may be affected by changes to the NotebookLM web platform.
π License
Open-source and available under the MIT License.
Crafted with precision for the AI-first developer. Part of the Model Context Protocol ecosystem.
Available Tools
27 toolsaudio_overview_createC
Generate an audio podcast overview (requires confirm=true)
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Format: brief, critique, debate, deep_dive | |
| length | No | Length: default, long, short | |
| confirm | Yes | Must be true to start generation | |
| language | No | BCP-47 language code (e.g. en, es) | |
| source_ids | No | Source IDs (omit for all) | |
| notebook_id | Yes | The notebook ID | |
| focus_prompt | No | Focus prompt for the audio |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only repeats the schema's confirm requirement and does not mention whether generation is asynchronous, what side effects occur, or any additional prerequisites or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the main purpose. Every word is necessary, with no redundancy or filler, achieving maximum 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 complex generation tool with 7 parameters, no output schema, and no annotations, this description is severely incomplete. It does not explain return behavior, asynchronous processing, or when to use the tool, leaving the agent with insufficient context to invoke it 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?
The input schema has 100% coverage of all parameters with clear descriptions, meeting the baseline for parameter semantics. The tool description adds no extra parameter information, but the schema already provides sufficient meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Generate') and resource ('audio podcast overview'), making the tool's purpose understandable. However, it does not explicitly differentiate from sibling tools like video_overview_create or infographic_create, relying on the word 'audio' to imply the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as video_overview_create or report_create. The only additional note, 'requires confirm=true,' is a parameter requirement, not a usage context or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flashcards_createC
Generate flashcards (requires confirm=true)
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to start generation | |
| difficulty | No | Difficulty: easy, hard, medium | |
| source_ids | No | Source IDs (omit for all) | |
| notebook_id | Yes | The notebook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It mentions the confirmation requirement, but this is already in the schema (confirm parameter with 'Must be true to start generation'). The description discloses no additional behavioral traits such as whether generation is asynchronous, side effects, or data 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 a single sentence, which is efficient, but it is under-specified for a generation tool. While concise, it omits useful context, so it strikes a poor balance between brevity and informativeness.
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?
As a creation tool with no annotations or output schema, the description should explain more about the context, such as what the tool does with notebook_id and source_ids, whether it operates synchronously, or any side effects. The description only states the basic action and a requirement, leaving significant gaps for an AI agent to invoke it 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?
The input schema has 100% description coverage for all 4 parameters, so the schema already documents their meanings. The description adds no extra parameter semantics beyond what's in the schema, matching the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function as 'Generate flashcards', using a specific verb and resource. It distinguishes the action from sibling tools by focusing on flashcards, though it does not explicitly differentiate from other create-type tools like quiz_create or audio_overview_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only mentions 'requires confirm=true', which is a usage requirement but not guidance on when to use this tool versus alternatives. It does not specify preconditions, target notebooks, or situations where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infographic_createB
Generate an infographic (requires confirm=true)
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to start generation | |
| language | No | BCP-47 language code | |
| source_ids | No | Source IDs (omit for all) | |
| notebook_id | Yes | The notebook ID | |
| orientation | No | Orientation: landscape, portrait, square | |
| detail_level | No | Details: concise, detailed, standard | |
| focus_prompt | No | Focus prompt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes 'requires confirm=true', which is a useful behavioral gate, but this information is already present in the confirm parameter schema ('Must be true to start generation'). With no annotations provided, the description carries the burden of disclosure, yet adds no further details about side effects, return values, or generation process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, extremely concise and front-loaded with the core purpose. It wastes no words, though it is quite sparse; still, it is appropriately brief for the limited content it conveys.
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 creation tool with 7 parameters and no output schema, this description is under-specified. It lacks any indication of return values, asynchronous behavior, or parameter interplay. The schema covers parameter meanings, but the overall tool context is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no extra semantic meaning beyond the schema; it only restates the confirm requirement already documented in the schema. However, since all parameters are well-described in the schema, this is acceptable.
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 'Generate an infographic' with a specific verb and resource, clearly distinguishing it from sibling creation tools like slide_deck_create or report_create. The appended confirmation note is a behavior, not a purpose, but does not obscure the core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus other creation tools such as audio_overview_create or video_overview_create. The description only states the action, leaving the agent to infer usage context entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_add_driveA
Add a Google Drive file source to a notebook
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Document title | |
| file_id | Yes | Google Drive file ID | |
| doc_type | Yes | MIME type (e.g. application/vnd.google-apps.document) | |
| notebook_id | Yes | The notebook ID |
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 only states that a source is 'added', but does not disclose side effects, authentication requirements, whether the operation is reversible, or what happens on success. This is a minimal disclosure for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It efficiently communicates the tool's 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 the simple action and complete parameter schema, the description is adequate but lacks behavioral context (e.g., no annotations, no output schema). It does not explain what 'adding a source' entails or how to verify success, so the agent may lack full situational awareness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all four parameters (title, file_id, doc_type, notebook_id). The description adds no additional parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (adding a Google Drive file source) and the target (a notebook). It distinguishes itself from sibling tools like notebook_add_url and notebook_add_text by specifying the source type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: to add a Google Drive file source to a notebook. It does not explicitly list alternatives or exclusions, but the resource type in the description makes the use case obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_add_textC
Add a text document source to a notebook
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title for the new source | |
| content | No | The text content to add | |
| file_path | No | Path to local file to read content from | |
| notebook_id | Yes | The notebook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state that this is a mutating operation (adding a source), whether authentication or specific permissions are required, or what the tool returns after adding the text source. The description is too sparse to inform the agent about side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler. It is appropriately sized for the tool's simplicity, though it could include additional context without becoming verbose. It earns a 4 because it is efficient, but it misses key behavioral and usage details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description should at least mention that the agent must provide either `content` or `file_path`, and that this operation modifies a notebook. It also lacks any reference to output or return value. The description is incomplete for an agent to confidently invoke this tool, especially without annotations or an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents all four parameters with descriptions, achieving 100% coverage, so the baseline is 3. The description adds minimal extra meaning beyond 'text document source,' which loosely aligns with the `content` and `file_path` parameters but does not explain the relationship or when to use one over the other (e.g., inline content vs reading from a file).
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 'Add a text document source to a notebook' clearly identifies the action (add) and the resource (text document source to a notebook). It distinguishes itself from sibling tools like notebook_add_drive and notebook_add_url by specifying the source type as text, though it could further clarify what 'text' encompasses (e.g., raw text, Markdown).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like notebook_add_drive or notebook_add_url. The description gives no context about preferred use cases, prerequisites (e.g., requiring an existing notebook), 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.
notebook_add_urlB
Add a website URL source to a notebook
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to add | |
| notebook_id | Yes | The notebook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states the action. It does not mention whether the URL is fetched, validated, or requires authentication, nor any side effects or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that is front-loaded with the verb and object. It contains no unnecessary words 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?
The tool is simple with 2 required parameters and no output schema, so the description is minimally adequate. However, it lacks context about prerequisites, failure modes, or what 'source' implies (e.g., content fetching), which is a clear gap for a mutation tool without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented. The description adds minimal semantic value beyond the schema, only reinforcing that the URL is a specific type of source.
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 ('Add'), the object ('website URL source'), and the target ('to a notebook'). It effectively distinguishes this tool from siblings like notebook_add_drive and notebook_add_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description does not mention any prerequisites, contexts, or exclusions, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_createA
Create a new NotebookLM notebook
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title for the new notebook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It only states the creation action but does not mention return value, required permissions, side effects, or what happens on conflict. This is a significant gap for a mutating 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?
A single concise sentence states the purpose with zero wasted words. The structure is ideal for the trivial parameter set.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity β one required parameter, no output schema β the description is minimal but leaves ambiguity about the return value and post-creation behavior. It is adequate for basic understanding but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the only parameter 'title' with a clear description. The tool description adds no extra semantic value beyond the schema, so it meets the baseline for high schema coverage but doesn't exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('NotebookLM notebook'), clearly distinguishing it from siblings like notebook_rename, notebook_delete, and notebook_list. The action 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?
The usage context is implied by the verb 'Create' β the tool is for making a new notebook. However, there is no explicit guidance on when to use it versus alternatives, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_deleteA
Delete a notebook (requires confirm=true)
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to confirm deletion | |
| notebook_id | Yes | The notebook ID |
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 mentions the confirm=true requirement, which is useful, but it does not disclose that deletion is permanent, irreversible, or may affect associated data. For a destructive tool, this is a significant gap.
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, compact sentence that conveys the core purpose and a key constraint. Every word earns its place, and there is no 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?
For a deletion tool with no output schema and no annotations, the description is adequate but lacks important context such as permanence or potential side effects. While the schema covers parameters fully, the description does not warn about the irreversibility of the action, which is critical for an AI agent to make safe decisions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 100%βboth parameters (notebook_id and confirm) are already described. The description adds the requirement that confirm must be true, but that is essentially restating the schema description. It does not provide deeper semantic 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 ('Delete') and the resource ('notebook'), distinguishing it from sibling tools like notebook_create or notebook_get. The verb+resource structure 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 usage context by noting the confirm=true requirement, which informs the agent that confirmation is necessary. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions, such as when deletion is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_describeB
Get an AI-generated summary of the notebook content
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | The notebook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether the operation is read-only, whether it triggers asynchronous processing, incurs cost, or has latency implications. The verb 'Get' implies a read operation, but no explicit safety or side-effect information is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that states the purpose without unnecessary words. It is front-loaded and easy to parse, earning its place with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one well-documented parameter and no output schema, the description sufficiently states what the tool returns (an AI-generated summary). It lacks details on response structure or potential invocation nuances, but these are not critical for basic understanding 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 fully describes the only parameter 'notebook_id' with a basic description, giving a baseline of 3. The tool description adds no additional meaning about the parameter, such as where to find the ID or its format, so it neither enhances nor detracts from 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 uses a specific verb ('Get') with a clear resource ('notebook content') and a distinct output ('AI-generated summary'). This distinguishes it from siblings like notebook_get (likely raw content) and notebook_query (likely querying), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no exclusions, and no prerequisites. It simply states what it does, leaving the agent to infer usage context from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_getB
Get details of a specific notebook including its sources
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | The notebook ID |
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 adds that the response includes 'sources', which is useful context. However, it does not explicitly state that the operation is read-only, describe any side effects, or mention error handling or authentication needs. The verb 'Get' implies non-destructive behavior, but this is not made 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 a single sentence that immediately states the verb and resource, with no filler or redundant detail. It is appropriately sized for the simplicity of the 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?
This is a simple tool with one parameter, no output schema, and no annotations. The description covers the core purpose and mentions that sources are included, but it does not list what other details are returned or clarify the difference from 'notebook_describe'. Given the low complexity, the description is minimally complete but leaves room for more 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?
The schema already fully documents the sole parameter 'notebook_id' as 'The notebook ID', so schema coverage is 100%. The description's phrase 'specific notebook' adds minimal meaning beyond the schema, effectively reinforcing that the ID identifies a single notebook. This meets the baseline of 3 but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('details of a specific notebook'), and a key aspect ('including its sources'). It is specific and straightforward, but it does not differentiate from the sibling tool 'notebook_describe', which likely serves a similar 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?
There is no explicit guidance on when to use this tool versus alternatives. The description does not mention 'notebook_describe' or any other sibling, nor does it state prerequisites or when this tool should be preferred. The only implied usage is that you need a specific notebook ID, which is weak guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_listA
List all NotebookLM notebooks with metadata (title, sources count, ownership)
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | Maximum notebooks to return (default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral disclosure burden. It states what metadata is returned and that it lists all notebooks, but does not mention pagination (beyond the schema), authentication requirements, or what happens with no results. This is adequate but minimal for a read/list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of 11 words. Every word earns its place, with no redundancy or fluff. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with one optional parameter and no output schema, the description is reasonably complete. It covers the primary purpose and metadata fields. It does not mention pagination behavior or ownership scope details, but the schema covers the parameter and the tool is simple enough that these gaps are minor.
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 fully describes the only parameter (max_results with default 100), achieving 100% coverage. The description adds no extra parameter semantics, and per the rubric, high schema coverage yields a baseline score of 3. The description does not compensate further.
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 ('List') and resource ('all NotebookLM notebooks'), and specifies the metadata included (title, sources count, ownership). This distinguishes it from sibling tools like notebook_get or notebook_describe, which likely target 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 implies usage for retrieving a collection of notebooks, which is a clear context. However, it does not explicitly name alternatives like notebook_get for single-notebook retrieval or provide exclusions. Since the context is clear but lacks explicit alternative guidance, a score of 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_queryB
Ask a question about the sources in a notebook
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Question to ask | |
| source_ids | No | Specific source IDs to query (omit for all) | |
| notebook_id | Yes | The notebook ID | |
| conversation_id | No | Conversation ID for follow-up questions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must bear the full burden of behavioral disclosure. It only states that a question is asked, with no mention of read-only behavior, authentication needs, output format, or side effects. The schema hints at multi-turn via conversation_id, but the description does not elaborate.
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?
One clear sentence with no redundancy, front-loading the essential verb and object. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and no annotations, this description is under-specified. It lacks information about return values, the meaning of filtering via source_ids, how conversation_id works, and any limitations. Users need additional context to use it 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 100% with each parameter having a description, so the baseline is 3. The tool description adds no extra parameter semantics, such as how source_ids filters the query or how conversation_id connects follow-ups, but it doesn't need to given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('ask a question') and resource ('sources in a notebook'), clearly distinguishing it from metadata tools like notebook_get or content retrieval tools like source_get_content. It could be more explicit about the natural-language Q&A aspect, but it's understandable.
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 a question about notebook sources needs answering, but it provides no explicit guidance on when to prefer this over sibling tools such as source_get_content or notebook_describe. It also doesn't mention how conversation_id enables follow-up questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_renameB
Rename a notebook
| Name | Required | Description | Default |
|---|---|---|---|
| new_title | Yes | New title for the notebook | |
| notebook_id | Yes | The notebook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states 'Rename a notebook' without explaining side effects, idempotency, or permission requirements. It lacks any detail about what happens when the tool is invoked, such as whether the title is overwritten or if there are ordering constraints.
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 unnecessary words or fluff. It is appropriately sized for the tool's simplicity and front-loads the core purpose immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple rename operation with full schema documentation, the description offers the minimum viable context. It doesn't explicitly explain the expected outcome or when to use the tool, but the low complexity and clear purpose make it adequate, though gaps remain in usage orientation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description itself adds no parameter-level detail beyond what the schema already provides for notebook_id and new_title, so it neither enhances nor detracts from the schema's clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'rename' and resource 'notebook', making the tool's purpose unambiguous. It naturally distinguishes itself from sibling tools like notebook_create and notebook_delete because 'rename' is a distinct operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or conditions. There is no explicit context about when renaming is appropriate or what qualifies as a valid new_title.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quiz_createC
Generate a quiz (requires confirm=true)
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to start generation | |
| difficulty | No | Difficulty: easy, hard, medium | |
| source_ids | No | Source IDs (omit for all) | |
| notebook_id | Yes | The notebook ID | |
| question_count | No | Number of questions (default 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the burden of behavioral disclosure. It only repeats the schema's confirm requirement and provides no information about side effects, generation duration, or output format.
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?
One compact sentence with zero wasted words; the primary action is front-loaded, and the confirm requirement is a useful, concise addition.
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 5 parameters, no annotations, and no output schema, the description is severely under-specified. It lacks usage prerequisites, return value expectations, and any caveats about generation time or scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional parameter context beyond what the schema already provides, such as examples or relationships between 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 identifies the action (generate) and resource (quiz), distinguishing it from sibling content-creation tools like flashcards_create. It is specific enough, though it lacks explicit mention of the notebook context, which is implied by the tool name and schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like flashcards_create or report_create. The confirm=true hint is a parameter requirement, not a usage guideline, and no exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_authA
Reload authentication tokens (re-extract CSRF and session from page)
| Name | Required | Description | Default |
|---|---|---|---|
No 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 states the action ('re-extract CSRF and session from page') but does not disclose side effects, whether existing tokens are invalidated, or any permissions/auth requirements. For a mutation-like refresh operation, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. It front-loads the action and includes relevant specifics in parentheses, earning full marks for structure and brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params, no output schema), the description is largely complete. It explains the purpose and mechanism ('re-extract from page'). However, it lacks context about when to invoke it relative to save_auth_tokens, and the 'page' dependency is implicit, so it is not a perfect 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema provides no actionable information. The description adds meaning by explaining what the tool does with no inputs, which is the only relevant semantic content. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Reload') and clearly identifies the resource ('authentication tokens') with details (CSRF and session). It distinguishes itself from the sibling tool 'save_auth_tokens' by implying a refresh rather than initial save.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like save_auth_tokens. There is no mention of prerequisites (e.g., having a loaded page) or typical scenarios (e.g., token expiration).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_createC
Generate a text report (requires confirm=true)
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to start generation | |
| language | No | BCP-47 language code | |
| source_ids | No | Source IDs (omit for all) | |
| notebook_id | Yes | The notebook ID | |
| custom_prompt | No | Custom prompt (when format='Create Your Own') | |
| report_format | No | Format: Briefing Doc, Study Guide, Blog Post, Create Your Own |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only mentions 'requires confirm=true,' a detail already present in the schema. It does not describe cost, asynchronous behavior, effects on the notebook, or what the generated report looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler and is easy to parse. However, it is so brief that it sacrifices valuable guidance, so it does not earn a 5.
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?
This is a six-parameter tool with no output schema and no annotations, yet the description only says 'Generate a text report (requires confirm=true)'. Missing context around report_format options, source_ids behavior, custom_prompt usage, and result handling leaves it incomplete for an agent deciding to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no new parameter semantics beyond what the schema already documents; 'requires confirm=true' merely restates the confirm parameter's existing 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 the tool generates a text report, using a specific verb and resource. It distinguishes from sibling content-creation tools like audio_overview_create or slide_deck_create by specifying 'text report', though it does not elaborate on what that entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use report_create versus sibling tools such as quiz_create, slide_deck_create, or infographic_create. The only implication is that it is appropriate when a text report is desired, but no explicit context, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_importA
Import discovered sources from a research task into the notebook
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Research task ID | |
| notebook_id | Yes | The notebook ID | |
| source_indices | No | Specific source indices to import (omit for all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose side effects. It only says 'import' without explaining whether sources are copied or moved, whether duplicates are created, or whether the research task is modified. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb 'Import', and contains no filler or redundant words. It is optimally concise.
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 lack of annotations and output schema, the description is too sparse. It omits key contextual details such as default behavior (import all sources), effects on the research task, and expected result, making it incomplete for an agent to fully understand the tool's operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage of all three parameters with clear descriptions, so the description adds no extra parameter semantics. The baseline of 3 applies since the description does not need to repeat schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'import' and identifies both the source ('discovered sources from a research task') and destination ('the notebook'), clearly distinguishing this from sibling tools like research_start and research_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?
It provides clear context for when to use the tool: after a research task has discovered sources, to bring them into a notebook. However, it does not explicitly mention alternatives or exclusions, such as when to use manual adding tools instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_startB
Start a web or Drive research task
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Mode: deep, fast (default: fast) | |
| query | Yes | Research query | |
| source | No | Source: drive, web (default: web) | |
| notebook_id | Yes | The notebook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It does not indicate whether the research runs asynchronously, what the response contains, how long it takes, or whether permissions are needed. This is a minimal behavioral disclosure beyond the basic purpose.
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 front-loaded with the primary purpose and is appropriately sized for a simple start-operation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and the description does not explain return values or next steps. Given that sibling tools like research_status and research_import exist, the description should at least hint at the asynchronous nature or how to track progress, but it does not.
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 covers 100% of parameters, so the baseline is 3. The description adds no extra meaning beyond what the schema already provides; the 'web or Drive' phrase mirrors the source parameter default and options without adding context.
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 (start), the resource (a research task), and the scope (web or Drive). It distinguishes this tool from siblings like research_status and research_import, which handle other stages of the research lifecycle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as research_status for checking progress or notebook_query for asking questions. There is no mention of prerequisites or exclusions, leaving the agent to infer usage from the name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_statusC
Check the status of research tasks
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | No | Specific task ID to check (omit for all) | |
| notebook_id | Yes | The notebook ID |
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 implies a read-only operation but does not state return format, whether omitting task_id returns all tasks (though the schema suggests this), or any side effects. This is insufficient for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is appropriately concise and earns its place by stating the core purpose without waste.
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 no annotations and no output schema, so the description must explain more. It does not mention return values, behavior when task_id is omitted, or what constitutes 'research tasks.' The schema covers parameters, but the overall description is incomplete for an agent to fully use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both parameters have clear descriptions ('The notebook ID' and 'Specific task ID to check (omit for all)'). The description adds no parameter-level information, but the baseline is 3 for high schema coverage, and no deduction 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 uses a specific verb ('Check') and identifies the resource ('status of research tasks'), which clearly distinguishes it from sibling tools like research_start and research_import. However, it doesn't mention the notebook context or that it can check a specific task vs all tasks, leaving some clarity to the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of contrasts with similar status tools like studio_status or notebook_query, nor any when-to-use/when-not-to-use criteria. The only implicit usage is the purpose itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_auth_tokensB
Manually save authentication cookies (fallback method β prefer using CLI auth)
| Name | Required | Description | Default |
|---|---|---|---|
| cookies | No | Cookie header string (SID=xxx; HSID=yyy; ...) | |
| csrf_token | No | CSRF token | |
| session_id | No | Session ID |
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 disclosing behavior. It states it saves authentication cookies, but does not disclose whether this overwrites existing tokens, persists across sessions, or has any security implications. With zero annotation support, this is a significant transparency gap for a state-changing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that efficiently communicates the core action and the fallback context. It is appropriately concise, though it could have been slightly more structured with additional behavioral details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is incomplete. It does not explain the purpose of these saved cookies, any prerequisites, or what happens after saving. The fallback note gives some context, but the tool lacks essential behavioral and lifecycle information for an agent to use it 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?
The input schema covers 100% of parameters, each with a clear description (e.g., cookies as a header string, CSRF token, session ID). The tool description itself adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manually save authentication cookies'. It also identifies it as a fallback method, which distinguishes it from alternative auth approaches. However, it does not explicitly reference the sibling tool refresh_auth, though the manual/fallback framing differentiates 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 phrase 'fallback method β prefer using CLI auth' provides explicit usage guidance, telling the agent to consider this tool only when normal CLI authentication is not preferred. This is clear context, though it does not rule out other alternatives or mention sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slide_deck_createB
Generate a slide deck (requires confirm=true)
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Format: detailed_deck, presenter_slides | |
| length | No | Length: default, short | |
| confirm | Yes | Must be true to start generation | |
| language | No | BCP-47 language code | |
| source_ids | No | Source IDs (omit for all) | |
| notebook_id | Yes | The notebook ID | |
| focus_prompt | No | Focus prompt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only mentions the confirm requirement, but fails to explain that this likely creates a slide deck from notebook content, whether it is synchronous, what side effects occur, or what the output will be. This is a mutation tool with no safety or 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 a single, front-loaded sentence with no wasted words. However, it is so terse that it omits critical behavioral context for a tool with 7 parameters, so it is not perfectly calibrated to the tool's complexity.
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 7 parameters, no output schema, and no annotations, this description is severely incomplete. It does not explain what the slide deck contains, how it uses source_ids or focus_prompt, whether generation is asynchronous, or what the user should expect. The description provides almost no surrounding context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all parameters have descriptions. The description adds no new meaning beyond the schema; it merely restates the confirm requirement which the schema already documents. Thus the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Generate') and the resource ('a slide deck'), which distinguishes it from sibling tools like audio_overview_create or video_overview_create. The purpose is immediately clear without needing to infer from the name alone.
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 only usage guidance is 'requires confirm=true', which is a prerequisite but not a when-to-use directive. There is no mention of when to choose this tool over alternatives like report_create or infographic_create, nor any exclusions or conditions beyond the confirmation flag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_deleteA
Delete a source from a notebook (requires confirm=true)
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to confirm deletion | |
| source_id | Yes | The source ID | |
| notebook_id | Yes | The notebook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It reveals the confirmation gate ('requires confirm=true') as a safety mechanism, but lacks details about permanence, side effects, or error behavior. It adds some transparency but is not comprehensive for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and key constraint. Every word earns its place, 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 is adequate for a simple delete tool, covering the purpose and the critical confirm requirement. However, it lacks information about return values, idempotency, or what happens after deletion. Given no output schema and no annotations, more context would be beneficial, but the current level is minimally 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 100%, so the parameters are already well-documented. The description merely restates the confirm requirement already present in the schema, adding no new semantic value beyond what is in the input 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 ('Delete'), the resource ('a source from a notebook'), and a key requirement ('requires confirm=true'). This distinguishes it from sibling tools like source_describe (read) and notebook_delete (delete notebook), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to delete a source) and provides a critical prerequisite (confirm=true). However, it does not mention alternatives or explicitly state when not to use this tool, so the guidance is partial rather than fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_describeA
Get metadata for a specific source in a notebook
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes | The source ID | |
| notebook_id | Yes | The notebook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It indicates the operation is a read ('Get metadata') but does not mention what metadata is included, whether it is read-only, or any error conditions. This is minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It communicates the core purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two documented parameters, the description is minimally adequate, but it does not describe the return value or what metadata the caller can expect. With no output schema or annotations, this missing context leaves some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for both required parameters ('The source ID' and 'The notebook ID'). The description adds no additional parameter context, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly identifies the resource ('metadata for a specific source in a notebook'). It effectively distinguishes from sibling tools like source_get_content, which would retrieve content, and source_delete, which removes a source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when metadata about a source is needed) but provides no explicit guidance on when not to use it or which alternative to choose. Sibling tool names offer context but the description itself does not reference them.
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 the underlying text content of a source (used by grounding tool)
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes | The document ID to retrieve | |
| notebook_id | Yes | The notebook ID |
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 the tool returns 'text content' and implies read-only behavior, but it does not mention required permissions, error handling, or the exact format of the response. For a simple getter this is moderate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the action, resource, and purpose. Every word earns its place, with no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two required parameters and no nested objects. The description clearly states the tool returns text content, which is sufficient for basic understanding. A note on return format or error cases would improve completeness, but it is largely adequate 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?
Both parameters (notebook_id, source_id) are fully described in the schema with clear names and descriptions. The tool description adds no additional semantic meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and identifies the resource as 'underlying text content of a source,' clearly distinguishing it from sibling tools like source_describe (metadata) or source_delete (removal). The parenthetical '(used by grounding tool)' adds useful context about its 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?
The phrase 'used by grounding tool' provides clear context that this is an internal, low-level accessor for raw text. However, it does not explicitly state when to prefer this over source_describe or when not to use it, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_sync_driveC
Sync all Drive sources in a notebook to pull latest changes
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to confirm sync | |
| source_ids | Yes | Source IDs to sync | |
| notebook_id | Yes | The notebook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of disclosing behavioral traits. It mentions the action but omits crucial details: whether syncing overwrites local changes, whether it requires explicit confirmation (despite a confirm parameter), whether it is reversible, or what authorization is needed. For a mutation-oriented sync tool, this is a significant transparency gap.
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 that immediately communicates the core purpose and ends with an explanatory goal. It is extremely concise with no wasted words, making it easy for an agent to scan and understand.
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βthree required parameters, a confirm gate, no annotations, and no output schemaβthe description is notably under-specified. It fails to explain the confirmation requirement, the exact scope of the sync, or what the agent should expect after execution. This is insufficient for a tool with mutation and confirmation semantics.
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 100% coverage with clear descriptions for all three parameters (notebook_id, source_ids, confirm), so the schema handles the heavy lifting. The description adds no positive meaning and actually introduces confusion with 'all Drive sources' versus the required source_ids array. It neither enhances nor materially harms the schema's clarity, staying at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (sync) and resource (Drive sources in a notebook), with a purpose ('to pull latest changes'). It stands apart from sibling tools as the only sync operation. However, 'all Drive sources' conflicts with the required source_ids parameter, which implies a selected subset, creating slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers only a reason for use ('to pull latest changes') but no guidance on when to use this tool versus alternatives like source_get_content or notebook_add_drive. There are no exclusions or comparative context, leaving the agent to infer the appropriate scenario from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_statusC
Check the status of generated Studio artifacts
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | The notebook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'check status', implying a read-only operation, but does not disclose what status information is returned, whether the tool is asynchronous, or any side effects. This is a minimal level of transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence and is easy to parse. However, it is under-specified β it lacks necessary context about 'Studio artifacts' and the status information, making it too minimal to be fully useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description still fails to explain what 'status' means, what values might be returned, or how this relates to other studio-related tools. The lack of any return-value or behavior details leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the only parameter (notebook_id), and the schema already provides a basic description. The tool description adds no additional meaning about the parameter or its usage, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('check') and resource ('status of generated Studio artifacts'), but 'Studio artifacts' is ambiguous and not defined. It distinguishes from siblings like 'research_status' only by the vague term 'Studio', which is insufficient for an agent to know what this tool actually covers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternative tools. No mention of context, prerequisites, or exclusions. The agent is left to infer usage from the name and vague description, which is not enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_overview_createC
Generate a video overview (requires confirm=true)
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Format: brief, explainer | |
| confirm | Yes | Must be true to start generation | |
| language | No | BCP-47 language code | |
| source_ids | No | Source IDs (omit for all) | |
| notebook_id | Yes | The notebook ID | |
| focus_prompt | No | Focus prompt | |
| visual_style | No | Style: anime, auto_select, classic, custom, heritage, kawaii, paper_craft, retro_print, watercolor, whiteboard |
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 mentions the confirm requirement but does not indicate whether this is a long-running async operation, whether it consumes credits, or what happens on failure. The lack of any note about side effects or expected behavior leaves the agent under-informed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler words. It is concise and readable, though the parenthetical 'requires confirm=true' feels slightly appended rather than integrated. Still, it earns a high score for efficiency.
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 7 parameters and no output schema, the description provides no information about return values, how to retrieve the generated video, or whether generation is synchronous with the response. For a complex creation tool, this is a significant omission that leaves the agent guessing about the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters. The description adds no parameter-specific context beyond the confirm hint, resulting in a baseline 3 as it neither enhances nor detracts from schema-provided semantics.
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 'Generate a video overview' clearly identifies the action and resource, distinguishing it from sibling tools like audio_overview_create and infographic_create. However, it does not elaborate on what a video overview entails, so it stops short of a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is 'requires confirm=true', which is a prerequisite rather than a when-to-use instruction. It does not specify when to choose this tool over alternatives like audio_overview_create or report_create, nor does it mention any preconditions beyond confirmation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action: notebook management, source operations, research tasks, artifact creation, query, and auth. Despite many artifact creation tools, each clearly specifies its output type (audio, video, infographic, etc.), so no two tools appear to do the same thing.
Most tools follow a resource_action pattern (e.g., notebook_create, source_delete, report_create), which is consistent. A few outliers like save_auth_tokens and refresh_auth use action_resource order, and research_status and studio_status are noun_noun compounds, but these are minor deviations within a largely coherent scheme.
At 27 tools, the server exceeds the 25-tool threshold for 'too many'. The count is inflated by 8 separate artifact creation tools that could be unified into a single tool with a type parameter, and the three add-source tools similarly could be consolidated. While the server covers a broad domain, the tool surface is heavier than necessary.
The tool set covers the full lifecycle for notebooks (create, read, list, rename, delete), sources (add three types, delete, describe, get content, sync), research (start, status, import), and artifacts (create and check status). Minor gaps exist such as no explicit list_sources tool (though notebook_get provides sources) and no update_source, but these are manageable workarounds.
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
Securely search, create, and organize your Mem notes and collections from AI assistants.
Create, search and manage Knowtis collaborative notes from AI assistants.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analyβ¦
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI assistants to programmatically interact with Google NotebookLM, allowing them to create and manage notebooks, add sources, query content, generate audio/video, and perform research tasks through natural language commands.2485,963MIT
- AlicenseAqualityBmaintenanceConnects AI coding agents to Google NotebookLM, enabling querying notebooks, adding sources, and generating artifacts like reports, podcasts, and slide decks.141MIT
- 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/m4yk3ldev/notebooklm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server