Skip to main content
Glama
altuslabsxyz

Altus Commonware Research MCP

Official
by altuslabsxyz

Altus Commonware Research MCP

A stdio MCP server that queries Commonware blockchain research via NotebookLM. Each teammate runs it locally — NotebookLM workspace access controls who can query.

Prerequisites

  1. Google Chrome must be installed (used for the built-in login flow via Chrome DevTools Protocol).

  2. (Optional) Create a GitHub personal access token (for search_implementation / suggestion / factcheck tools):

  3. Clone and build:

    git clone <repo-url>
    cd altus-commonware-research-mcp
    npm install
    cp .env_example .env

    Then build:

    npm run build
  4. Build the local code search index (requires GITHUB_TOKEN and REFERENCE_REPOS in .env):

    npm run setup-index

    This fetches file trees and content from all REFERENCE_REPOS and stores them in a local SQLite FTS5 database (data/index.db) for fast code search. To re-index later (e.g. after upstream changes), run with --force:

    npm run setup-index -- --force

    You can also re-index at runtime via the setup_db MCP tool.

  5. Authenticate with NotebookLM by calling the login tool. This launches Chrome, lets you sign in to your Google account, and extracts auth cookies automatically.

Related MCP server: notebooklm-mcp-2026

Configuration

Edit .env to configure the server:

NOTEBOOK_ID=<your-notebook-id>
REFERENCE_REPOS=commonwarexyz/alto,commonwarexyz/monorepo,tempoxyz/tempo,paradigmxyz/reth
GITHUB_TOKEN=ghp_...

Variable

Required

Description

NOTEBOOK_ID

Yes

NotebookLM notebook ID (from the notebook URL)

REFERENCE_REPOS

Yes

Comma-separated list of GitHub repos (owner/name). These are the repos that suggestion, search_implementation, and factcheck search against.

GITHUB_TOKEN

No

GitHub personal access token. No scopes needed for public repos, but recommended to avoid rate limits.

SQLITE_DB_PATH

No

Path to SQLite database file. Default: data/index.db in the project root.

The REFERENCE_REPOS list determines which repositories the tools can search. Tools like suggestion and factcheck auto-select the most relevant repos from this list per query, or you can override with the repos argument.

Connect to MCP

Claude Code

Add to your Claude Code MCP settings (~/.claude/settings.json or project .mcp.json):

{
  "mcpServers": {
    "altus-research": {
      "command": "node",
      "args": ["/absolute/path/to/altus-commonware-research-mcp/dist/index.js"]
    }
  }
}

Gemini CLI

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "altus-research": {
      "command": "node",
      "args": ["/absolute/path/to/altus-commonware-research-mcp/dist/index.js"]
    }
  }
}

Codex CLI

Add to ~/.codex/config.toml:

[mcp_servers.altus-research]
command = "node"
args = ["/absolute/path/to/altus-commonware-research-mcp/dist/index.js"]

Tools

login

Authenticate with NotebookLM. Launches Chrome, waits for you to sign in to your Google account, and extracts auth cookies via CDP.


refresh_auth

Reload NotebookLM auth tokens from disk. Use this after re-running login in another session, or if tokens were updated externally.


query

Ask a question about Altus Commonware Research directly to NotebookLM — useful for quick lookups on concepts, design rationale, or protocol details.

  • Arguments:

    • question: The research question to ask.

Example:

Q: "What is the actor pattern in Commonware and why is it preferred over mutexes?"

A: The actor pattern in Commonware uses mailbox-based async message passing where each actor owns its state exclusively. This avoids mutex contention and deadlocks — actors communicate by sending messages rather than sharing memory. The one-writer/many-readers model ensures each piece of state has a single owner, which simplifies reasoning about concurrency and improves throughput under high parallelism…


suggestion

Get an architectural implementation suggestion that combines NotebookLM research with actual code snippets from reference repos. This is a two-stage flow:

Example:

Q: "How would I implement a mempool in Commonware?"

A:

Summary

  • Mempools in Commonware buffer pending payloads at the primitive level, partitioned by namespace.

  • The Alto reference client implements this as an actor that owns a BTreeMap of pending containers, drained by the proposer on each build cycle.

  • Key design decision: the mempool actor uses one-writer ownership — only the mempool actor mutates the pending set; the proposer reads a snapshot via async request.

(followed by reasoning, code examples from reference repos, and a suggested search_implementation query)


