Productivity & teams
Redmine
Issues, time entries and projects in your Redmine, from your agent.
12 endpoints
Create NotebookLM notebooks, add sources, ask questions and generate Audio Overviews from Claude, ChatGPT, n8n or a script. Sign in to Google once in your Cloud Browser. Nothing to install, nothing to host.
14 tools Read and write
Google has no MCP server for NotebookLM and no API for personal accounts (checked 6 Nov 2026). Its one official API is for NotebookLM Enterprise, in v1alpha preview. Cotlet adds 14 NotebookLM tools for the account you already have: no API key, no Google Cloud project, hosted 24/7, inside the ChatGPT and Claude apps, with one Cotlet account for many apps.
| What you need | Enterprise API | GitHub MCP server | Cotlet |
|---|---|---|---|
| A free or personal Google account | No, Enterprise license | Yes | Yes |
| Create notebooks, add sources, share | Yes, in preview | Yes | Yes, sharing after your OK |
| Ask a notebook, with citations | Not documented | Yes | Yes |
| Save and read notes | Not documented | Yes | Yes |
| Generate and download an Audio Overview | Create and delete only | Yes | Yes |
| No API key, no install, runs 24/7 | Google Cloud project and login | Runs on your computer | Hosted, in Claude and ChatGPT |
Checked 6 Nov 2026. Sources: NotebookLM Enterprise: notebooks API · NotebookLM Enterprise: sources API · NotebookLM Enterprise: Audio Overview API · Zapier: Google NotebookLM not yet supported · Gemini Notebook Help: plans
Use your own Google account in your Cloud Browser.
Add the Cotlet address, or make an API key.
Build notebooks, ask them, make audio.
We never keep your Google password, and a notebook is not shared or deleted until you approve it. Who can see your session
Add one address to Claude, ChatGPT, Cursor, Codex or n8n. NotebookLM appears next to your other apps once you enable it.
Enable NotebookLM for agents. Sign up, sign in to your Google account in the Cloud Browser, then press Enable for agents on NotebookLM.
Add the Cotlet address. Add https://cotlet.dev/mcp/v1 as an MCP server or connector in your agent.
Approve the connection. Chat apps ask you to sign in to Cotlet. Editors, n8n and scripts use an API key from the console.
One shared address, https://cotlet.dev/mcp/v1, also carries NotebookLM next to your other apps. If you enable NotebookLM after connecting, refresh the connector so the new tools show up.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key> Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key> Sign in to Google in your Cloud Browser and enable NotebookLM for agents. What a call can do follows your access to each notebook: owner, editor or viewer.
Create a Cotlet API key with access to NotebookLM and its read operations. Store it as COTLET_API_KEY in your environment or your automation platform's credential store.
curl https://cotlet.dev/api/v1/notebooklm/notebooks \
-H "Authorization: Bearer $COTLET_API_KEY" A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.
{
"status": "success",
"app": "notebooklm",
"tool": "list_notebooks",
"result": {
"notebooks": [
{
"notebook_id": "nb_7f3a91c2",
"title": "Customer interviews",
"sources": 12,
"role": "owner",
"last_opened": "2026-11-03"
},
{
"notebook_id": "nb_2c8d40e1",
"title": "Weekly reading",
"sources": 7,
"role": "owner",
"last_opened": "2026-11-04"
},
{
"notebook_id": "nb_91b6d3a7",
"title": "Q4 research",
"sources": 5,
"role": "editor",
"last_opened": "2026-10-28"
}
],
"next_cursor": null
}
} Read result.notebooks and pass result.next_cursor unchanged as cursor until it is null. Keep notebook IDs in your workflow so later runs update the same notebook.
Source text is not returned by list_sources. An Audio Overview takes a couple of minutes, so call generate_audio_overview, poll list_studio_outputs and fetch the link with download_audio_overview when the status is ready.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Each Monday, call add_source for the links in your saved-articles sheet, then generate_audio_overview and post the download link to Slack. |
| Python or Node.js | REST API | Call ask_notebook with a fixed question per notebook and write the answers and citations to a report. |
| Make | HTTP > Make a request | Call list_notebooks and list_sources to build a sheet of notebooks and their failed imports. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and comparisons.
Cotlet reads and writes NotebookLM; your workflow steps write to the destination you choose. These HTTP workflows need no native Cotlet connector and no prebuilt template.
The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.
Only the owner can delete a notebook. Sharing gives viewer or editor access by email.
Returns each notebook with its id, title, source count and last opened date, in the order NotebookLM shows them. It includes notebooks shared with you and marks your role as owner, editor or viewer. Large lists come back in pages with a next_cursor.
MCP callnotebooklm_read → list_notebooks
REST endpointGET https://cotlet.dev/api/v1/notebooklm/notebooks
| Name | Type | Description |
|---|---|---|
| cursor string | string | Next page cursor from the previous call. |
{
"notebooks": [
{
"notebook_id": "nb_7f3a91c2",
"title": "Customer interviews",
"sources": 12,
"role": "owner",
"last_opened": "2026-11-03"
},
{
"notebook_id": "nb_2c8d40e1",
"title": "Weekly reading",
"sources": 7,
"role": "owner",
"last_opened": "2026-11-04"
},
{
"notebook_id": "nb_91b6d3a7",
"title": "Q4 research",
"sources": 5,
"role": "editor",
"last_opened": "2026-10-28"
}
],
"next_cursor": null
} Returns the title, your role, the summary NotebookLM shows at the top of the chat, and the ids of the sources, notes and Studio outputs. It does not return source text. Use list_sources for source details and list_studio_outputs for generated items.
MCP callnotebooklm_read → get_notebook
REST endpointGET https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
{
"notebook_id": "notebook_8c41d2"
} {
"notebook_id": "nb_7f3a91c2",
"title": "Customer interviews",
"role": "owner",
"summary": "Twelve interview transcripts about onboarding, pricing and support response times.",
"sources": 12,
"notes": 3,
"studio_outputs": 2
} Returns the new notebook_id. You own the notebook. It reaches no one and is undone with delete_notebook, so it does not wait for your OK.
MCP callnotebooklm_write → create_notebook
REST endpointPOST https://cotlet.dev/api/v1/notebooklm/notebooks
| Name | Type | Description |
|---|---|---|
| title string required | string | Notebook title. |
{
"title": "title"
} {
"notebook_id": "nb_c4e5a812",
"title": "Competitor pricing",
"sources": 0,
"role": "owner"
} Removes the notebook with its sources, notes and Studio outputs, and links shared from it stop working. Only the owner can delete it; any other role fails. The call cannot be undone through Cotlet. By default you confirm each call; you can switch that off for this tool.
MCP callnotebooklm_write → delete_notebook
REST endpointDELETE https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
{
"notebook_id": "notebook_8c41d2"
} {
"notebook_id": "nb_c4e5a812",
"deleted": true
} Web pages, public YouTube videos with captions and pasted text. Files and Google Drive items are not added by these tools.
Returns each source with its id, title, type (web URL, YouTube, PDF, Google Doc, pasted text or other file) and import status. A source that failed to import is listed with the reason NotebookLM gave. Source text is not returned.
MCP callnotebooklm_read → list_sources
REST endpointGET https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}/sources
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
{
"notebook_id": "notebook_8c41d2"
} {
"sources": [
{
"source_id": "src_a41",
"title": "Interview 04 transcript.pdf",
"type": "pdf",
"status": "ready"
},
{
"source_id": "src_a42",
"title": "Pricing page teardown",
"type": "web_url",
"status": "ready"
},
{
"source_id": "src_a43",
"title": "Onboarding walkthrough",
"type": "youtube",
"status": "failed",
"reason": "No captions available"
}
]
} Returns candidate sources with a title, address and short description, as the Fast Research panel shows them. Nothing is imported: pass the ones you want to add_source. Results that are not imported are discarded.
MCP callnotebooklm_read → search_sources
REST endpointGET https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}/sources/search
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
| query string required | string | What to find sources for. |
| where string | string | web or drive. Defaults to web. |
{
"notebook_id": "notebook_8c41d2",
"query": "query"
} {
"results": [
{
"title": "EU AI Act: what small businesses must do",
"url": "https://example.com/ai-act-small-business",
"description": "Overview of obligations by risk level."
},
{
"title": "AI Act timeline",
"url": "https://example.org/ai-act-timeline",
"description": "Dates when each rule applies."
}
]
} Returns the source_id and its status. For a web page NotebookLM imports only the text of the HTML, and paywalled pages are not supported. For YouTube only public videos with captions work, and only the transcript is imported. Files and Google Drive items are not added by this tool. A notebook holds at most 50 sources on the free plan. It reaches no one and a source is removed in NotebookLM, so it does not wait for your OK.
MCP callnotebooklm_write → add_source
REST endpointPOST https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}/sources
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
| type string required | string | web_url, youtube or text. |
| url string | string | Address for web_url and youtube. |
| text string | string | Content for type text. |
| title string | string | Optional title for pasted text. |
{
"notebook_id": "notebook_8c41d2",
"type": "type"
} {
"source_id": "src_b17",
"notebook_id": "nb_c4e5a812",
"type": "web_url",
"title": "Pricing page teardown",
"status": "ready"
} Answers come only from the notebook's sources. Nothing becomes a note until you save it.
Returns the chat answer and the sources it cites. NotebookLM chat answers only from the notebook's sources, so a question they do not cover gets an answer that says so. The question and answer appear in the notebook chat. Nothing is saved as a note unless you call save_note.
MCP callnotebooklm_read → ask_notebook
REST endpointGET https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}/ask
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
| question string required | string | The question or instruction for the chat. |
| sources array | array | Optional source_ids to limit the answer to. Defaults to all selected sources. |
{
"notebook_id": "notebook_8c41d2",
"question": "question"
} {
"answer": "The top three complaints are slow setup, unclear pricing and late replies from support.",
"citations": [
{
"source_id": "src_a41",
"title": "Interview 04 transcript.pdf"
},
{
"source_id": "src_a42",
"title": "Pricing page teardown"
}
]
} Returns each note with its id, title and text. Notes appear in the Sources panel next to uploaded sources, so they can be cited in chat answers. Notes you save from chat are included.
MCP callnotebooklm_read → list_notes
REST endpointGET https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}/notes
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
{
"notebook_id": "notebook_8c41d2"
} {
"notes": [
{
"note_id": "note_11",
"title": "Top complaints",
"text": "1. Slow setup. 2. Unclear pricing. 3. Late replies from support."
}
]
} Returns the note_id. The note appears in the Sources panel, so chat answers and Studio outputs can use it. It reaches no one and can be deleted in NotebookLM, so it does not wait for your OK.
MCP callnotebooklm_write → save_note
REST endpointPOST https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}/note/save
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
| text string required | string | The note text. |
| title string | string | Optional note title. |
{
"notebook_id": "notebook_8c41d2",
"text": "text"
} {
"note_id": "note_12",
"notebook_id": "nb_7f3a91c2",
"title": "Top complaints",
"saved": true
} Generating needs edit access. An Audio Overview finishes within a couple of minutes.
Returns each output with its id, type, title and status. Types include Audio Overview, report, flashcards, quiz, infographic, slide deck, mind map and video overview, as listed in NotebookLM's Studio panel. An Audio Overview that is still generating has status generating; it normally finishes within a couple of minutes.
MCP callnotebooklm_read → list_studio_outputs
REST endpointGET https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}/studio-outputs
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
| type string | string | Optional filter, for example audio_overview. |
{
"notebook_id": "notebook_8c41d2"
} {
"outputs": [
{
"output_id": "out_5d2",
"type": "audio_overview",
"title": "Deep Dive",
"status": "ready",
"created_at": "2026-11-04T08:12:00Z"
},
{
"output_id": "out_5d3",
"type": "mind_map",
"title": "Mind map",
"status": "ready",
"created_at": "2026-11-03T15:40:00Z"
}
]
} Returns an output_id with status generating. NotebookLM runs it in the background and it may take a couple of minutes; poll list_studio_outputs, then call download_audio_overview. You need edit access to the notebook. It reaches no one, so it does not wait for your OK.
MCP callnotebooklm_write → generate_audio_overview
REST endpointPOST https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}/audio-overview/generate
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
| format string | string | deep_dive, brief, critique or debate. Defaults to deep_dive. |
| length string | string | shorter, default or longer. Longer and shorter are English only. |
| language string | string | Language code. Defaults to the language set in your Google Account. |
| prompt string | string | Optional instructions to focus on a topic or set the expertise level. |
{
"notebook_id": "nb_2c8d40e1",
"format": "brief",
"length": "default",
"prompt": "Focus on what changed since last week."
} {
"output_id": "out_5e1",
"notebook_id": "nb_2c8d40e1",
"format": "deep_dive",
"status": "generating"
} Returns a temporary link to the audio file. It fails while the Audio Overview is still generating. NotebookLM may block downloads for notebooks that use a Play Books ebook as a source, depending on the publisher.
MCP callnotebooklm_read → download_audio_overview
REST endpointGET https://cotlet.dev/api/v1/notebooklm/notebooks/{notebook_id}/audio-overviews/download
| Name | Type | Description |
|---|---|---|
| notebook_id string required | string | Notebook ID from list_notebooks. |
| output_id string required | string | Output ID of an audio_overview from list_studio_outputs. |
{
"notebook_id": "notebook_8c41d2",
"output_id": "output_8c41d2"
} {
"output_id": "out_5d2",
"status": "ready",
"download_url": "https://files.cotlet.dev/example/deep-dive.m4a",
"expires_in_minutes": 60
} Your signed-in Google profile, encrypted with AES-256-GCM, in Finland. Not the password.
The 14 NotebookLM tools. Never the cookie.
The notebooks you can open: your own and those shared with you.
Google plan, password, two-factor and your other Google apps.
A new device may ask for a code. You type it in, we never do.
Disable for agents, reset the browser, or sign out in your Google account.
Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or third-party pentest yet.
| Plan | Notebooks | Sources per notebook |
|---|---|---|
| Standard (free) | 100 | 50 |
| Google AI Plus | 200 | 100 |
| Google AI Pro | 500 | 300 |
| Google AI Ultra (20 TB) | 500 | 500 |
| Google AI Ultra (30 TB) | 500 | 600 |
Google marks these limits "Subject to Change". Sharing a notebook does not change the source limit for anyone you share it with.
Google has renamed the product once already: its help center now says Gemini Notebook. When NotebookLM moves a button or renames a field, the fix happens on our side and your prompts keep working. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Create a notebook | Delete it; the delete tool asks first |
| Add a source | Remove it in the Sources panel |
| Save a note | It sits in the Sources panel next to your sources; remove it there |
| Generate an Audio Overview | Delete it in the Studio panel, which needs edit access |
| Share a notebook | Change access in NotebookLM; the invitation is already sent |
| Delete a notebook | No, not through Cotlet |
2 of 14 tools ask first: share_notebook and delete_notebook. Creating a notebook, adding a source, saving a note and generating audio reach no one, so they run at once. Switch the wait off per tool for a scheduled run.
Deleting a notebook removes its sources, notes and Studio outputs, and links shared from it stop working.
{
"name": "generate_audio_overview",
"arguments": {
"notebook_id": "nb_2c8d40e1",
"format": "brief",
"length": "default",
"prompt": "Focus on what changed since last week."
}
} curl -X POST https://cotlet.dev/api/v1/notebooklm/notebooks/nb_2c8d40e1/audio-overview/generate \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"format":"brief","length":"default","prompt":"Focus on what changed since last week."}' {
"output_id": "out_5e1",
"notebook_id": "nb_2c8d40e1",
"format": "brief",
"status": "generating"
} Scripts and cron jobs reach the same tools over REST with the same key and price. A failed call costs nothing. The tools table lists the REST path of each tool.
About $18 a monthfor a researcher building 4 notebooks and one weekly Audio Overview, 3,060 credits. Your Google plan is billed by Google as before.
| Job | Calls | Credits |
|---|---|---|
| Build a notebook from 10 links | 12 × 4 | 480 |
| Weekly Audio Overview of the reading | 9 × 4 | 360 |
| Ask a notebook and save the answer | 2 × 20 | 400 |
| Find and import sources on a topic | 7 × 4 | 280 |
| Share a notebook with the team | 2 × 2 | 40 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 3,060 |
The month is our example, not a measured average: Google publishes no typical account size. It fits inside the free plan's 100 notebooks and 50 sources per notebook. Dollars at the $29 pack rate.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| jacob-bd/gemini-notebook-mcp-cli | MCP server and CLI, 55 tools, MIT, 6,468 stars, last commit 5 Nov 2026. | You install and run it on your computer. Its sign-in cookies last about 2 to 4 weeks. |
| teng-lin/notebooklm-py | Python library and CLI with agent skills, MIT, 20,133 stars, last commit 5 Nov 2026. | A library for developers, run on your own machine. |
| roomi-fields/notebooklm-mcp | MCP server plus a local HTTP REST API for n8n, Zapier and Make, 221 stars, last commit 30 Oct 2026. | Runs on your own machine. |
| PleasePrompto/notebooklm-mcp | MCP server that drives Chrome, 3,443 stars. | Archived, last commit 10 Sep 2026. |
| Google NotebookLM Enterprise API | Official REST API for notebooks, sources and Audio Overviews. | Enterprise license and Google Cloud role, v1alpha preview, no chat or notes methods documented. |
| Kortex MCP | Hosted MCP address that relays calls through a Chrome extension; $9.99 a month on Kortex Pro. | Chrome must stay open with the extension signed in. |
A GitHub server is free and fine on your own laptop. Google's Enterprise API suits a company with licences and a Cloud project. Cotlet is the hosted option for the account you already have: it keeps working when your computer is off and runs inside the ChatGPT and Claude apps.
Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev with questions about the NotebookLM tools.
Sign up at cotlet.dev, log in to NotebookLM once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your NotebookLM account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in NotebookLM: build a notebook from a list of links; turn weekly reading into an Audio Overview; ask a notebook and save the answer. You ask in plain words, and anything that reaches other people waits for your OK first.
Create a free account at https://cotlet.dev, open NotebookLM under Integrations in the console and sign in to Google in the Cloud Browser. The trial starts with your first app, no card asked.
Yes. Cotlet works in the NotebookLM you open with your Google account, so it does not need the Enterprise license that the official API requires (Google Cloud docs, checked 5 Nov 2026). Your access to each notebook still counts: generating or deleting an Audio Overview needs edit access, and only the owner can delete a notebook.
Web pages, public YouTube videos and pasted text. NotebookLM imports only the text of a web page and only the transcript of a YouTube video, and a video needs captions (Google's help center). Uploading files and picking Google Drive items are not covered by these tools.
Yes. Google's help center now calls NotebookLM "Gemini Notebook" (checked 6 Nov 2026). The app is the same, and Cotlet uses it the way you do in the browser.
Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.
Only the door is different. Both expose the same 14 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Google.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy