Skip to main content
Glama

NotebookLM MCP Server

MCP server for NotebookLM with hybrid metadata enforcement (API-native fields + Google Docs custom properties + local JSON storage).

Features

  • Metadata Operations: Validate, get, set, and query custom metadata

  • Notebook Operations: List, get, create, delete, and share notebooks (via NotebookLM API)

  • Source Operations: Add, get, and remove sources (Google Docs, PDFs, URLs, etc.)

  • Audio Overviews: Generate and delete audio overviews

  • Hybrid Storage: Three-layer metadata storage (API fields, Google Docs, local JSON)

  • OAuth2 Authentication: Secure authentication with auto-refresh

  • Caching: 30-second TTL for optimal performance

  • TDD: 89+ tests with comprehensive coverage

Related MCP server: notebooklm-mcp-2026

Architecture

MCP Server
    ↓
Metadata Manager (Orchestrator)
    ↓ ↓ ↓
[NotebookLM API] [Google Docs API] [Local JSON Store]

Prerequisites

  • Node.js 18+

  • Google Cloud Project with:

    • NotebookLM Enterprise API enabled

    • Google Docs API enabled

    • Google Drive API enabled

  • OAuth2 credentials (client ID and secret)

Installation

# Clone or copy to your machine
cd /path/to/notebooklm-mcp

# Install dependencies
npm install

# Build
npm run build

Configuration

1. Set up OAuth2 Credentials

Set environment variables:

export GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GOOGLE_CLIENT_SECRET="your-client-secret"

Or create .env file:

GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret

2. Authenticate (First Time)

Run the setup flow:

npm run setup  # TODO: Implement OAuth web flow in future

This will:

  1. Open your browser to Google OAuth consent screen

  2. Request permissions for NotebookLM, Google Docs, and Drive

  3. Save credentials to ~/.notebooklm-mcp/credentials.json

Manual Testing

Before using the MCP server in production, we recommend following the manual testing guide to verify everything works correctly.

👉 Complete Manual Testing Guide

The guide walks you through:

  • Phase 1: No-auth metadata validation (5-10 min)

  • Phase 2: OAuth setup and Claude Code integration (10-15 min)

  • Phase 3: End-to-end workflow testing (15-20 min)

Quick test (after installation):

# Build the server
npm run build

# Run automated tests
npm test

# Expected: 89 tests passing (10 test suites)

For detailed testing including OAuth and Claude Code integration, see the Manual Testing Guide.

Usage

Start MCP Server

npm start

The server runs on stdio and can be used with Claude Code.

Configure in Claude Code

Add to your Claude Code MCP configuration:

Desktop: ~/.claude/desktop-config.json