search_implementation

Search reference repository and return source code snippets explaining how the feature is actually implemented.

Example:

Q: "How Tempo implemented Automaton trait that connect Commonware Simplex consensus engine"

A:

Summary

  • Tempo connects to Commonware Simplex by using an application actor as the consensus-execution bridge, explicitly documented as implementing commonware_consensus::Automaton.

  • Commonware Simplex is parameterized over A: CertifiableAutomaton, so Tempo plugs its application-side automaton adapter into that slot.

  • Architecturally, the flow is Simplex consensus actors → automaton interface → Tempo application/executor/marshal actors.

Implementation Details

Tempo's consensus engine defines the Automaton bridge pointapplication is annotated as the component that implements the consensus automaton interface, sitting next to executor/marshal synchronization actors.

// crates/commonware-node/src/consensus/engine.rs (lines 438–454)

/// Acts as the glue between the consensus and execution layers implementing
/// the `[commonware_consensus::Automaton]` trait.
application: application::Actor<TContext>,

/// Responsible for keeping the consensus layer state and execution layer
/// states in sync.
executor: crate::executor::Actor<TContext>,
executor_mailbox: crate::executor::Mailbox,

Simplex requires an automaton type parameter — the engine is generic over A: CertifiableAutomaton, making the automaton the formal interface between consensus and the application/execution domain.

// consensus/src/simplex/engine.rs (lines 19–29)

pub struct Engine<
    E: BufferPooler + Clock + CryptoRngCore + Spawner + Storage + Metrics,
    S: Scheme<D>,
    ...
    A: CertifiableAutomaton<Context = Context<D, S::PublicKey>, Digest = D>,
    ...
