sourcebolt
OCI · GHCR.IO/CANDIDLOOM-HUB/SOURCEBOLT · 2 COMPONENTS
Fast MCP server for Google NotebookLM: notebooks, sources, cited chat, research. Unofficial.
Available components
Last scanned (9 hours ago)
Scores higher than 68% of OCI servers
Category Education and Research
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: this image's dependency list comes from an SBOM its publisher attached, which nothing verifies, so we will not report it as a clean result.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this image's dependency list comes from an SBOM its publisher attached. It names packages and versions but not whether each is deprecated, still maintained or linked to its source, so there is nothing we can fairly grade.Unverified
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 14 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability69
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3872 tokens (~129/item across 30 items; 30 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management53
- Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 30 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 26 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 24 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Oct 26 0
- Package version: 0.3.1 → 0.3.3 functional
- Package version: 0.3.1 → 0.3.2 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed oci/ghcr.io/candidloom-hub/sourcebolt@0.3.3
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
account_settings ~72
Read the account's quota windows, or set the output language when output_language is given. The language setting slot is not live-verified (the call is sent, but Google may ignore or reject it).
| Name | Type | Req | Description |
|---|---|---|---|
| output_language | string | – | language code to set, for example en or de; omit to only read |
| Name | Type | Req | Description |
|---|---|---|---|
| language_set | boolean | – | – |
| output_language | string | – | – |
| quota | object | yes | – |
No examples provided.
auth_login ~115
Not available through MCP: sign-in needs the local credential store, and cookies should not pass through a chat. Returns UNSUPPORTED_BY_TRANSPORT with the CLI command to run instead (sourcebolt login --import, --browser or --attach).
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | – | path of a cookie export file (method import) |
| host | string | – | NotebookLM host, for example notebook.google.com |
| method | string | yes | import (cookies or file), browser or attach |
| profile | string | – | account profile name |
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | yes | – |
No examples provided.
auth_logout ~66
Not available through MCP: the credential store is only reachable from the CLI. Returns UNSUPPORTED_BY_TRANSPORT with the command to run instead (sourcebolt logout).
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | must be true to delete the stored session |
| profile | string | – | account profile name |
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | yes | – |
No examples provided.
chat_ask ~241
Ask a question about a notebook's sources. Streams partial text as progress notifications. Returns the answer, citations (source, cited text, UTF-16 offsets) and the conversation id. save_as_note also saves the answer as a note (note_id, or note_error when it could not be saved). wait=false returns a job_id; poll with chat_status. Not retried after sending.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | continue this conversation; default is the notebook's newest thread |
| new_conversation | boolean | – | start a fresh conversation instead of the default thread |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| question | string | yes | the question to ask |
| save_as_note | boolean | – | also save the answer as a note, as the web app's Save to note does (the server picks the note title) |
| sources | null|array | – | restrict the answer to these sources (id, id prefix or title); default all sources |
| wait | null|boolean | – | wait for the answer (default true); false returns a job_id to poll with chat_status |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | – | – |
| citations | null|array | – | – |
| conversation_id | string | – | – |
| job_id | string | – | – |
| note_error | string | – | – |
| note_id | string | – | – |
| note_title | string | – | – |
| response_id | string | – | – |
| status | string | – | – |
No examples provided.
chat_configure ~125
Change a notebook's chat settings: mode (default, learning_guide, or custom with custom_prompt) and response_length (default, longer or shorter). Unset fields keep their value. mode default with response_length default resets the notebook to the web app's defaults.
| Name | Type | Req | Description |
|---|---|---|---|
| custom_prompt | string | – | instructions for mode custom, up to 10000 characters |
| mode | string | – | conversational goal; custom needs custom_prompt |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| response_length | string | – | response length |
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | – |
| notebook | string | yes | – |
| response_length | string | – | – |
| updated | boolean | yes | – |
No examples provided.
chat_history ~122
Read a notebook conversation (oldest turn first within a page), with cursor paging. format=markdown adds a rendered transcript. Turn layout is not yet live-verified.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | conversation to read; default is the newest thread |
| cursor | string | – | next_cursor of the previous page (older turns) |
| format | string | – | json (default) or markdown |
| limit | integer | – | max turns per page (default 20) |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | – |
| markdown | string | – | – |
| next_cursor | string | – | – |
| turns | null|array | – | – |
No examples provided.
chat_status ~66
Status and result of a detached chat_ask (wait=false): running, done, failed or cancelled. Jobs live in memory and are dropped an hour after they finish or when the server restarts.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | job id returned by chat_ask with wait=false |
Structured output declared, but exposes no named fields.
No examples provided.
delete ~223
Delete notebooks, sources, notes, artifacts, chat history, labels or collections. Without confirm:true it only returns a preview of what would be deleted and changes nothing. Items are matched strictly (exact id, unique id prefix or exact title) against a fresh list. source, note and chat_history need notebook; chat_history deletes the whole history of the given conversations; it reaches only the newest 20 conversations of a notebook, and its preview shows their created and updated times and, when the whole history can be read, the first question. Kinds artifact, label and collection are not available yet and return UNSUPPORTED_BY_TRANSPORT.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | must be true to delete; without it only a preview is returned |
| ids | null|array | yes | ids (or exact titles) of the items to delete; for chat_history, conversation ids |
| kind | string | yes | notebook, source, note, artifact, chat_history, label or collection |
| notebook | string | – | notebook id, prefix or title; required for every kind except notebook |
| Name | Type | Req | Description |
|---|---|---|---|
| guidance | string | – | – |
| items | null|array | yes | – |
| kind | string | yes | – |
| status | string | yes | – |
No examples provided.
job_cancel ~54
Cancel a running detached job (chat_ask with wait=false, deep research). For an ask with a known conversation the server-side generation is also stopped, best effort.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | job id to cancel |
| Name | Type | Req | Description |
|---|---|---|---|
| cancelled | boolean | yes | – |
| job_id | string | yes | – |
| note | string | – | – |
| status | string | yes | – |
No examples provided.
label_list ~67
List a notebook's source labels with emoji and the ids of the sources in each. Collections are not available yet.
| Name | Type | Req | Description |
|---|---|---|---|
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| scope | string | – | source_labels (default); collections are not available yet |
| Name | Type | Req | Description |
|---|---|---|---|
| labels | null|array | yes | – |
| total | integer | yes | – |
No examples provided.
label_update ~163
Rename a label, set its emoji, or add/remove sources. Actions auto and create (and notebook collections) are not available yet and return UNSUPPORTED_BY_TRANSPORT. Payload shapes are not live-verified.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | rename, set_emoji, add_sources or remove_sources (auto and create are not available yet) |
| emoji | string | – | emoji for set_emoji |
| items | null|array | – | source ids, id prefixes or titles for add_sources / remove_sources |
| label | string | yes | label id or name |
| name | string | – | new name for rename |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| scope | string | – | source_labels (default) |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| label | string | yes | – |
| status | string | yes | – |
No examples provided.
note_list ~66
List the notes of a notebook with id, title and content. Deleted notes are not shown.
| Name | Type | Req | Description |
|---|---|---|---|
| include_mind_maps | boolean | – | accepted for compatibility; mind maps are not listed yet |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| Name | Type | Req | Description |
|---|---|---|---|
| notes | null|array | yes | – |
| total | integer | yes | – |
No examples provided.
note_save ~125
Create a note, or update an existing one (note = id or title). from_turn (save a chat turn as a note) is not available yet and returns UNSUPPORTED_BY_TRANSPORT.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | – | note body |
| from_turn | string | – | save a chat turn as a note (not available yet) |
| note | string | – | existing note id or title to update; omit to create a new note |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| title | string | – | note title |
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | – |
| id | string | yes | – |
| title | string | yes | – |
| updated | string | – | – |
No examples provided.
notebook_create ~122
Create a notebook with a title and optionally add sources in the same call (same items as source_add). The create call is sent once and never retried. emoji is accepted but ignored (no known wire slot). If the rename or the source add fails, the notebook still exists and its id is returned with warnings.
| Name | Type | Req | Description |
|---|---|---|---|
| emoji | string | – | notebook emoji (ignored: no known wire slot yet) |
| sources | null|array | – | sources to add right after creation; same items as source_add |
| title | string | yes | title of the new notebook |
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | yes | – |
| sources | null|object | – | – |
| title | string | – | – |
| warnings | null|array | – | – |
No examples provided.
notebook_list ~120
List NotebookLM notebooks with id, title, source count and ownership. Filter by title and scope. Returns 20 by default; has_more says whether to page with offset. Cached 30 s.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | max notebooks to return (default 20; page with offset) |
| offset | integer | – | skip this many notebooks |
| query | string | – | case-insensitive filter on notebook titles |
| refresh | boolean | – | bypass the 30 s cache |
| scope | string | – | mine, shared or all (default all) |
| Name | Type | Req | Description |
|---|---|---|---|
| has_more | boolean | yes | – |
| notebooks | null|array | yes | – |
| total | integer | yes | – |
No examples provided.
notebook_open ~45
Open one notebook by id or title: its sources with status, summary and suggested questions.
| Name | Type | Req | Description |
|---|---|---|---|
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| Name | Type | Req | Description |
|---|---|---|---|
| created | string | – | – |
| emoji | string | – | – |
| id | string | yes | – |
| modified | string | – | – |
| owned | boolean | yes | – |
| source_count | integer | yes | – |
| sources | null|array | yes | – |
| suggested_questions | null|array | – | – |
| summary | string | – | – |
| title | string | yes | – |
| warnings | null|array | – | – |
No examples provided.
notebook_update ~148
Rename a notebook (title, verified by read-back) and/or drop it from the recently viewed list (remove_from_recent). emoji, pinned, alias and tags are not available yet and are ignored with a note.
| Name | Type | Req | Description |
|---|---|---|---|
| alias | string | – | not available yet (ignored) |
| emoji | string | – | not available yet (ignored) |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| pinned | null|boolean | – | not available yet (ignored) |
| remove_from_recent | boolean | – | drop the notebook from the recently viewed list |
| tags | null|array | – | not available yet (ignored) |
| title | string | – | new title |
| Name | Type | Req | Description |
|---|---|---|---|
| notebook_id | string | yes | – |
| notes | null|array | – | – |
| removed_from_recent | boolean | – | – |
| renamed | boolean | – | – |
No examples provided.
research_import ~161
Import research candidates as notebook sources, by urls (from research_status), report, or all. Candidates are matched by URL against a fresh read, so results reordered since research_status still import the intended ones; an unknown URL is NOT_FOUND. Candidates already in the notebook are skipped, so a retry is safe. Reports added, skipped and failed per candidate.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | – | import every candidate |
| job | string | yes | research job id from research_start or research_status |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| report | boolean | – | also import the deep-research report candidate |
| urls | null|array | – | URLs of the web candidates to import, as listed by research_status |
| Name | Type | Req | Description |
|---|---|---|---|
| added | integer | yes | – |
| failed | integer | yes | – |
| notebook | string | yes | – |
| results | null|array | yes | – |
| skipped | integer | yes | – |
No examples provided.
research_start ~155
Start a web or Drive research job in a notebook (fast or deep). Returns a job handle; poll with research_status, then import with research_import. Queries under 4 words are rejected unless force is true. Mode discover is not yet available (UNSUPPORTED_BY_TRANSPORT).
| Name | Type | Req | Description |
|---|---|---|---|
| corpus | string | – | web (default) or drive; deep supports web only |
| force | boolean | – | allow a query shorter than 4 words |
| mode | string | – | fast (default) or deep; discover is not yet available |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| query | string | yes | what to research; at least 4 words unless force is set |
| Name | Type | Req | Description |
|---|---|---|---|
| job | object | yes | – |
| notebook | string | yes | – |
No examples provided.
research_status ~129
Check research jobs of a notebook and list their candidates (pick them by url in research_import). With wait_seconds (0-120) polls every 3 s, reporting progress, until the job is done.
| Name | Type | Req | Description |
|---|---|---|---|
| include_report | boolean | – | include the deep-research report text |
| job | string | – | research job id; omit for all jobs of the notebook |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| wait_seconds | integer | – | 0-120: poll every 3 s until the job is done or time runs out |
| Name | Type | Req | Description |
|---|---|---|---|
| done | boolean | yes | – |
| jobs | null|array | yes | – |
| notebook | string | yes | – |
No examples provided.
server_info ~60
Show the sourcebolt version, active Google profile, NotebookLM host, enabled tools and which transport served the last call. No Google call unless include_usage is set.
| Name | Type | Req | Description |
|---|---|---|---|
| include_usage | boolean | – | also fetch account tier and quota windows (one Google call) |
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | – |
| last_transport | string | – | – |
| name | string | yes | – |
| profile | string | yes | – |
| tool_profile | string | yes | – |
| tools | null|array | yes | – |
| usage | null|object | – | – |
| version | string | yes | – |
No examples provided.
share_status ~41
Show who a notebook is shared with and whether the link is public.
| Name | Type | Req | Description |
|---|---|---|---|
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| Name | Type | Req | Description |
|---|---|---|---|
| public | boolean | yes | – |
| users | null|array | yes | – |
No examples provided.
share_update ~230
Change notebook sharing: link visibility (public) and per-user roles (viewer, editor, remove). Widening access or removing people requires confirm:true; without it a preview is returned and nothing is sent. The link setting and the user changes are sent as two calls; if only one applies, status is partial and parts says which applied and which failed. Payload shapes are not live-verified. view_level and artifact sharing are not available yet.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact | string | – | share one artifact instead of the notebook (not available yet) |
| confirm | boolean | – | required to widen access or remove people; without it only a preview is returned |
| message | string | – | message to include in the notification |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| notify | boolean | – | email the added people |
| public | null|boolean | – | true = anyone with the link can view, false = restricted |
| users | null|array | – | per-user changes |
| view_level | string | – | full or chat_only (not available yet) |
| Name | Type | Req | Description |
|---|---|---|---|
| changes | null|array | yes | – |
| guidance | string | – | – |
| notebook_id | string | yes | – |
| notebook_title | string | – | – |
| parts | null|array | – | – |
| requires_confirm | boolean | – | – |
| status | string | yes | – |
No examples provided.
source_add ~106
Add sources to a notebook: public URLs (YouTube auto-detected) and pasted text, in one call. Returns a per-item outcome. Drive and file items are not yet available (UNSUPPORTED_BY_TRANSPORT). URLs to private or internal addresses are rejected.
| Name | Type | Req | Description |
|---|---|---|---|
| items | null|array | yes | sources to add; each item sets exactly one of url, text, drive, file |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| Name | Type | Req | Description |
|---|---|---|---|
| failed | integer | yes | – |
| notebook | string | yes | – |
| pending | integer | yes | – |
| requested | integer | yes | – |
| results | null|array | yes | – |
| succeeded | integer | yes | – |
No examples provided.
source_list ~64
List a notebook's sources with type and processing status; optionally filter by status.
| Name | Type | Req | Description |
|---|---|---|---|
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| status | string | – | filter: processing, ready, error, preparing or a raw status number |
| Name | Type | Req | Description |
|---|---|---|---|
| sources | null|array | yes | – |
| total | integer | yes | – |
No examples provided.
source_read ~136
Read a source's full text, markdown, or guide (summary and keywords), paged by character offset (max_chars default 20000; see truncated and next_offset).
| Name | Type | Req | Description |
|---|---|---|---|
| max_chars | integer | – | max characters to return (default 20000, cap 200000) |
| mode | string | – | fulltext (default), markdown, or guide (the source guide: summary as text plus keywords) |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| offset | integer | – | character offset to start from |
| source | string | yes | source id, id prefix or title |
| Name | Type | Req | Description |
|---|---|---|---|
| keywords | null|array | – | – |
| next_offset | integer | – | – |
| offset | integer | yes | – |
| source_id | string | yes | – |
| text | string | yes | – |
| total_chars | integer | yes | – |
| truncated | boolean | yes | – |
No examples provided.
source_update ~116
Rename a source (title) and/or check whether it is up to date (check_freshness). refresh is not yet available (UNSUPPORTED_BY_TRANSPORT).
| Name | Type | Req | Description |
|---|---|---|---|
| check_freshness | boolean | – | report whether the source is up to date |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| refresh | boolean | – | re-fetch the source (not yet available) |
| source | string | yes | source id, id prefix or title |
| title | string | – | new title |
| Name | Type | Req | Description |
|---|---|---|---|
| fresh | null|boolean | – | – |
| renamed | boolean | – | – |
| source_id | string | yes | – |
No examples provided.
studio_generate ~448
Generate a Studio artifact: audio, video, report, interactive_report, slide_deck, mind_map, quiz, flashcards, infographic or data_table. Each kind takes only the option values a live capture has proven (the enums); other values the web app offers return UNSUPPORTED_BY_TRANSPORT naming the option, before any call. Omitted options take the web app's defaults. instructions is optional for audio, video, slide_deck and quiz, required for report, mind_map, flashcards and data_table, and refused by infographic and interactive_report (each as captured). video.generate_later asks for deferred generation (cinematic format only). report needs report.title and report.description plus instructions as the prompt (suggest surface report returns ready-made triples). Checks the account quota first and returns a QUOTA error when it is used up. Artifacts are built from the notebook's sources only, not notes (the web app can add notes; that is not supported). Returns the new artifact as pending; poll studio_list for its status. Not retried after sending.
| Name | Type | Req | Description |
|---|---|---|---|
| audio | null|object | – | options for kind audio |
| flashcards | null|object | – | options for kind flashcards |
| infographic | null|object | – | options for kind infographic |
| instructions | string | – | free text: audio and video focus, slide deck description and quiz topic (optional); report prompt, data table description, mind map and flashcards topic (required); infographic and interactive_report… |
| kind | string | yes | the artifact kind |
| language | string | – | output language code as the web app sends it (default en; cinematic video takes none) |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| quiz | null|object | – | options for kind quiz |
| report | null|object | – | options for kind report (required) |
| slide_deck | null|object | – | options for kind slide_deck |
| sources | null|array | – | source ids, id prefixes or titles; default all sources (notes cannot be used as sources) |
| video | null|object | – | options for kind video |
| Name | Type | Req | Description |
|---|---|---|---|
| created | string | – | – |
| id | string | yes | – |
| kind | string | yes | – |
| media_urls | object | – | – |
| status | string | yes | – |
| title | string | yes | – |
No examples provided.
studio_list ~176
List a notebook's Studio artifacts (audio, video, report, slide_deck, mind_map, quiz, flashcards, infographic, data_table) with kind and status (pending while queued or generating, then ready or failed). Pass artifact to read one with its interactive content (HTML or mind-map tree) when Google has any.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact | string | – | one artifact id or title; returns it with its interactive content when available |
| kind | string | – | filter by kind: audio, video, report, slide_deck, mind_map, quiz, flashcards, infographic, data_table (interactive and unknown for unrecognized rows) |
| notebook | string | yes | notebook id, id prefix (6+ chars) or title |
| status | string | – | filter by status: pending (queued or generating), ready or failed |
| Name | Type | Req | Description |
|---|---|---|---|
| artifacts | null|array | yes | – |
| content | null|object | – | – |
| total | integer | yes | – |
No examples provided.
suggest ~110
Suggested prompts for a surface: chat, report or studio_options. The followups surface is not yet available (UNSUPPORTED_BY_TRANSPORT until a live capture pins it).
| Name | Type | Req | Description |
|---|---|---|---|
| notebook | string | – | notebook id, id prefix or title (not needed for studio_options) |
| query | string | – | steer chat suggestions toward this topic |
| sources | null|array | – | limit to these sources (id, id prefix or title) |
| surface | string | yes | chat, followups, report or studio_options |
| Name | Type | Req | Description |
|---|---|---|---|
| suggestions | null|array | yes | – |
No examples provided.
How do I install the sourcebolt MCP server?
sourcebolt runs locally as a container image, launched with docker run --rm -i ghcr.io/candidloom-hub/sourcebolt:0.3.3. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · ghcr.io/candidloom-hub/sourcebolt
claude mcp add candidloom-hub-sourcebolt -- docker run --rm -i ghcr.io/candidloom-hub/sourcebolt:0.3.3
What is the sourcebolt MCP server?
sourcebolt is an MCP server listed in the public MCP registry as io.github.candidloom-hub/sourcebolt. Fast MCP server for Google NotebookLM: notebooks, sources, cited chat, research. Unofficial. This page covers its container image (ghcr.io/candidloom-hub/sourcebolt).
Is the sourcebolt MCP server safe to use?
sourcebolt scores 47 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the sourcebolt MCP server expose?
sourcebolt exposes 30 tools: account_settings, auth_login, auth_logout, chat_ask, chat_configure, and 25 more. Their descriptions and schemas cost roughly 3,872 tokens of context every time the server is loaded.
Is the sourcebolt MCP server still maintained?
sourcebolt is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the sourcebolt MCP server under?
sourcebolt declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.