{
  "mcpServers": {
    "notebooklm": {
      "command": "/path/to/notebooklm-mcp/bin/notebooklm-mcp",
      "env": {
        "GOOGLE_CLIENT_ID": "your-client-id",
        "GOOGLE_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Available MCP Tools

Metadata Operations

  • notebooklm_validate_metadata - Validate metadata against schema

  • notebooklm_get_metadata - Get metadata for notebook/source

  • notebooklm_set_metadata - Set metadata

  • notebooklm_query_metadata - Query by metadata filter

Notebook Operations

  • notebooklm_list_notebooks - List recently viewed notebooks

  • notebooklm_get_notebook - Get notebook details with sources

  • notebooklm_create_notebook - Create new notebook

  • notebooklm_delete_notebook - Delete notebook(s)

  • notebooklm_share_notebook - Share notebook with user

Source Operations

  • notebooklm_add_sources - Add sources to notebook

  • notebooklm_get_source - Get source details

  • notebooklm_remove_sources - Remove sources

Audio Overview Operations

  • notebooklm_generate_audio - Generate audio overview

  • notebooklm_delete_audio - Delete audio overview

Metadata Schema (v1.0)

Required Fields

{
  type: "notebook-source"  // Fixed value
  project: string          // Project name
  status: "active" | "archived" | "reference" | "in-progress"
}

Optional Fields

{
  area?: string           // PARA area (e.g., "vocation/spreetail")
  tags?: string[]         // Custom tags
  created?: string        // ISO date (YYYY-MM-DD)
  modified?: string       // ISO date (YYYY-MM-DD)
  customFields?: object   // Extensible custom metadata
}

Example

{
  "type": "notebook-source",
  "project": "palomino-nas",
  "status": "active",
  "area": "vocation/spreetail",
  "tags": ["infrastructure", "backup"],
  "created": "2026-02-17",
  "modified": "2026-02-17",
  "customFields": {
    "priority": "high",
    "owner": "brockbutler"
  }
}

Development

Run Tests

make test
# or
npm test

Watch Mode (TDD)

make test-watch
# or
npm run test:watch

Coverage Report

make test-coverage

Build

make build
# or
npm run build

Project Structure

/Users/brockstudio/Projects/notebooklm-mcp/
├── src/
│   ├── index.ts                    # Entry point
│   ├── server.ts                   # MCP server with 14 tools
│   ├── config.ts                   # Configuration
│   ├── validators/
│   │   └── schema.ts               # Metadata validation
│   ├── storage/
│   │   └── metadata-store.ts       # Local JSON store
│   ├── cache/
│   │   └── manager.ts              # TTL cache
│   ├── auth/
│   │   └── oauth.ts                # OAuth2 manager
│   ├── clients/
│   │   ├── notebooklm.ts          # NotebookLM API client
│   │   └── google-docs.ts         # Google Docs API client
│   └── managers/
│       └── metadata.ts             # Metadata orchestrator
├── tests/
│   ├── unit/                       # Unit tests
│   ├── integration/                # Integration tests
│   └── setup.ts                    # Test setup
├── bin/
│   └── notebooklm-mcp              # Executable wrapper
├── dist/                           # Compiled JavaScript
├── package.json
├── tsconfig.json
├── jest.config.js
├── Makefile
└── README.md

Runtime Files

~/.notebooklm-mcp/
├── credentials.json                # OAuth tokens (chmod 600)
├── metadata.json                   # Local metadata store
└── metadata.json.backup            # Backup (on corruption)

Implementation Status

✅ Completed (Tasks 1-14)

  • Project scaffold and configuration

  • Metadata validator with schema enforcement

  • Local JSON store with atomic writes

  • Cache manager with TTL

  • OAuth2 credentials storage and token refresh

  • Google Docs API client (stub)

  • NotebookLM API client (stub)

  • Metadata manager orchestration layer

  • MCP server with 14 tools

  • Comprehensive testing (89+ tests)

  • Integration and end-to-end tests

🔲 Future Enhancements (Post-MVP)

  • OAuth2 web flow setup wizard

  • Real Google Docs API integration

  • Real NotebookLM API integration

  • Advanced querying (full-text search)

  • Multi-device metadata sync

  • Cloud backup for metadata

Troubleshooting

"No credentials found"

Run the setup flow to authenticate with Google:

npm run setup  # TODO: Implement OAuth web flow

"Token refresh failed"

Your refresh token may have expired. Re-run setup:

rm ~/.notebooklm-mcp/credentials.json
npm run setup

"NotebookLM API not yet implemented"

The NotebookLM API operations are currently stubs. They will be implemented in a future phase with real API integration.

Contributing

This project follows TDD principles. All new features require tests.

License

MIT

Design Documents

  • Architecture: /Users/brockstudio/Projects/palomino-nas/docs/plans/2026-02-16-notebooklm-api-redesign.md

  • Implementation Plan: /Users/brockstudio/Projects/palomino-nas/docs/plans/2026-02-16-notebooklm-api-implementation.md

Available Tools

14 tools
notebooklm_add_sourcesB

Add sources to a notebook

ParametersJSON Schema
NameRequiredDescriptionDefault
sourcesYesSources to add
notebookIdYesNotebook ID

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only says 'Add sources to a notebook' and does not disclose side effects, authorization requirements, accepted source formats, duplicate handling, or whether the operation appends vs replaces.

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

Conciseness5/5

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

A single, direct sentence with no wasted words. The core operation is front-loaded and easy to parse.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and no item schema for sources, ths description is too sparse. An agent does not know what a valid source entry looks like (URL, file, structured object), what constraints exist, or what the result will be.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no meaning beyond the schema; sources and notebookId are described in only the most generic terms, but the schema at least lables them accurately.

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

Purpose5/5

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

The description clearly states a specific action (Add) and resource (sources to a notebook). The verb distinguishes it from sibling tools like remove_sources and get_source, so an agent can identify what this tool does even without inspecting the schema.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description merely restates the operation; it does not say when to prefer this tool over notebooklm_add_sources siblings, mention prerequisites, or note 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.

notebooklm_create_notebookC

Create a new notebook

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesNotebook title
descriptionNoNotebook description

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but it only restates the creation action. It discloses no return value, created-notebook identifier, persistence behavior, idempotency, or authorization requirements.

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

Conciseness5/5

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

The description is a single five-word sentence with no filler or redundant phrasing. It is maximally concise and front-loads the tool's purpose.

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

Completeness2/5

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

Despite complete parameter schema coverage, the tool has no annotations and no output schema, so the agent is left without information about what the create operation returns or what side effects to expect. The description alone is too thin for a mutating operation.

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

Parameters3/5

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

The input schema already describes both parameters (`title` and `description`) with 100% coverage, so the description does not need to add parameter semantics. It adds nothing beyond the schema, matching the baseline.

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

Purpose4/5

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

The description clearly states the operation ('Create') and the resource ('a new notebook'`), so an agent can tell what the tool does. It does not explicitly name or contrast sibling tools, but the action is unambiguous among the sibling set.

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

Usage Guidelines2/5

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

No guidance is given for when to use this tool versus siblings like notebooklm_list_notebooks, notebooklm_get_notebook, or notebooklm_share_notebook. The intended usage is only implied by the verb 'Create', with no prerequisites, exclusions, or alternatves.

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

notebooklm_delete_audioC

Delete audio overview

ParametersJSON Schema
NameRequiredDescriptionDefault
notebookIdYesNotebook ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does communicate that the operation is destructive, but it does not state whether deletion is permanent, whether it affects the notebook or its sources, or what happens after deletion. For a deletion 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.

Conciseness4/5

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

The description is extremely concise and front-loaded with the verb 'Delete', with no wasted words. However, it borders on under-specification, so it is efficient but not richly informative.

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

Completeness2/5

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

For a destructive tool with no annotations, no output schema, and only a one-line description, important context is missing: the scope of deletion, irreversibility, side effects, and expected return behavior. Agents may understand the basic action but cannot fully anticipate the consequences of calling this tool.

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

Parameters3/5

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

The schema already documents notebookId with 'Notebook ID' and has 100% description coverage, so the baseline is 3. The description adds no additional meaning about the parameter, such as where to find the ID or what values are valid.

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

Purpose4/5

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

The description uses a specific verb ('Delete') and a specific resource ('audio overview'), so the core action is unambiguous. It is distinguishable from siblings like notebooklm_generate_audio and notebooklm_delete_notebook by resource and action, but it does not explicitly name alternatives or clarify whether it deletes all audio overviews for the notebook or a specific one.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as notebooklm_remove_sources or notebooklm_delete_notebook. No context, prerequisites, or exclusions are provided, so an agent receives no help choosing or invoking the tool appropriately.

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

notebooklm_delete_notebookC

Delete notebook(s)

ParametersJSON Schema
NameRequiredDescriptionDefault
notebookIdsYesNotebook IDs to delete

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behaviors, but it simply says 'Delete' without stating whether the deletion is permanent, whether it cascades to sources or audio, or whether any confirmation or special permissions are needed. For a destructive 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.

Conciseness4/5

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

The description is extremely concise and front-loaded: 'Delete notebook(s)' communicates the essential action with no waste. It does not restate the tool name verbatim but is close to it; however, the plural and simplicity make it an efficient, appropriately sized description for a simple one-parameter tool.

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

Completeness2/5

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

The description is minimally adequate for identifying the action, but it lacks important contextual information expected for a destructive tool with no annotations and no output schema. It does not mention consequences, reversibility, or scope of deletion, leaving an agent uncertain about the impact and whether any additional safeguards or confirmation steps are needed.

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

Parameters3/5

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

The input schema already documents the notebookIds parameter with a description, and schema coverage is 100%, so the baseline is 3. The tool description adds no additional semantic information about the parameter beyond what the schema provides. This is acceptable when the schema is complete.

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

Purpose4/5

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

'Delete notebook(s)' states a clear verb (delete) and direct object (notebook(s)), which distinguishes it from sibling tools like get, create, or list. The plural 's' hints at batch deletion, matching the array parameter. It could be more explicit about whether the deletion is permanent, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no exclusions, and no prerequisites. An agent is left to infer that this is the tool for removing notebooks, but there is no mention of scenarios where another tool would be more appropriate or any state requirements.

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

notebooklm_generate_audioC

Generate audio overview for a notebook

ParametersJSON Schema
NameRequiredDescriptionDefault
optionsNo
notebookIdYesNotebook ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Generate audio overview,' omitting important traits such as whether generation is asynchronous, whether pre-existing sources are required, or what resource is created. There is no contradiction with annotations because none exist.

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

Conciseness4/5

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

The description is a single sentence with no wasted words and front-loads the core action. It is efficient, though its brevity comes at the cost of behavioral and contextual detail.

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

Completeness2/5

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

Given the absence of annotations and output schema, the description is not complete enough. It fails to mention the customization options available, any asynchronous or long-running behavior, or what the result of generation looks like, leaving an agent with insufficient context for confident invocation.

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

Parameters3/5

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

Schema description coverage is effectively complete: notebookId, sourceIds, episodeFocus, and languageCode all have descriptions. The description itself adds no parameter-level meaning, so it stays at the baseline for schema-covered parameters.

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

Purpose4/5

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

The description states a specific verb and resource: 'Generate audio overview for a notebook.' This clearly distinguishes it from sibling tools like deleting audio or managing sources. It is less than a 5 because it does not elaborate on what an 'audio overview' is or explicitly contrast itself with any sibling.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor on prerequisites such as the notebook needing to exist or contain sources. The description simply states the action without any contextual or exclusionary information.

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

notebooklm_get_metadataC

Get metadata for a notebook or source

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesResource ID
typeYesType of resource

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read-only action, but the description does not explain what metadata is returned, whether the operation can fail for missing resources, or any authentication or access considerations.

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

Conciseness4/5

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

The description is a single, clear sentence with no filler or redundancy. It is appropriately front-loaded, though it could have included a brief usage hint without becoming verbose.

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

Completeness2/5

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

With no output schema, no annotations, and a generic phrase like 'metadata', the description is not complete enough for an agent to know what to expect. The tool is simple, but the description still leaves notable gaps around return content, edge cases, and differentiation from the query_metadata sibling.

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

Parameters3/5

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

The input schema already provides 100% parameter coverage with descriptions for both id and type, and the enum defines the accepted resource types. The description adds no parameter-specific meaning beyond what the schema 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.

Purpose4/5

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

The description states a clear verb ('Get') and a specific resource ('metadata for a notebook or source'), and the type enum in the schema reinforces the two target resources. It is not a tautology and is easily distinguished from set/validate metadata siblings, though it does not explicitly distinguish itself from query_metadata.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus notebooklm_query_metadata, notebooklm_validate_metadata, or notebooklm_set_metadata. The description implies a simple read operation but leaves the choice between get and query metadata entirely to inference.

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

notebooklm_get_notebookB

Get notebook details with sources

ParametersJSON Schema
NameRequiredDescriptionDefault
notebookIdYesNotebook ID

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the burden of behavioral disclosure, but it only says it gets notebook details with sources. It does not mention authentication requirements, response shape, whether sources are summarized or full, or any other behavioral context.

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

Conciseness5/5

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

The description is a single concise phrase with no filler or redundant information. It is front-loaded with the key intent and adequately sized for the simple operation.

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

Completeness3/5

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

For a one-parameter getter, the description states enough to attempt the call, but without an output schema or usage guidance it leaves the return structure and selection among sibling tools unclear. It is minimally viable but has clear gaps.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter with a basic 'Notebook ID' description. The tool description adds no parameter-specific detail, so the schema already carries the meaning; baseline 3 applies.

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

Purpose5/5

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

The description names a specific verb ('Get') and resource ('notebook details with sources'), making the operation clear. It distinguishes itself from sibling tools like list_notebooks (which lists) and get_source (which targets a single source).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as notebooklm_get_metadata or notebooklm_get_source. The description does not state exclusions, prerequisites, or typical scenarios.

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

notebooklm_get_sourceC

Get source details

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceIdYesSource ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get source details' implies a read-only operation, but gives no information about permissions, response shape, errors, or whether the sourceId must belong to a specific notebook. This is minimal transparency for a tool with zero annotation support.

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

Conciseness5/5

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

The description is a single, concise sentence with no filler or redundancy. It is front-loaded with the action and resource, which is exactly what the format calls for, even if richer detail is absent.

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

Completeness2/5

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

Given no output schema and no annotations, the description should provide more context about what 'source details' means, what information is returned, and any prerequisite context. The one-parameter schema is simple, but the missing behavioral and contextual information leaves the agent under-informed.

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

Parameters3/5

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

The only parameter, sourceId, has a tautological description ('Source ID') and full 100% schema coverage, so the schema already documents the parameter. The description text adds no additional meaning about sourceId format, ownership, or how to obtain valid values.

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

Purpose4/5

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

The description clearly identifies the action (get) and resource (source details), so an agent knows this is a retrieval operation on a source. It does not meaningfully distinguish itself from siblings like notebooklm_get_metadata or notebooklm_get_notebook, since 'details' is not elaborated.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. For example, there is no mention that notebooklm_get_metadata should be used for metadata retrieval, or that this returns full source details instead. The agent must infer usage entirely from the 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.

notebooklm_list_notebooksA

List recently viewed notebooks

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoNumber of notebooks to return

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral weight. It discloses that this is a list/read operation and that results are limited to recently viewed notebooks, but it does not mention pagination defaults, ordering, result shape, or access restrictions. Some behavior is conveyed, but not deeply.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word in 'List recently viewed notebooks' contributes to understanding.

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

Completeness3/5

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

For a simple one-parameter list call, the description is mostly adequate, but with no output schema it does not clarify what a returned notebook object looks like or what 'recently viewed' means in terms of ordering and time window. It is not severely incomplete, but has clear gaps.

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

Parameters3/5

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

The input schema covers pageSize with the description 'Number of notebooks to return' (100% coverage), so the baseline is 3. The tool description adds nothing about pageSize behavior such as default or maximum values.

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

Purpose5/5

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

The description names a specific verb ('List'), a resource ('notebooks'), and a scope qualifier ('recently viewed'), making it distinct from sibling operations like get_notebook or create_notebook. This is enough for an agent to know what the tool does without opening the schema.

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

Usage Guidelines4/5

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

The phrase 'recently viewed' provides clear context for when this tool is appropriate: a user wants their recent notebooks. It does not explicitly name alternatives or exclusions, but the sibling list makes the read/list intent obvious compared to metadata or mutation tools.

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

notebooklm_query_metadataC

Query notebooks or sources by metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesType of resource
filterYesMetadata filter

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Query' implies read-only, but the description does not disclose return format, pagination, filtering semantics (exact vs partial match), or behavior on no results. It is not misleading, but it is far from transparent for an agent.

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

Conciseness5/5

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

The description is a single concise sentence with no wasted words. It front-loads the action and resource, making it quick for an agent to parse.

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

Completeness2/5

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

For a tool with a nested filter object and no output schema or annotations, the description is too sparse. It lacks guidance on filter structure, result shape, and how this query differs from sibling tools, leaving significant gaps for an agent selecting and invoking the tool correctly.

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

Parameters3/5

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

The input schema describes both parameters with 100% coverage: 'type' has an enum with description and 'filter' is described as 'Metadata filter'. The description adds only minimal value by confirming the filter is metadata-based, so baseline 3 is appropriate given schema coverage.

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

Purpose4/5

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

The description states a specific verb ('Query'), resource ('notebooks or sources'), and search criterion ('by metadata'), so an agent can grasp the core purpose. It is somewhat distinct from sibling metadata tools because it implies searching resources by metadata rather than retrieving metadata for a resource, but it does not explicitly distinguish that behavior.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like notebooklm_get_metadata or notebooklm_list_notebooks. The description gives no exclusions, prerequisites, or context for choosing between metadata-related siblings. An agent would have to infer usage from the name alone.

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

notebooklm_remove_sourcesB

Remove sources from a notebook

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceIdsYesSource IDs to remove

TDQS

B3.4/5.0
Behavior2/5

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

There are no annotations to cover safety or side effects, and the description only says 'Remove sources' without disclosing whether removal is permanent, whether it affects generated audio or other notebook content, or what state the sources enter after removal. This leaves the agent without needed behavioral context 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.

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. Every word contributes to understanding the tool's purpose.

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

Completeness2/5

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

For a destructive mutation with no annotations, output schema, or elaboration on side effects, this description is thin. It tells what is removed but does not say what happens afterward, whether the operation is reversible, or what an agent should expect as a result. More context would be needed for confident invocation.

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

Parameters3/5

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

The input schema fully covers the sole parameter sourceIds with the description 'Source IDs to remove.' Schema coverage is 100%, so the description does not need to add much; it offers no extra semantic detail but also leaves no gap.

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

Purpose5/5

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

The description states exactly what the tool does with a specific verb and resource: 'Remove sources from a notebook.' This clearly distinguishes it from sibling tools like notebooklm_add_sources and notebooklm_get_source.

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

Usage Guidelines3/5

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

Usage is implied: use this when sources need to be removed from a notebook. However, there is no explicit guidance about when to choose this over alternatives, nor any caveats about prerequisites or relationships to other operations such as adding or fetching sources.

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

notebooklm_set_metadataC

Set metadata for a notebook or source

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesResource ID
typeYesType of resource
metadataYesMetadata to set

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavior, but only states that metadata is 'set'. It does not explain whether existing metadata is replaced or merged, whether any validation is performed, or what side effects occur. This is a significant gap for a mutating operation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler words. It conveys the core purpose efficiently without redundancy.

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

Completeness2/5

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

The tool has three required parameters including a nested metadata object, no output schema, and no annotations, yet the description provides only a high-level purpose. It does not cover semantics of 'set' (merge vs. replace), metadata shape constraints, or error behavior. This leaves an agent without enough context to invoke the tool correctly.

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

Parameters3/5

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

The input schema already describes all three parameters ('Resource ID', 'Type of resource', 'Metadata to set'), so schema coverage is complete. The tool description adds little beyond the schema, except confirming the type parameter selects a notebook or source. Baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb ('set') and resource ('metadata') and enumerates the target resource types ('notebook or source'), making it clear what the tool does. It distinguishes from siblings such as get_metadata and query_metadata through the 'set' verb, though it does not explicitly name alternatives. Overall clear and unambiguous.

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

Usage Guidelines2/5

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

The description offers no guidance on when to choose this tool over siblings like validate_metadata or query_metadata. No conditions, prerequisites, or exclusions are provided. The only implied usage is from the verb 'set', 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.

notebooklm_share_notebookB

Share notebook with a user

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesAccess role
userEmailYesUser email address
notebookIdYesNotebook ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility for disclosing behavioral traits. It only states 'Share notebook with a user' and does not mention side effects, permission requirements, idempotency, whether an invitation is sent, or what happens to existing permissions. For a mutating access-control action, this is a notable gap.

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

Conciseness5/5

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

The description is a single clear sentence with no filler or redundant wording. It is front-loaded with the action and resource, and every word contributes to the tool's meaning.

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

Completeness3/5

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

For a simple share operation with all parameters documented in the schema, this is minimally viable. However, with no output schema and no annotations, the description does not disclose return behavior, failure modes, or access-control side effects, leaving some uncertainty for an agent choosing and invoking the tool.

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

Parameters3/5

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

The input schema already describes all three parameters with 100% coverage, so the baseline is 3. The description adds minimal semantic value beyond confirming that the user is the share recipient; it does not further explain role meanings or format expectations, but the schema's role enum and descriptions are adequate.

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

Purpose4/5

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

Describes a specific action ('Share'), resource ('notebook'), and recipient ('a user'), making the tool's core function clear. It is distinct from sibling tools like notebooklm_create_notebook and notebooklm_delete_notebook, though it does not explicitly name alternatives.

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

Usage Guidelines3/5

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

The intended use case is implied by the verb 'Share' and the notebook/user/role parameters, so an agent can reasonably infer when to call this tool. There is no explicit guidance about when not to use it or how it compares to alternatives, but no sibling tool appears to perform sharing either, so the omission is less harmful.

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

notebooklm_validate_metadataC

Validate metadata against schema

ParametersJSON Schema
NameRequiredDescriptionDefault
metadataYesMetadata to validate

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the burden of explaining behavior. 'Validate' implies a read-only check, but the description does not disclose whether invalid metadata returns a boolean, throws an error, or reports detailed validation failures. Side-effect and error behavior are completely unspecified.

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

Conciseness5/5

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

The description is a single, four-word sentence with no filler or redundancy. It front-loads the core action and is maximally economical for the basic purpose it conveys.

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

Completeness2/5

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

For a tool with no output schema and no annotations, the description leaves return values, error behavior, and the exact validation schema unspecified. It is enough to guess the general purpose but not enough to fully anticipate the tool's behavior after invocation.

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

Parameters3/5

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

The only parameter, metadata, is already well described in the schema as 'Metadata to validate'. The description adds no additional meaning about allowed shape, required keys, or validation rules. With 100% schema coverage, the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a specific action ('validate') applied to metadata against a schema, which distinguishes it from the sibling get/set/query metadata tools. However, it adds little beyond the tool name and does not specify which schema is used or what validation entails.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives like notebooklm_set_metadata or notebooklm_query_metadata. It does not mention validating before setting metadata, exclusions, or any workflow context.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 14 tool updatesv1.0.0
    • First observednotebooklm_add_sources
    • First observednotebooklm_create_notebook
    • First observednotebooklm_delete_audio
    • First observednotebooklm_delete_notebook
    • First observednotebooklm_generate_audio
    • First observednotebooklm_get_metadata
    • First observednotebooklm_get_notebook
    • First observednotebooklm_get_source
    • First observednotebooklm_list_notebooks
    • First observednotebooklm_query_metadata
    • First observednotebooklm_remove_sources
    • First observednotebooklm_set_metadata
    • First observednotebooklm_share_notebook
    • First observednotebooklm_validate_metadata

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct resource-action combination: metadata operations are clearly separated into validate/get/set/query, notebook operations into list/get/create/delete/share, and sources/audio each have their own dedicated tools. Even get_notebook and get_source are unambiguous because one returns notebook details with sources and the other returns a specific source's details.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern with the notebooklm_ prefix. Action verbs such as get, set, list, create, delete, add, remove, generate, and share are used predictably across the tool set.

Tool Count5/5

14 tools is well within the ideal range for a domain-specific MCP server. The count covers notebooks, sources, metadata, sharing, and audio without feeling bloated or thin.

Completeness4/5

The tool surface provides strong lifecycle coverage for notebooks, sources, metadata, and audio overviews. Minor gaps exist such as no explicit notebook update/rename operation, no standalone list-sources tool, and no unshare or list-audio tools, but these are workable gaps rather than critical dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/brock-run/notebooklm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server