Drive Google NotebookLM: manage notebooks and sources, chat with a notebook's sources, generate and download studio artifacts (audio, video, reports, quizzes, …), and run deep research. Notebook- and source-scoped tools accept a name OR an id (full or unique prefix); use the matching *_list tool to discover them (set NOTEBOOKLM_MCP_STRICT_IDS=1 to require full canonical ids and reject names/prefixes, for deterministic automation). Long-running generation is split into a non-blocking generate step (returns a task_id) plus status polling. Destructive tools — and sharing-widening tools (making a notebook public, granting a user access) — require `confirm=true`; called without it they return a `needs_confirmation` preview. Errors arrive as `CODE: message (retriable=…)`.
Server exposes 13 tools via fastmcp/HTTP. Tool names follow verb_noun convention (notebooks_list, sources_list, chat_ask, studio_generate, etc.), which is good. However, critical gaps undermine quality: (1) descriptions are present but generic and brief (10-50 chars typically), lacking LLM-optimized context about WHEN to use each tool or what prerequisites exist; (2) parameter schemas are not visible in the provided source excerpts, cannot verify input types, constraints, or descriptions; (3) output schemas are undocumented, LLMs cannot plan downstream calls or extract required fields; (4) error handling is absent from visible code, no recovery guidance, categorization, or actionable messages; (5) no tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (IRREVERSIBLE sharing_grant_access and sharing_make_public, WRITE studio_generate and research_run). Composition is reasonable (each tool has one responsibility), but lack of schema visibility and output documentation prevents confident scoring above 50.
Wait for file upload completion
Ask a question about a notebook's sources
List all notebooks in the user's account
List notes in a notebook
Run deep research on notebook sources
Get server information and diagnostics
Grant user access to a notebook
Make a notebook public
Input schemas not visible in source code. Cannot verify parameter types, constraints, enums, or descriptions.
Output schemas undocumented. LLMs cannot infer what fields to expect, breaking tool chaining. E.g., if notebooks_list returns notebook_id, chat_ask must accept notebook_id, but without documented output, this is invisible to the LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
List Google Drive sources in a notebook
List all sources in a notebook
List playbook sources in a notebook
Download generated studio artifacts
Generate studio artifacts (audio, video, reports, quizzes, etc.)
Descriptions are generic and brief (10-50 chars). Lack WHEN to use, prerequisites, and dependencies. E.g., 'List all notebooks in the user's account' does not explain: Is this a discovery tool? Should I call it first? What fields does it return?
No tool annotations despite clear risk levels. sharing_grant_access and sharing_make_public are IRREVERSIBLE (risk: IRREVERSIBLE); studio_generate and research_run are WRITE operations. Missing destructiveHint and idempotentHint annotations prevent LLMs from reasoning about safety and retry semantics.
No error handling guidance visible. Irreversible tools (sharing_grant_access, sharing_make_public) lack confirmation/dry-run patterns. No recovery hints, categorization (retryable vs fatal), or actionable error messages documented.