> {

(truncated — full output includes construction-site evidence and flow analysis)


factcheck

Validate a document (or a set of claims) against actual source code in reference repos.

Example:

Q: "Validate this document: [Alto architecture and Simplex consensus flow documentation...]"

A:

Result

  • Core Alto/Simplex claims are mostly supported.

  • A non-trivial subset came back INSUFFICIENT_EVIDENCE (tool retrieval failed to find enough code proof), not NOT_VERIFIED.

  • No direct NOT_VERIFIED verdicts were returned.

Claims with strong support (Verified)

  • Alto is minimal and omits transaction execution/state logic.

  • Alto block type includes parent, height, timestamp, and precomputed digest.

  • Simplex voter/application interaction (propose/verify) is present.

  • Batcher vote verification/certificate construction behavior is supported.

  • Alto fixed-epoch config (u64::MAX) and timeout constants (~256, ~32) are supported.

  • Tempo has Reth/engine-validator integration evidence.

Claims not fully proven (INSUFFICIENT_EVIDENCE or Partially Verified)

  • Some marshal persistence/dataflow claims (proof incomplete at flow level).

  • verify → marshal.subscribe → return result path (not retrieved with sufficient evidence).

  • Tempo epoch-manager and DKG epoch-transition claims (not sufficiently retrieved).

  • Some conceptual/proof statements (PBFT/Simplex correctness arguments) are only partially verifiable from implementation code.

Practical conclusion

  • Your document is directionally accurate for Alto architecture and Simplex flow.

  • Treat Tempo epoch/DKG sections and some deep flow claims as "needs explicit code citations" before calling it fully validated.

(truncated — full output includes claim-by-claim verdict table, evidence appendix, and fix suggestions)


setup_db

Initialize or re-index the local SQLite FTS5 search index at runtime. Same as npm run setup-index but callable as an MCP tool.

  • Arguments:

    • repos (optional): Subset of REFERENCE_REPOS to index.

    • force (optional): Re-index even if already indexed.

Available Tools

15 tools
factcheckFactCheck — PlanA

Stage 1 of fact-checking: analyzes a document against reference repositories.

Returns the document, repository context (README + source file tree), and instructions for you (the AI) to extract validation items. After analyzing, call factcheck_validate with the items you identified.

IMPORTANT: This is a closed-loop pipeline. Do NOT call query, suggestion, or any NotebookLM-backed tool during fact-checking. Do NOT use web search or fetch external URLs. All evidence must come from factcheck_validate only.

Available repositories: octocat/Hello-World, facebook/react

ParametersJSON Schema
NameRequiredDescriptionDefault
reposNoOptional repository subset. If omitted, all are available: octocat/Hello-World, facebook/react
claimsNoOptional explicit claims to append to the document for validation.
documentYesThe document or text to fact-check against source code.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries full burden. It discloses that the tool 'Returns the document, repository context (README + source file tree), and instructions for you (the AI) to extract validation items,' and emphasizes the closed-loop pipeline constraint. This gives the agent a clear picture of what to expect and what constraints apply.

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 concise (four sentences) and front-loaded with the core purpose. It efficiently covers purpose, return value, next step, and critical constraints without extraneous content.

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

Completeness5/5

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

Since there is no output schema, the description appropriately explains the return values ('Returns the document, repository context...') and the workflow. It also lists the available repos and the closed-loop constraint, making the tool's context fully understandable.

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 coverage is 100%, so the baseline is 3. The description does not add detailed syntax or format info beyond the schema; it merely mentions 'document' and 'Available repositories,' which are already described in the schema. Thus, it adds no significant meaning beyond the schema.

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 opens with 'Stage 1 of fact-checking: analyzes a document against reference repositories,' which specifies a clear verb (analyzes), resource (document against reference repositories), and stage. It also distinguishes from sibling `factcheck_validate` by indicating the next step, making the tool's role in the pipeline unambiguous.

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

Usage Guidelines5/5

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

The description explicitly instructs to call `factcheck_validate` after analysis and states 'Do NOT call `query`, `suggestion`, or any NotebookLM-backed tool during fact-checking.' It also says 'All evidence must come from `factcheck_validate` only,' providing clear when-to-use and when-not-to-use guidance with named alternatives.

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

factcheck_validateFactCheck — ValidateA

Stage 2 of fact-checking: retrieves actual code evidence for each validation item and returns it for you (the AI) to judge.

Call this after factcheck has helped you identify items to validate. For each item, provide the claim text, target repository, and search keywords or specific file paths. The tool fetches the code and returns it alongside each claim for your assessment.

IMPORTANT: Do NOT call query, suggestion, or any NotebookLM-backed tool. Do NOT use web search or fetch external URLs. Base all verdicts exclusively on the code evidence returned by this tool.

Available repositories: octocat/Hello-World, facebook/react

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesValidation items. Each object must have: text (string, the claim to validate), repo (string, owner/repo format), keywords (optional string[], search terms), file_paths (optional string[], specific file paths to fetch). Max 20 items.
documentNoThe original document (for reference in validation). Can be condensed.

TDQS

A4.4/5.0
Behavior4/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 explains that the tool fetches code evidence and returns it for assessment, and it imposes a critical constraint on relying only on this tool's output. This goes beyond the schema and gives the AI a clear mental model of the tool's behavior, though it does not explicitly state non-destructiveness or error handling.

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 concise and front-loaded. The first sentence states the core purpose, the second provides usage instructions, and the third delivers an essential warning. Every sentence earns its place with no filler.

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

Completeness4/5

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

The tool has no output schema, so the description must convey return behavior. It does so by stating that the tool returns code evidence alongside each claim for assessment. It also lists available repositories, which is critical for correct invocation. While it doesn't address edge cases like missing code, the core context needed for use is covered sufficiently.

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%, with detailed descriptions for `items` and `document`. The description adds minimal semantic value beyond the schema, essentially restating that each item requires claim text, repository, keywords, or file paths. This does not meaningfully improve agent understanding beyond what the schema already provides.

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 the tool's purpose: 'Stage 2 of fact-checking: retrieves actual code evidence for each validation item and returns it for you (the AI) to judge.' It uses specific verbs ('retrieves', 'returns') and distinguishes itself from siblings like `factcheck` (stage 1) and `query`/`suggestion` (NotebookLM tools).

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: 'Call this after `factcheck` has helped you identify items to validate.' It also includes strong exclusions: 'Do NOT call `query`, `suggestion`, or any NotebookLM-backed tool' and 'Base all verdicts exclusively on the code evidence returned by this tool.' This makes the when/when-not boundaries very clear.

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

get_fileB

Get the content of a file from a repository, with optional line range.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile path relative to repo root
repoYesRepository identifier (owner/repo)
end_lineNo0-indexed end line (inclusive)
start_lineNo0-indexed start line (inclusive)

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It accurately conveys a read operation ('Get the content') and optional line range, but it does not disclose potential behaviors like what happens on file-not-found, how large files are handled, or the exact meaning of line range inclusivity (which is only in the schema). Nothing contradicts annotations.

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, front-loaded with the core action and resource. Every word contributes value, and there is no redundant or fluffy content.

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 read tool, the description is minimally adequate: it states the purpose and optional line range. However, it lacks explicit mention of the return format (e.g., raw text vs JSON) and any error/edge-case behavior, which would be helpful given there is no output schema or annotations.

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 schema fully documents all four parameters. The description adds no extra meaning beyond saying the line range is optional, which is already inferable from the required fields. This is baseline 3 since the description does not hamper parameter understanding.

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 action (get content) and the resource (a file from a repository), and mentions an optional line range. It distinguishes the tool from siblings like get_file_tree (which returns tree structure) and search_file/search_code (which search for matches), though it does not explicitly contrast it with those alternatives.

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 such as search_file or list_source_files. It only states what the tool does, leaving the agent to infer the appropriate use case without explicit when/when-not guidance.

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

get_file_treeA

Get an ASCII directory tree for a repository, optionally scoped to a subdirectory.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoSubdirectory scope (e.g. 'src/')
repoYesRepository identifier (owner/repo)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of transparency. It adds behavioral details such as the output being an ASCII tree and the optional subdirectory scoping, which go beyond the raw name. However, it does not explicitly state that it is a read-only operation, mention authentication, or describe behavior for invalid paths — though 'get' implies a read action.

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 that immediately states the action and object, with no superfluous words. Every part earns its place.

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

Completeness4/5

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

For a simple two-parameter read tool with full schema coverage, the description is reasonably complete. It specifies the output format (ASCII tree), the target (repository), and the optional scope. Minor aspects like ordering, hidden-file inclusion, or invalid-path behavior are not covered, but the tool's simplicity keeps these from being critical 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 schema already provides clear descriptions for both parameters (repo as owner/repo and path as subdirectory scope), giving 100% schema coverage. The description's phrase 'optionally scoped to a subdirectory' mirrors the path parameter's optionality but does not add substantive new meaning on top of the schema. A baseline of 3 is appropriate.

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 uses a specific verb ('Get') and resource ('ASCII directory tree'), and clearly indicates the repository context and optional subdirectory scope. It distinguishes itself from sibling tools like get_file or search_code, which operate on file contents rather than the directory structure.

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 description makes the primary use case clear (obtaining a directory tree, optionally scoped to a subdirectory), but it does not explicitly mention when not to use it or point to alternatives such as list_source_files or search_file. There is enough context to infer usage, but no exclusions.

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

list_source_filesB

List files in a repository, optionally filtered by directory prefix.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoDirectory prefix filter (e.g. 'src/')
repoYesRepository identifier (owner/repo)

TDQS

B3.1/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 behavioral disclosure. It only says 'List files' without mentioning whether this is read-only, requires authentication, returns directories vs files, pagination, or any side effects. This is a significant gap even for a simple read 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 that conveys the essential action and optional filter without any wasted words. It is perfectly concise and well-structured.

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 tool with only two simple parameters and no output schema, the description is minimally adequate. However, it does not clarify whether it returns file paths, metadata, or directory contents, and the name suggests 'source files' while the description says 'files'. There is room for context about output structure or limitations.

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 provides full descriptions for both parameters (repo as 'owner/repo' and path as 'directory prefix filter'). The description's mention of 'directory prefix' is redundant with the schema, adding no extra meaning. Since schema coverage is 100%, the baseline 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 clearly states the tool lists files in a repository with an optional directory prefix filter. It uses a specific verb and resource, and the optional filter adds clarity. It doesn't explicitly distinguish from sibling tools like list_sources or get_file_tree, 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 such as list_sources, get_file_tree, or search_file. There are no explicit usage contexts, exclusions, or mention of alternative tools.

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

list_sourcesA

List all configured reference repositories and their indexing status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must stand alone. It indicates a read-only listing operation but does not disclose auth requirements, network access, or side effects. For a list tool, the behavior is straightforward, but the description carries the full burden and remains minimal.

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?

One sentence, directly states the tool's purpose with no filler.

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

Completeness4/5

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

The description names the output concept ('indexing status') but no output schema exists. It's sufficient for a simple list, though it omits details like whether pagination or filtering is needed. Given the low complexity, it's reasonably complete.

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

Parameters4/5

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

The tool has zero parameters, so the schema is empty and fully covers semantics. The description adds no parameter-specific information, which is acceptable given the 4 baseline for zero-param tools.

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 uses a clear verb ('List') and identifies the resource ('configured reference repositories') and adds detail ('their indexing status'), distinguishing it from sibling file-level tools like list_source_files and get_file_tree.

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?

No explicit guidance on when to use this vs alternatives, but the phrase 'configured reference repositories' provides clear context. Absence of exclusions or alternative tool references lowers the score.

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

loginLogin to NotebookLMA

Authenticates with NotebookLM by launching Chrome for Google sign-in. A Chrome window will open — the user must complete the Google login. Once logged in, auth tokens are saved automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/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 clearly discloses that a Chrome window will open, the user must complete Google sign-in, and tokens are saved automatically. This adds useful context beyond a simple 'login' and sets accurate expectations, though it could mention potential side effects like requiring interaction downtime.

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 two sentences long, front-loaded with the primary action, and contains no filler. Every sentence earns its place by explaining how authentication works and what the user should expect.

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

Completeness4/5

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

For a simple login tool with no parameters or output schema, the description covers the key context: what happens (launches Chrome), what the user must do (complete Google login), and the outcome (tokens saved). It is complete enough for an agent to invoke correctly, though it could briefly mention that this is a one-time setup and that refresh_auth may be used later.

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

Parameters4/5

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

The tool has zero parameters, so the baseline score is 4 per the rubric. The description does not need to explain parameter semantics, and it appropriately focuses on the authentication process.

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 the tool's purpose: 'Authenticates with NotebookLM by launching Chrome for Google sign-in.' It uses a specific verb ('Authenticates') and resource ('NotebookLM'), and distinguishes itself from sibling refresh_auth by emphasizing initial login vs. saved tokens.

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 description implies usage (needed for authentication before using the product) and states that tokens are saved automatically, suggesting it is for initial login. However, it does not explicitly mention when not to use it or contrast with alternatives like refresh_auth, so guidance remains implied rather than explicit.

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

queryQuery ResearchA

Ask a question about Commonware research via NotebookLM. Run nlm login first if not authenticated. Present the response exactly as received — do not reformat, summarize, or restructure it.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesThe research question to ask NotebookLM

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses an authentication prerequisite and mandates verbatim presentation of the response, which is important behavioral guidance. It doesn't explicitly state read-only nature, but 'Ask a question' implies a safe query 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?

Three concise, front-loaded sentences cover purpose, authentication prerequisite, and output handling. Every sentence provides necessary information with no filler.

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

Completeness5/5

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

For a one-parameter query tool with no output schema, the description is complete: it defines scope, prerequisite, and how to handle the response. No additional behavioral or context cues are needed for an agent to invoke it 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 schema already fully describes the sole parameter (`question`), and the description adds only marginal context like 'research question'. Since schema coverage is 100%, the baseline of 3 is appropriate.

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 the tool asks a research question about Commonware via NotebookLM, with a specific verb and resource. It distinguishes itself from sibling tools like search_code or search_implementation by focusing on natural-language research questions.

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?

It explicitly instructs the user to run `nlm login` first if not authenticated, giving clear prerequisite context. It does not explicitly contrast with alternatives, but the purpose and sibling set make when-to-use reasonably clear.

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

refresh_authRefresh Auth TokensA

Reloads authentication tokens from disk. Call this after re-authenticating or if queries start failing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/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. It only says 'reloads' without detailing side effects (e.g., overwriting current tokens), whether the operation is idempotent, or failure modes if tokens are missing. This is minimal behavioral disclosure.

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?

Two sentences, front-loaded with the core action and followed by actionable usage guidance. Every word earns its place with no redundancy or filler.

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

Completeness4/5

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

For a zero-parameter tool with no output schema, the description adequately covers purpose and usage. It could add more about success/failure behavior, but it is sufficiently complete for typical use.

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

Parameters4/5

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

The tool has zero parameters, so the baseline of 4 applies per the instructions. The schema correctly shows no properties, and the description naturally doesn't need to explain any parameters.

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 ('Reloads authentication tokens from disk'), identifying the resource (authentication tokens) and distinguishing it from siblings like login (which creates tokens) and query (which consumes them). The phrasing is specific and unambiguous.

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

Usage Guidelines4/5

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

It explicitly states when to call ('after re-authenticating or if queries start failing'), providing clear context. However, it lacks explicit exclusions or named alternatives, though the tool's distinct purpose makes this less critical.

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

search_codeA

Search indexed code using FTS5 with BM25 ranking. Supports substring (trigram, min 3 chars) and word (prefix) modes. Returns ranked results with code snippets.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoSearch mode (default: "substring")
repoNoLimit to a specific repo (owner/repo)
queryYesSearch query
file_typeNoFile type filter (default: "all")
max_resultsNoMax results (1-50, default: 10)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses search modes, ranking algorithm, and return type, but omits details like authentication requirements, scope (all repos vs. selected), or error handling. This is useful but not comprehensive.

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 two concise sentences, front-loaded with the main purpose. Each phrase adds useful information (search engine, ranking, modes, return type), with no wasted words.

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

Completeness4/5

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

Without an output schema, the description offers a high-level summary of results but does not detail the result object structure. However, it covers the core search behavior, modes, and ranking, which is adequate for a search tool. Missing details like result fields are not critical given the schema's parameter coverage.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by specifying the substring mode's minimum 3-character requirement, which is not in the schema, and by explaining the return type (ranked results with snippets). This goes beyond the schema descriptions.

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 ('Search indexed code') with technical detail (FTS5, BM25 ranking). It distinguishes from siblings like search_file by specifying indexed code and search modes, making it unambiguous.

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 description implies usage for general code search but does not explicitly state when to use this tool over siblings like search_implementation or search_file. No exclusions or alternatives are mentioned, leaving the context implied rather than explicit.

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

search_fileA

Search within a specific file for a pattern (case-insensitive substring match) and return matching lines with context.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile path relative to repo root
repoYesRepository identifier (owner/repo)
patternYesSearch pattern (case-insensitive substring)
context_linesNoLines of context around matches (0-20, default: 3)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It does reveal case-insensitivity and the return format (matching lines with context), but it omits details like error handling, read-only nature, or pagination. This is adequate but not rich.

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, compact sentence that front-loads the main verb and resource. Every phrase adds meaning, with no filler or redundant information.

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

Completeness4/5

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

For a simple file-search tool with four straightforward parameters and a clear result description, the description is largely complete. It doesn't cover edge cases like missing files or empty matches, but the basic behavior and output are clearly stated.

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 schema already explains all parameters. The description adds little beyond repeating 'case-insensitive substring' and implying context lines. Baseline 3 is appropriate because the schema does the heavy lifting.

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 specifies a clear action ('Search within a specific file'), defines the pattern type ('case-insensitive substring match'), and states the output ('return matching lines with context'). This distinguishes it from sibling tools like search_code, which likely searches across multiple files.

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 'within a specific file' sets a clear context for use, implying this tool is for file-scoped searches rather than repo-wide searches. However, it does not explicitly mention when not to use it or name alternatives such as search_code, so it stops short of a 5.

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

search_implementationSearch Implementation CodeA

Search reference repos (octocat/Hello-World, facebook/react) and return source code snippets. ONE call does everything: searches file trees, fetches matching code, returns snippets.

MANDATORY FLOW: suggestion must run first, then search_implementation.

MANDATORY FINALITY: after this tool returns, do not run any other tool or local check; return this output directly.

Usage

  • Call ONCE per question. Do NOT call repeatedly.

  • Use SHORT keyword queries (2-4 words): 'subblock mempool', 'consensus validator'

  • Repository scope is inherited from the latest suggestion call.

  • If no suggestion context exists, this tool returns a precondition response telling the client to call suggestion first.

  • Optional repos must be inside inherited scope.

  • Response includes formatting instructions — follow them exactly.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCode search keywords (2-4 words). E.g. 'subblock mempool', 'consensus validator'.
reposNoOptional subset of repositories selected by the latest suggestion context.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the burden of disclosing behavior. It introduces critical behavioral constraints: 'MANDATORY FINALITY' (return output directly, run no other tools), precondition handling, and inherited scope. It also tells the agent to follow formatting instructions exactly, which is very useful. This goes beyond a basic read-only expectation.

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 well-structured with headers (MANDATORY FLOW, MANDATORY FINALITY, Usage) and front-loaded with a clear purpose. It is somewhat long but every sentence carries essential information. The use of examples and explicit do's/don'ts makes it easy to follow, though it could be tightened slightly.

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

Completeness5/5

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

Given the tool's complexity (combined search/fetch, mandatory ordering, finality rules) and the absence of an output schema, the description provides comprehensive guidance. It covers query format, repository scope, call frequency, preconditions, and response handling, leaving little ambiguity for an AI agent.

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

Parameters4/5

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

Schema description coverage is 100% for both parameters, so the schema already provides solid definitions. The description adds value by constraining query length ('2-4 words') and adding a constraint on repos ('must be inside inherited scope'), which is not stated in the schema. This justifies a score above the baseline 3.

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 the tool searches reference repos and returns source code snippets in one call, explicitly mentioning 'ONE call does everything: searches file trees, fetches matching code, returns snippets.' This distinguishes it from siblings like search_code or get_file by highlighting its combined search-and-fetch behavior.

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 description provides explicit usage instructions: mandatory order (suggestion first), call once, short keyword queries, and inherited repository scope. It also explains the precondition response if suggestion wasn't called. However, it doesn't explicitly name alternative tools or describe when to use something else, so it misses the 'alternatives' criterion for a 5.

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

select_repositoriesSelect RepositoriesA

Select the most relevant repositories from REFERENCE_REPOS (octocat/Hello-World, facebook/react) for a given document/query using retrieval evidence scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesDocumentation or query text used to choose relevant repositories.
reposNoOptional candidate subset. Allowed: octocat/Hello-World, facebook/react
keywordsNoOptional keywords to guide selection. If omitted, extracted from input.
max_reposNoMaximum repositories to return (default: 3).

TDQS

A3.7/5.0
Behavior3/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. It adds useful context by mentioning 'retrieval evidence scores' and the restricted candidate list, but it does not describe the output format, potential no-match behavior, or whether any side effects occur. This is a moderate disclosure for a selection tool.

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 sentence that is front-loaded with the action and resource, and every phrase adds value: the candidate list and scoring method are both mentioned. This is appropriately concise with no filler.

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?

The description covers the essential purpose and scope but omits practical details like the return format or behavior when no repositories match. Since there is no output schema and no annotations, these details would be helpful for an agent to know what to expect, leaving the description moderately complete.

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 coverage is 100% and every parameter has a description, so the baseline is 3. The tool description adds overall context but does not enrich individual parameter semantics beyond what the schema already provides, such as the meaning of max_repos or the optional repos subset.

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 uses the specific verb 'select' and names the resource ('repositories from REFERENCE_REPOS'), explicitly listing the allowed candidates (octocat/Hello-World, facebook/react). This clearly distinguishes it from sibling tools like search_code or search_implementation, which focus on searching within code rather than selecting from a fixed repository set.

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 description implies the tool is for choosing repositories given a document/query, but it does not explicitly state when to use this tool versus alternatives or mention exclusions. No sibling tool is referenced as a fallback, so the guidance is implied rather than explicit.

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

setup_dbC

Initialize the local SQLite FTS5 index and index repositories. Fetches file trees and content from GitHub, stores in local DB for fast search.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoRe-index even if already indexed (default: false)
reposNoSubset of REFERENCE_REPOS to index (default: all)

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. It discloses that it fetches from GitHub and stores in a local DB, but it omits side effects like network usage, potential overwrites, auth requirements, or the default behavior of skipping already-indexed repos unless force is set. This is insufficient for a setup tool with significant external effects.

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 short and front-loaded with the main verb and resource. However, the phrase 'Initialize the local SQLite FTS5 index and index repositories' is slightly redundant by using 'index' twice, and the second sentence could be merged. Still, it is efficient overall.

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 setup tool with side effects and no output schema, the description lacks important context: it doesn't mention required authentication (likely via login), the duration or impact of re-indexing, or the default skip-if-already-indexed behavior. Given the sibling tools, this could cause an agent to misuse the tool or miss prerequisites.

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 coverage is 100%, as both 'force' and 'repos' have descriptions in the schema. The description adds no parameter-level detail beyond what the schema already provides, so baseline 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 ('Initialize') and names the resource ('local SQLite FTS5 index') and the action ('index repositories'), making the core purpose clear. It distinguishes itself from sibling query/search tools conceptually, though it does not explicitly name alternatives or contrast with them.

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 gives no guidance on when to use this tool versus alternatives like login, refresh_auth, or query. It does not state prerequisites (e.g., must log in first) or when to use force/repos parameters. Usage context is entirely implied by the word 'Initialize.'

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

suggestionImplementation SuggestionA

Get an implementation suggestion combining Commonware research knowledge and actual code from reference repos. Ask any implementation question and get back a structured response with Summary, Reasoning, and Details.

FLOW MODEL: stage 1 is suggestion only; stage 2 (search_implementation) is user-triggered in the same session.

If repos is omitted, the tool auto-selects repos from REFERENCE_REPOS.

ParametersJSON Schema
NameRequiredDescriptionDefault
reposNoOptional repo override. If omitted, the tool auto-selects from: octocat/Hello-World, facebook/react
questionYesImplementation question, e.g. 'How would I implement a subblock mempool?'

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the tool's output format (Summary, Reasoning, Details), its reliance on reference repos, and the auto-selection behavior when repos is omitted. It does not detail any side effects or edge cases, but for a primarily read-oriented suggestion tool this is reasonably transparent.

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 compact and front-loaded: first sentence states purpose, second defines output format, and the remaining lines clarify workflow and default behavior. Every sentence adds necessary information with no filler or redundancy.

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

Completeness4/5

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

For a two-parameter tool with no output schema, the description adequately covers the return structure (Summary, Reasoning, Details) and default repo behavior. It could mention error handling or more details on what 'implementation suggestion' entails, but overall it is sufficient for an agent to select and 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?

Schema description coverage is 100%, with both parameters clearly described in the schema. The description adds the extra detail that omitted repos auto-selects from REFERENCE_REPOS, a slight enhancement over the schema's explicit repo list, but it does not substantially expand parameter meaning beyond what the schema already provides.

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 a specific action ('Get an implementation suggestion') and a defined resource ('combining Commonware research knowledge and actual code from reference repos'). It clearly distinguishes itself from the sibling search_implementation tool by describing the two-stage flow, which positions suggestion as the first stage.

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

Usage Guidelines5/5

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

Explicitly describes when to use the tool ('Ask any implementation question') and how it fits in the broader workflow ('stage 1 is `suggestion` only; stage 2 (`search_implementation`) is user-triggered in the same session'). This gives clear usage context and names the alternative tool.

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.

  1. 15 tool updatesv0.1.0
    • First observedfactcheck
    • First observedfactcheck_validate
    • First observedget_file
    • First observedget_file_tree
    • First observedlist_source_files
    • First observedlist_sources
    • First observedlogin
    • First observedquery
    • First observedrefresh_auth
    • First observedsearch_code
    • First observedsearch_file
    • First observedsearch_implementation
    • First observedselect_repositories
    • First observedsetup_db
    • First observedsuggestion

TDQS

B3.4/5.0

Scored across 15 tools

Disambiguation2/5

Several tools have overlapping purposes: search_implementation, search_code, and search_file all return code snippets, while query and suggestion both accept questions. The factcheck and factcheck_validate tools are distinct stages, but the many code-search tools create ambiguity and potential misselection.

Naming Consistency3/5

Most tools follow a verb_noun pattern (list_sources, get_file, search_code), but login, query, and suggestion deviate, and factcheck_validate is a compound verb. This mixed convention is readable but not fully consistent.

Tool Count4/5

15 tools is at the upper limit of a well-scoped set. While some tools could be consolidated, the count is appropriate for the server's multi-workflow scope (authentication, querying, implementation search, fact-checking, repo browsing).

Completeness3/5

The server covers authentication, NotebookLM queries, implementation suggestions, fact-checking, and repo browsing/searching. However, there is no way to manage reference repositories (add/remove) or to list available NotebookLM documents, and the factcheck workflow forbids using other tools, limiting flexibility.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that interfaces with Google NotebookLM to enable autonomous academic research and systematic knowledge management. It allows users to perform deep web searches and automatically generate study artifacts like research reports, presentation slides, and audio overviews.
    6
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Secure MCP server for querying Google NotebookLM notebooks. Enables AI assistants to list notebooks, read sources, and ask the NotebookLM AI questions about your sources.
    92 PyPI
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for querying Google NotebookLM notebooks, enabling AI assistants to list notebooks, read sources, and ask questions about them.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Zero-auth multi-source research MCP server that enables web search, reading URLs, PDFs, GitHub repos, and querying Hacker News, Stack Overflow, Semantic Scholar, and YouTube transcripts without API keys.
    40 PyPI
    10
    Apache 2.0