Skip to main content
Glama

R Knowledge MCP

Read-only MCP server providing source-attributed information about current R packages in CRAN and Bioconductor. Python 3.11+, official Python MCP SDK (FastMCP), async httpx, safe YAML release discovery. MIT licensed. CRAN/Bioconductor tools work without credentials. Context7 is an optional external integration and requires a server-side API key.

Install and run

git clone https://github.com/menshikovs/R-Knowledge-MCP.git
cd R-Knowledge-MCP
python -m venv .venv
# Linux/macOS:
source .venv/bin/activate
# Windows PowerShell instead: .venv\Scripts\Activate.ps1
python -m pip install -e '.[dev]'
r-knowledge-mcp                         # stdio (default)
r-knowledge-mcp --transport streamable-http  # http://127.0.0.1:8000/mcp

The cran-knowledge-mcp command remains available as a backward-compatible alias, and the Python import package remains cran_knowledge_mcp.

The project pins mcp>=1.30,<2. SDK 2 is the current stable major and renamed FastMCP to MCPServer; using the maintained 1.x line preserves the requested FastMCP API. See the official SDK documentation and migration guide.

Related MCP server: RTFD (Read The F*****g Docs)

Connect Codex

Use an absolute executable path from the installed virtual environment:

codex mcp add r-knowledge -- /absolute/path/R-Knowledge-MCP/.venv/bin/r-knowledge-mcp
codex mcp list

On Windows the executable is .venv\Scripts\r-knowledge-mcp.exe. Alternatively put this in ~/.codex/config.toml (use your actual absolute path):

[mcp_servers.r_knowledge]
command = "/absolute/path/R-Knowledge-MCP/.venv/bin/r-knowledge-mcp"

For a running local HTTP server:

codex mcp add cran-knowledge-http --url http://127.0.0.1:8000/mcp

Other MCP clients can launch the same stdio command or connect to /mcp using Streamable HTTP. The HTTP server is stateless and uses JSON responses. A ChatGPT remote connection needs reachable HTTPS hosting; this repository does not deploy or provide a hosted endpoint. Codex configuration follows official OpenAI documentation.

Tools and repository selection

Tool

Main arguments

Behavior

search_packages

query, repository="cran", bioc_version, limit=10, offset=0

Names and available title keywords

get_package_info

package, repository="cran", bioc_version, verify_archive=true

Versioned DESCRIPTION fields with explicit index/DESCRIPTION/archive assurance

get_dependencies

package, repository="cran", bioc_version, resolve_repositories=false

Raw dependency fields and optional repository resolution

get_function_docs

package, function, repository="cran", bioc_version, offset=0

Genuine raw Rd, paginated

get_package_vignettes

package, repository="cran", bioc_version

Vignette links from the version-checked official package page

get_package_agent_guidance

package, revision, repository, bioc_version

AGENTS.md files from the package's metadata-declared GitHub repository at an explicit ref, pinned to a commit SHA

get_context7_docs

package, question, repository, bioc_version

Context7 documentation/examples only after its library ID matches the package's verified metadata URL

get_package_knowledge

package, optional question, revision, repository, bioc_version

Package metadata and dependencies, plus requested GitHub/Context7 sections with their own provenance

get_shiny_docs

package, function, optional package_version

Exact Rd alias from current indexed CRAN source; known Shiny function ownership checked

explain_shiny_reactivity

topic, question, optional source

Reactive concept with retrieved official Shiny article and optional static findings

analyze_shiny_app

source or files, optional shiny_version

Heuristic checks on caller-supplied R text; never executes it

get_positron_guidance

topic, optional version/OS/R/project metadata

Retrieved Positron docs; current docs are not version-pinned

analyze_r_workspace

files mapping

Analyze selected contents and renv metadata; .Renviron values are redacted

get_quarto_docs

topic, optional quarto_version

Retrieved official Quarto pages; version caveat is explicit

analyze_quarto_document

source, optional project/R/dependency metadata

Safe YAML front matter, R chunk options, formats and citations; no render

analyze_quarto_project

_quarto.yml text, optional _metadata.yml and manifest

Project/profile/format metadata and manifest-level bibliography checks

get_r_workflow_guidance

scenario, explicit package list, optional R/Bioc versions

Combines selected package knowledge and framework docs without inventing recommendations

get_visualization_docs

package, function, optional package_version

Exact current CRAN Rd for ggplot2, ggraph, tidyr, plotly or knitr; unavailable historical versions are explicit errors

get_visualization_workflow

fixed scenario, optional package versions

Groups exact current Rd references for a named workflow; does not generate or run code

analyze_ggplot_code

R source, optional schema and package versions

Static layers, mapped/fixed aesthetics and simple schema checks

analyze_ggraph_code

R source, optional node/edge schemas

Static layout and scope-aware node/edge mapping checks

analyze_tidyr_pipeline

R source, optional input/expected schemas

Conservative reshape analysis and pivot key warnings

analyze_ggplotly_compatibility

R source, optional package versions

Narrow documented conversion caveats, not full compatibility

analyze_knitr_chunks

R Markdown/Quarto text, optional package versions

Static chunk labels/options/dependencies; no render or execution

get_bioconductor_version

r_version

Official R/release mapping and latest released recommendation for that R

check_package_compatibility

package, r_version, bioc_version

Bioconductor/R mapping and direct required dependency checks

check_package_version

package, installed_version

Existing CRAN numeric version comparison

build_r_prompt

request, optional R/Bioconductor context, packages, constraints, structured_context, composition_mode, templates, workflow_context, include_plan, include_provenance

Build a backward-compatible single-task prompt or one unified multi-stage workflow; package versions/docs are grounded only when verified from configured repository providers

improve_r_prompt

existing prompt, goals, optional context and structured_context

Add structure while preserving the full original text and explicit goals

validate_r_prompt

prompt_text

Heuristic checklist for gaps, conflicts, likely secrets and unverified pkg::function() references

list_r_prompt_templates

—

List stable IDs for 30 local R task templates, including CSV and SQL workflows

get_r_prompt_context

packages, optional R/Bioconductor versions

Return verified package metadata, dependencies, compatibility and source provenance without generating a prompt

repository accepts cran, bioconductor, and all. Existing calls default to CRAN. all keeps separate identities when names overlap, and exposes source failures in errors with verification_status="partial" or "failed". Absence from a checked index differs from an unavailable source. Combined search orders CRAN results then Bioconductor results, using a shared offset/limit (1-20).

get_package_info keeps deep archive verification as its backward-compatible default. Pass verify_archive=false to avoid downloading a package archive: CRAN reads the official per-package DESCRIPTION and checks its exact package and version against PACKAGES; if that optional endpoint returns 404, the tool returns partial index-only metadata and identifies missing fields. Bioconductor returns metadata available in the selected release's software, annotation, and experiment PACKAGES index. It does not fetch a current package page or substitute another release when DESCRIPTION fields are absent.

Inspect metadata_verification_level before relying on a result:

{
  "package": "ExamplePkg",
  "repository": "cran",
  "package_version": "2.10-1",
  "bioc_version": null,
  "verification_status": "verified",
  "metadata_verification_level": "description_version_matched",
  "source_url": "https://cran.r-project.org/web/packages/ExamplePkg/DESCRIPTION",
  "checked_at": "2026-10-22T00:00:00+00:00"
}

index_verified means the record came from the selected repository index; description_version_matched means a DESCRIPTION identity matched that index; archive_checksum_verified means the indexed archive checksum was present and matched. If an archive has no indexed checksum, deep mode still checks its DESCRIPTION package/version and reports description_version_matched. verification_status continues to describe whether the returned data was retrieved and validated; it does not imply the strongest assurance level.

Only get_package_info exposes the lightweight option. get_package_knowledge, GitHub AGENTS.md, Context7, Prompt Intelligence package grounding, and function Rd retrieval retain deep verification by default. Dependencies and Bioconductor compatibility already use the selected indices. See source assurance and performance measurements.

Prompt Intelligence also registers fourteen standard MCP Prompts, including r-multi-stage-workflow, which uses the same bounded local composition pipeline as build_r_prompt but does not query package providers. The other prompts cover package development, Shiny, Quarto, Bioconductor, ggplot2, debugging, architecture, CSV import/cleaning/validation, SQL queries/database connections, and CSV-to-SQL. They are user-selected, deterministic drafts. Connect clients that support MCP Prompts through their normal prompt discovery UI; MCP tools remain available for clients that invoke tools directly. These prompts do not inspect a local workspace or fetch package data, so their supplied context is explicitly unverified. Tools may fetch bounded package context from the existing official providers. Set PROMPT_INTELLIGENCE_ENABLED=false to disable the new tools and prompts without affecting existing knowledge tools.

Prompt construction, examples, configuration, limitations, and evaluation guidance are documented in Prompt Intelligence and the Composable Prompt Engine, which includes a complete generated CSV → PostgreSQL → dplyr → ggplot2 → Quarto prompt. The deterministic design and external optimizer comparison are in Prompt Engineering Research. The complete built-in prompt catalog and each template's package/API candidates are listed in Prompt Templates.

For Bioconductor, bioc_version accepts release (default), stable (alias), devel, or a specific historical release in the official map. Numbers are discovered dynamically, then used in pinned URLs. Unavailable history never falls back to release. Software, annotation and experiment data indices are searched together; results identify the category. PACKAGES often omits titles, so search can be name-only; missing titles are not generated.

Example MCP argument objects (not claims about current versions/compatibility):

{"query":"DESeq2","repository":"bioconductor"}
{"query":"ggplot2","repository":"cran"}
{"package":"DESeq2","repository":"bioconductor","bioc_version":"devel"}
{"package":"DESeq2","function":"DESeq","repository":"bioconductor"}
{"r_version":"4.4.2"}
{"package":"DESeq2","r_version":"4.4.2"}
{"package":"DESeq2","repository":"all","bioc_version":"3.20"}

get_bioconductor_version returns all mapped releases for an R major/minor and recommends the latest released one. It never implicitly recommends devel. Unknown R versions get no invented recommendation. Without an explicit release, check_package_compatibility chooses a released version mapped to the supplied R, or returns no_compatible_release.

Verification and compatibility

Every application result includes package, repository, package_version, bioc_version, source_url, checked_at, verification_status, and sources. Search/aggregate/version-map envelopes use null for non-applicable package identity/version fields; each package result has its own identity and provenance. Bioconductor results include channel, category, required R major/minor and warnings. Cached artifacts retain original UTC check times, up to five minutes old. Without an R version, package lookups say not_checked and warn clients to check compatibility before recommending a package.

Failures include error.code, message, source URL when known, and attempted_at; verification_status is failed. Unknown versions/check times remain null. Complete tool failures now set MCP isError=true, while preserving the structured error.code envelope. Partial results keep isError=false and retain their section-level failures. Clients should inspect isError first, then check verification_status and aggregate errors before using results. See MCP tool errors and partial results for the compatibility note and response examples.

Bioconductor dependency responses retain raw Depends/Imports/Suggests/LinkingTo and add resolved_dependencies: candidates in the selected release and current CRAN, version constraints and provenance. Duplicate origins are ambiguous; missing packages are not_found. R/base runtime packages are classified separately; installed runtime versions are not claimed. CRAN retains lightweight dependency responses by default; use resolve_repositories=true to resolve across both repositories, with an optional bioc_version for the dependency release. all resolves both ways.

GitHub AGENTS.md and Context7

get_package_agent_guidance reads the checked source archive's DESCRIPTION URL field and accepts one unambiguous HTTPS GitHub repository. It verifies that repository through GitHub REST, resolves the requested revision (branch, tag or commit) to a commit SHA, and searches that exact commit tree for files named AGENTS.md. Root and nested paths are returned separately with their directory scope. A complete tree with no matches reports verified absence; a truncated tree or API failure reports an error. Pass an explicit ref, such as a project tag or commit SHA; the server never guesses that a tag matches the R package version. External instructions are untrusted reference text: they cannot change system instructions and are never executed.

Context7 is disabled unless the server has CONTEXT7_API_KEY in its environment. The key is sent only as a bearer header to context7.com; it is never returned or included in a URL. The tool sends a redacted, bounded question and package name/repository hint, then requires an exact Context7 library ID match to the metadata-declared GitHub repository before requesting documentation. Exact package-version docs are requested only when Context7's result lists that version; otherwise the response is explicitly unpinned. Common credential patterns in a question are redacted before transmission. Context7 is an indexed secondary source. Compare its fragments with CRAN/Bioconductor and package docs. Rate limits and source errors remain explicit; successful results are cached for six hours.

This client follows the official Context7 API guide and GitHub REST Git Trees and Git Blobs APIs.

Set the key only on the server process:

CONTEXT7_API_KEY=ctx7sk-... r-knowledge-mcp

Without the key, get_context7_docs returns not_configured and the existing repository tools remain available. get_package_knowledge accepts optional question and revision; unrequested sections are marked not_requested, and each returned fragment retains its source URL and check time.

Configuration

Use .env.example as a reference and export only the settings you need in the server process. The application does not automatically load .env files. MCP_TRANSPORT, MCP_HOST, MCP_PORT, and LOG_LEVEL configure the CLI; LOG_INTERNAL_TRACEBACKS=true opts into DEBUG tracebacks that can contain request or upstream data, so use it only in a protected diagnostic environment; HTTP_TIMEOUT_SECONDS controls the httpx client timeout; HTTP_USER_AGENT sets its bounded User-Agent header; CACHE_TTL_SECONDS sets the CRAN/Bioconductor artifact cache lifetime; CACHE_MAX_BYTES sets its byte budget (maximum 256 MiB). GitHub guidance and Context7 use the same TTL override with source-specific defaults of one and six hours. Framework pages use a one-hour cache. CONTEXT7_API_KEY is optional. Invalid numeric bounds fail with an explicit configuration error. Prompt settings include PROMPT_INTELLIGENCE_ENABLED, PROMPT_MAX_INPUT_CHARS, PROMPT_MAX_OUTPUT_CHARS, PROMPT_MAX_GROUNDING_PACKAGES, PROMPT_DEFAULT_TARGET, and PROMPT_DEFAULT_DETAIL_LEVEL. See the prompt guide for bounds and meanings.

Compatibility returns metadata_compatible, incompatible or unknown, with a nullable compatible flag. It checks the official R/release mapping, package R constraints including patch requirements, and direct required dependency availability/version/R constraints. It does not solve transitive dependencies, inspect installed packages, or test platform binaries/system libraries. Historical releases use current CRAN candidates and warn that these may not match the historical environment. A successful metadata check is not an installation test.

latest_cran_version is retained only on CRAN results, separately from explicitly unverified, client-supplied installed_version. Neither provider infers local state.

Official sources and architecture

CRAN uses /src/contrib/PACKAGES, its name/title catalog and exact indexed source archives. Recommended Path overrides cannot replace canonical root records. Bioconductor uses:

  • config.yaml: release/devel and r_ver_for_bioc_ver, also used by BiocManager. No release number is fixed in code.

  • /packages/{version}/bioc/src/contrib/PACKAGES: software.

  • /packages/{version}/data/annotation/src/contrib/PACKAGES: annotation data.

  • /packages/{version}/data/experiment/src/contrib/PACKAGES: experiment data.

  • Exact indexed source archives for DESCRIPTION and raw man/*.Rd.

  • Numeric versioned official package pages for vignette links. Page/index disagreement is an error; linked content is not downloaded or executed.

Archive identity and available index MD5 are checked. MD5 detects consistency errors; HTTPS provides transport authenticity. No silent version substitution. Sources reviewed: installation, release/R history, BiocManager mapping, Writing R Extensions. Source formats and live package requests were checked on 2026-10-22.

src/cran_knowledge_mcp/
  server.py              MCP registration, lifecycle, stdio/HTTP CLI
  service.py             routing, provenance, combined results, compatibility
  releases.py            dynamic official Bioconductor/R map
  providers/protocol.py  PackageRepository extension contract
  providers/base.py      repository-neutral source/document operations
  providers/cran.py      CranProvider
  providers/bioconductor.py  BioconductorProvider, three categories per release
  providers/github_agents.py  pinned GitHub tree/blob reader for untrusted AGENTS.md
  providers/context7.py       optional, repository-matched Context7 client
  http.py                independent fixed-route policies, async HTTP, TTL/LRU
  parsers.py             bounded data-only DCF, HTML, gzip/tar and Rd aliases

See architecture details, source authority, security model, and development rules. For framework behavior and limits, see the Shiny, Positron and Quarto integration guide. Visualization, tidyr and reproducible reporting analysis is described in the visualization and reporting guide.

Limits and security

No arbitrary outbound URLs, redirects, environment proxies, archive extraction, R installation, package execution or Rd evaluation. Vignette links are restricted to exact official host/package/release paths. Package text remains untrusted data.

CRAN/Bioconductor artifacts use a configurable 5-minute default TTL and a 64 MiB / 32-artifact LRU budget. Framework pages use a one-hour cache; GitHub AGENTS.md uses a configurable one-hour default, and Context7 uses a configurable six-hour default. Provider caches are bounded and failed requests never replace fresh data. GitHub and Context7 use fixed HTTPS hosts and routes. No caller URL is fetched, redirects are rejected, GitHub tree/blob sizes and per-file/total AGENTS.md bytes are limited, and all external text remains untrusted. At most eight Bioconductor release providers are retained per service. Downloads are serialized per transport. Connect/read timeout is 15 seconds, download deadline 45 seconds, tool deadline 60 seconds. No error cache or stale fallback.

Config: 1 MiB; index/catalog/page: 16 MiB; source download: 25 MiB; expanded tar: 128 MiB; members: 20,000; selected file: 2 MiB; selected files: 16 MiB. Oversized annotation/experiment archives fail explicitly; index-level search/dependencies still work. JSON tool data: 60,000 UTF-8 bytes; raw Rd: 8,000 characters per page; direct dependency resolution: 250 entries.

HTTP defaults to loopback with DNS rebinding protection. A future domain can use repeatable --allowed-host cran.example.org (include port if needed). Public hosting needs TLS, ingress rate/body/concurrency limits and an egress policy. There is no deployment, hosted endpoint, authentication or per-client rate limiting here. Upstream documentation retains its package license.

Docker

docker build -t r-knowledge-mcp .
docker run --rm -p 127.0.0.1:8000:8000 r-knowledge-mcp
# stdio:
docker run --rm -i r-knowledge-mcp --transport stdio

The container runs as an unprivileged user. Binding 0.0.0.0 inside the container allows port forwarding; HTTP Host validation remains enabled.

Develop and verify

python -m pip install -e '.[dev]'
ruff check .
ruff format --check .
pytest

CI tests Python 3.11–3.14 and builds Docker without pushing an image. Unit and protocol tests mock HTTP and need no CRAN access. See AGENTS.md. For optional live checks after installation, run python scripts/smoke_cran.py or python scripts/smoke_repositories.py. The scheduled python scripts/smoke_upstream.py check covers selected official CRAN, Bioconductor, Shiny, Positron and Quarto sources. It also runs manually through the Official upstream smoke checks Actions workflow on the default branch. Live source checks are separate from ordinary PR CI because upstream outages are outside the repository's control. Coverage, failure categories and limits are described in Upstream monitoring.

Known limitations and next stage

Documentation is raw Rd with literal aliases; macros and conditional content are not rendered. Vignettes are verified link listings, not a claim that code was run or every linked document was downloaded. Bioconductor history requires an official mapping and all three retrievable indices. Missing/redirected legacy endpoints fail explicitly. Workflows/books are outside the requested categories.

No local inspection, renv lock restoration, archived CRAN version lookup, transitive solver, installation test or public hosting is included. Visualization tools can inspect bounded lock JSON explicitly supplied by the client, without restoring or verifying an installed library. See the roadmap. analyze_r_workspace only sees text provided by the client. Shiny and Quarto analyzers are static checks, not runtime, schema-complete, browser or security tests. Optional live checks after installation: python scripts/smoke_cran.py, python scripts/smoke_repositories.py and python scripts/smoke_upstream.py.

Available Tools

32 tools
analyze_ggplot_codeC
Read-only

Statically inspect ggplot calls and optional schemas; R source is never run.

NameRequiredDescriptionDefault
sourceYes
renv_lockNo
data_schemaNo
package_versionsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true. The one real addition is that R source is never executed, which is meaningful safety context beyond the annotations, but nothing is said about how the optional renv_lock/package_versions inputs affect analysis or about failure modes.

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?

A single front-loaded clause with zero filler. It is efficient, though the terseness is part of why parameter detail is missing.

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?

An output schema exists, so return values need not be explained, but three of four inputs are undocumented and there is no indication of what the analysis covers or how lockfile/schema inputs change the result. For a 4-parameter analysis tool this leaves too much unstated.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters, so the description must compensate and largely does not. It hints at 'optional schemas' (data_schema) but leaves renv_lock, package_versions, and the required source parameter completely unexplained.

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?

States a specific verb and resource: static inspection of ggplot calls. The word 'statically' and the ggplot target distinguish it from siblings like analyze_ggraph_code and analyze_ggplotly_compatibility, though it never names those alternatives explicitly.

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

Usage Guidelines2/5

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

No guidance on when to pick this over analyze_ggraph_code, analyze_ggplotly_compatibility, or analyze_tidyr_pipeline, and no prerequisites or exclusions. The agent must infer routing from the tool name alone.

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

analyze_ggplotly_compatibilityB
Read-only

Find documented ggplotly caveats; full compatibility is not claimed.

NameRequiredDescriptionDefault
sourceYes
renv_lockNo
package_versionsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context by clarifying that results are documented caveats only and that full compatibility is not guaranteed, which helps set expectations for the tool's output.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words, and both clauses carry useful information about the tool's scope and limitations.

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?

Although an output schema exists and annotations cover safety, the description leaves the three undocumented parameters completely unexplained. For a tool requiring a source input and optional environment data, the description should at least sketch what those parameters mean to be complete.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides no information about the three parameters (source, renv_lock, package_versions). An agent cannot infer what the required source should contain or what the optional version inputs are for.

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

Purpose4/5

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

The description states a specific action (find documented caveats) and scope (ggplotly), and caveats that full compatibility is not claimed. It is clear enough to distinguish this from a full compatibility checker, though it doesn't explicitly name sibling tools or say the input is ggplot source code.

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

Usage Guidelines2/5

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

The description offers no explicit when-to-use guidance, prerequisites, or alternatives to sibling tools like analyze_ggplot_code or check_package_compatibility. The disclaimer about not claiming full compatibility is a limitation, not usage guidance.

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

analyze_ggraph_codeC
Read-only

Statically inspect ggraph calls, separate node/edge mappings, and optional schemas.

NameRequiredDescriptionDefault
sourceYes
renv_lockNo
edge_schemaNo
node_schemaNo
package_versionsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The word 'statically' adds a useful behavioral fact (no code execution), but the description says nothing about what the analysis produces, how renv_lock or package_versions influence behavior, or what schemas are validated against.

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?

A single front-loaded sentence with no filler. It is efficient, but the brevity comes at the cost of the parameter detail needed elsewhere.

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?

An output schema exists, so return values need not be explained. However, with five undocumented parameters (0% coverage), an open-world read-only analysis tool, and no mention of how renv_lock/package_versions change results, the description is not complete enough for reliable invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden. It only vaguely alludes to node/edge schemas and says nothing about 'source' (the required code input), 'renv_lock', or 'package_versions'. Five parameters with no semantic explanation is a significant gap.

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?

States a specific verb ('statically inspect') and resource ('ggraph calls'), and names the sub-analyses (node/edge mappings, optional schemas). It implicitly distinguishes itself from the sibling analyze_ggplot_code by naming ggraph, though it doesn't explicitly contrast them.

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

Usage Guidelines1/5

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

No guidance on when to use this tool versus analyze_ggplot_code, analyze_ggplotly_compatibility, or get_visualization_docs. No prerequisites, no exclusions, nothing that helps an agent choose.

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

analyze_knitr_chunksC
Read-only

Inspect knitr and Quarto chunk options statically; never render or execute chunks.

NameRequiredDescriptionDefault
sourceYes
renv_lockNo
document_typeNo
package_versionsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds the useful clarification that the tool is static and never renders or executes chunks, but it does not cover parsing behavior, error handling, or other operational details beyond that safety constraint.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted wording. It efficiently communicates the core action and safety constraint.

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

Completeness2/5

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

The tool has four parameters, one required, with zero schema description coverage, yet the description provides no parameter semantics or usage context. Because an output schema exists, return values need not be explained, but the missing parameter and routing information leaves the definition substantially incomplete for this complexity level.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention any of the four parameters. Parameters such as renv_lock and package_versions are completely undocumented in both schema and description, leaving the agent without meaningful semantics for them.

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

Purpose4/5

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

The description states a specific verb and resource: inspect knitr and Quarto chunk options statically. It is clear what the tool does, but it does not explicitly differentiate itself from nearby siblings such as analyze_quarto_document or analyze_quarto_project.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any when-not conditions. The phrase 'never render or execute chunks' describes a behavioral constraint rather than a usage rule or sibling routing.

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

analyze_quarto_documentC
Read-only

Safely parse QMD YAML and fenced R chunk options without rendering or executing code.

NameRequiredDescriptionDefault
sourceYes
r_versionNo
dependenciesNo
project_configNo
quarto_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds a meaningful behavioral fact beyond that: parsing does not render or execute code, which is important for QMD files containing R chunks. It still does not describe error behavior or malformed-input handling.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler. Its brevity is efficient, though it leaves important semantics unstated rather than being verbose.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. However, for a 5-parameter tool with 0% schema description coverage, the description is incomplete: optional configuration parameters and usage distinctions remain opaque to an agent.

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

Parameters1/5

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

The tool has 5 parameters with 0% schema description coverage, and the description explains none of them. It does not clarify the expected source format or what r_version, dependencies, project_config, and quarto_version are for.

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?

States a specific verb ('parse') and resource ('QMD YAML and fenced R chunk options') and scopes it with 'without rendering or executing code.' It distinguishes itself from project-level or chunk-only analysis by focusing on a QMD document, though it does not explicitly name a sibling.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no alternative is named. The phrase 'without rendering or executing code' implies a safe static-analysis context but does not tell the agent when to choose this over analyze_quarto_project or analyze_knitr_chunks.

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

analyze_quarto_projectB
Read-only

Analyze supplied Quarto YAML and a path-only manifest; no server filesystem access.

NameRequiredDescriptionDefault
file_manifestNo
project_configYes
metadata_configNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds a meaningful behavioral constraint: the tool does not access the server filesystem and requires a path-only manifest, which affects how an agent must prepare inputs.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted words. The critical constraint about filesystem access is stated immediately alongside the input expectations.

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?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, for a three-parameter tool with 0% schema description coverage, the description leaves metadata_config undocumented and does not distinguish this tool from analyze_quarto_document, leaving meaningful gaps.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters, so the description must carry parameter meaning. It loosely maps "Quarto YAML" to project_config and "path-only manifest" to file_manifest, but never mentions metadata_config and does not clarify formats, requiredness, or path semantics.

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

Purpose4/5

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

The description states a specific verb and resource: analyzing supplied Quarto YAML and a path-only manifest. It is clear what the tool does, but it does not differentiate itself from the sibling analyze_quarto_document, which likely operates on document-level input rather than project-level configuration.

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 implies the tool works only with supplied data ("no server filesystem access"), but it gives no explicit when-to-use guidance, no exclusions, and no alternative routing to analyze_quarto_document. An agent must infer usage conditions from the input mode alone.

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

analyze_r_workspaceB
Read-only

Analyze supplied project text; never reads paths or exposes .Renviron values.

NameRequiredDescriptionDefault
filesYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is partly covered. The description adds real behavioral context beyond that: it never reads filesystem paths and never exposes .Renviron secrets, which tells the agent about both input expectations and a privacy guarantee.

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

Conciseness5/5

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

A single compact sentence with the safety guarantee front-loaded and zero filler. Nothing could be removed without losing meaning.

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

Completeness3/5

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

An output schema exists, so return values needn't be explained, but the tool takes a nested object and performs unspecified analysis. The description omits what the analysis covers, any input size limits, and how the file map is keyed, leaving gaps for a structurally complex tool.

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

Parameters3/5

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

Schema description coverage is 0% and the single 'files' parameter is a nested object with no documented structure. The phrase 'supplied project text; never reads paths' does compensate somewhat by signaling that values are content maps rather than paths, but it doesn't explain the filename-to-text mapping.

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

Purpose3/5

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

It names a specific verb ('analyze') and resource ('supplied project text') and distinguishes the input mode from path-reading tools, which helps separate it from siblings. But 'analyze' is vague about what analysis is actually performed, so an agent knows the target but not the outcome.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the many sibling analyze_* tools (analyze_shiny_app, analyze_quarto_project, etc.) or when not to. The only implied usage comes from 'project text' in the description.

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

analyze_shiny_appB
Read-only

Run bounded heuristic checks on supplied Shiny source; never executes it.

NameRequiredDescriptionDefault
filesNo
sourceNo
shiny_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds genuinely new behavioral context: analysis is 'bounded' and the code is 'never executed'. That non-execution guarantee is the key behavioral fact an agent needs and it is not in the 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?

A single short sentence with the scope qualifier ('bounded') and the safety guarantee ('never executes it') both front-loaded. No wasted words.

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?

An output schema exists so return values need not be described, but with three entirely undocumented parameters and no guidance on how files and source interact, the description leaves the agent guessing at invocation shape.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters, so the schema contributes nothing. The description mentions only 'supplied Shiny source' and says nothing about the files-vs-source alternative, precedence between them, or what shiny_version affects.

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?

States a specific verb and resource: bounded heuristic checks over supplied Shiny source. An agent can distinguish this from siblings like explain_shiny_reactivity, though the description does not explicitly name that boundary.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not guidance, and the nearby sibling explain_shiny_reactivity is not referenced. The phrase 'supplied Shiny source' only implicitly signals that source input is required.

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

analyze_tidyr_pipelineC
Read-only

Statically inspect tidyr operations; data-dependent results are not inferred.

NameRequiredDescriptionDefault
sourceYes
renv_lockNo
input_schemaNo
expected_schemaNo
package_versionsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description does add one genuinely useful behavioral caveat — the analysis is static and data-dependent results are not inferred — which tells the agent not to expect runtime resolution. It still omits what the result contains beyond that limitation.

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?

A single compact sentence with no filler, and the key constraint is front-loaded. It is arguably too terse given the undocumented parameters, but as a piece of writing it wastes nothing.

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?

An output schema exists, so return values need not be explained, but with five parameters and zero schema descriptions the agent has no idea how to populate renv_lock, input_schema, expected_schema, or package_versions. For a multi-input analysis tool this description is substantially incomplete.

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

Parameters1/5

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

Five parameters with 0% schema description coverage and no titles beyond bare names like 'renv_lock' and 'expected_schema'. The description explains none of them — not what 'source' must contain, not what the schema objects are used for, not how 'package_versions' affects analysis — so it does nothing to compensate for the coverage gap.

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

Purpose3/5

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

States a verb ('statically inspect') and a resource ('tidyr operations'), and the 'tidyr' qualifier does loosely separate it from the analyze_* siblings. However, it never says what the inspection produces (a schema? an error report? a compatibility verdict?) nor how it differs from analyze_ggplot_code or analyze_knitr_chunks, leaving the tool's actual output purpose ambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus the many other analyze_* tools, no mention of prerequisites such as needing the source of a pipeline, and no indication of what to do with the optional inputs. Usage is only weakly implied by the word 'tidyr'.

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

build_r_promptC
Read-only

Build one editable R prompt; compose detected workflow stages without executing them.

NameRequiredDescriptionDefault
targetNo
requestYes
languageNoauto
packagesNo
r_versionNo
templatesNo
constraintsNo
detail_levelNo
include_planNo
task_categoryNo
include_sourcesNo
project_contextNo
composition_modeNoauto
enhancement_modeNodeterministic
workflow_contextNo
include_provenanceNo
structured_contextNo
bioconductor_releaseNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavior beyond that by stating the prompt is editable and that stages are composed 'without executing them,' but it does not explain how workflow stages are detected or what the result looks like.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted text. Its brevity is appropriate for the conciseness dimension, even though the definition is under-specified elsewhere.

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

Completeness2/5

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

For a tool with 18 parameters and no schema descriptions, the one-sentence description is not complete enough to guide correct invocation. The output schema reduces the need to describe return values, but composition mode, enhancement mode, target, packages, and other parameters remain unexplained.

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

Parameters1/5

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

The schema has 18 parameters with 0% description coverage, and the description does not explain any of them: target, packages, templates, constraints, composition_mode, enhancement_mode, and the rest are left entirely undocumented. This is a critical gap for a complex tool.

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 gives a specific verb and resource: 'Build one editable R prompt.' It also clarifies that it composes workflow stages without executing them, which helps distinguish it from analysis/execution tools, though it does not name sibling 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?

There is no explicit guidance on when to use this tool instead of siblings such as improve_r_prompt, validate_r_prompt, or get_r_prompt_context. The intended usage is only implied by the tool name and the phrase 'compose detected workflow stages.'

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

check_package_compatibilityC
Read-only

Check R/release and direct required dependency constraints; installation is untested.

NameRequiredDescriptionDefault
packageYes
r_versionYes
bioc_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful disclosure — 'installation is untested' — clarifying this is a static constraint evaluation, not a real install simulation. It stops there, saying nothing about whether dependency resolution is recursive, whether network/CRAN access occurs, or what happens when the R version is invalid.

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?

A single front-loaded sentence with no filler; the key caveat is placed after the semicolon where it reads as a qualifier rather than a headline. It is not padded, though the terseness borders on under-specification rather than crispness.

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?

An output schema exists, so return values need not be explained, but a three-parameter tool with 0% schema description coverage and no annotations about network or resolution behavior needs far more from the description. The unexplained bioc_version parameter alone is enough to leave an agent guessing on a required-ish input.

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

Parameters2/5

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

Schema description coverage is 0%: none of the three parameters (package, r_version, bioc_version) carries any documented meaning. The description only obliquely gestures at version checking and never explains the expected format of r_version, whether package takes a name or name@version, or what bioc_version controls. With full burden on the description, this is a significant gap.

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

Purpose3/5

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

The verb 'Check' plus the resource 'compatibility' is identifiable, and the description narrows scope to the R/release version and direct required dependency constraints. However, phrasing like 'R/release' is compressed shorthand, and it never states in plain terms whether the check covers a package's declared version requirement vs. its dependencies' requirements. It is distinguishable from check_package_version only by inference.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives despite close siblings such as check_package_version, get_dependencies, and get_bioconductor_version. The agent must guess whether to run this before or instead of those tools.

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

check_package_versionA
Read-only

Compare a client-supplied R package version to CRAN; never claims local verification.

NameRequiredDescriptionDefault
packageYes
installed_versionYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, but the description adds real value: it discloses that the comparison is against live CRAN and explicitly disclaims local verification, preventing the agent from assuming it inspects the local library. It does not mention network-failure behavior or latency.

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

Conciseness5/5

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

A single tight sentence with the core action front-loaded and the scope caveat immediately after; no filler and every clause contributes.

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?

An output schema exists so return values needn't be explained, and annotations cover the safety profile. For a two-parameter lookup the description is nearly sufficient, with only edge-case behavior (network failure, unparseable versions) left unaddressed.

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 0% and neither parameter is documented, so the description must compensate. It partially does by clarifying that installed_version is supplied by the caller and compared to CRAN rather than read from disk, but it gives no format or version-string syntax guidance for either parameter.

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?

States a specific verb (Compare) and resource (an R package version) and names the comparison baseline (CRAN), which separates it from siblings like get_package_info or search_packages. It stops short of explicitly differentiating itself from the closely related check_package_compatibility.

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?

"Client-supplied" implies this is for versions the caller already knows, not for probing a local install, which is useful implied context. However, no sibling is named as an alternative and there is no explicit when-not guidance (e.g. versus check_package_compatibility).

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

explain_shiny_reactivityC
Read-only

Explain a Shiny topic with official docs and optional static source checks.

NameRequiredDescriptionDefault
topicYes
sourceNo
questionYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds that output is grounded in official docs and can include static source checks — useful context — but does not say what the static checks inspect, what happens if source is passed, or any fetch/rate-limit behavior implied by openWorldHint.

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?

A single tight sentence with no filler. It is appropriately sized, though the brevity comes at the cost of the missing routing guidance.

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?

An output schema exists so return values need not be described, but with 0% schema coverage the description should explain the two required parameters and the topic enum, and it should route against the three nearby Shiny/R siblings. None of that is present.

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

Parameters2/5

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

Schema description coverage is 0% for all three parameters: the topic enum values (reactivity, isolation, modules, async, basics) are undocumented, and neither question nor source is explained. The phrase 'optional static source checks' faintly hints at what source is for, which is the only semantic value added.

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

Purpose3/5

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

The verb 'explain' plus 'Shiny topic' and the mechanism ('official docs', 'optional static source checks') give a workable purpose, but in a sibling set containing get_shiny_docs, analyze_shiny_app and analyze_r_workspace the description never distinguishes itself from those. An agent cannot tell from this text why it should pick this tool over get_shiny_docs.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus get_shiny_docs (plain doc lookup) or analyze_shiny_app (code analysis). The word 'optional' implies source checks are conditional, but the condition is not stated.

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

get_bioconductor_versionA
Read-only

Map R to official Bioconductor releases; never recommend devel implicitly.

NameRequiredDescriptionDefault
r_versionYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations establish read-only, open-world, non-destructive behavior, so the description needn't repeat safety details. It adds a valuable policy constraint about not implicitly recommending devel releases, which goes beyond structured 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, front-loaded sentence with no wasted words. It states the mapping behavior and then the most important constraint.

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?

An output schema exists, so return values need not be explained. The description is adequate for the simple lookup, but it leaves the parameter format and sibling-tool routing under-specified.

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

Parameters2/5

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

There is one required parameter (r_version) with 0% schema description coverage. The description mentions mapping R but adds no format, expected syntax, or examples for the parameter, so it fails to compensate for the schema gap.

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

Purpose4/5

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

The description states a specific verb-resource pair: mapping R versions to official Bioconductor releases. It implies a lookup operation distinct from sibling package-version checks, though it does not explicitly name those siblings.

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?

It gives a clear behavioral rule ('never recommend devel implicitly'), which implies usage context. However, it does not say when to use this tool versus siblings like check_package_version or check_package_compatibility.

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

get_context7_docsC
Read-only

Fetch Context7 docs after matching its ID to verified package metadata.

NameRequiredDescriptionDefault
packageYes
questionYes
repositoryNocran
bioc_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnly=true, openWorld=true, destructive=false, so safety is covered. The description adds nothing behavioral beyond that: no word on how the docs are matched, what happens when no match is found, whether results are ranked, or what the openWorld lookup actually contacts. The 'verified metadata' phrase hints at a gating step but never explains it.

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

Conciseness3/5

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

It is a single short sentence with no filler, so nothing is wasted — but for a 4-parameter, open-world retrieval tool it is under-specified rather than concise. The one clause it spends words on (ID matching) is the least useful and most confusing part.

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?

An output schema exists so return values needn't be explained, and annotations cover the safety profile. Still, in a family of 32 sibling tools, a one-line description that never distinguishes this documentation source from the others leaves an agent without enough to choose it correctly.

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

Parameters2/5

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

Schema coverage is 0% across 4 parameters, so the description must carry the load, and it barely does. 'Verified package metadata' faintly implies the package must be a real registered package, but nothing explains what 'question' should contain or how bioc_version interacts with repository, despite the enum on repository.

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

Purpose2/5

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

It says to 'Fetch Context7 docs', which names a verb and a resource, but 'Context7' is unexplained and the qualifier 'after matching its ID to verified package metadata' describes no parameter the tool actually takes (the schema has package/question/repository/bioc_version, not an ID). An agent cannot tell what this does relative to get_function_docs or get_package_vignettes.

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?

'After matching its ID to verified package metadata' is the only sequencing hint and it references a nonexistent ID-matching step. There is no statement of when to prefer this over the many sibling doc tools (get_function_docs, get_package_vignettes, get_shiny_docs, get_quarto_docs) or when not to use it.

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

get_dependenciesC
Read-only

Get direct dependency fields; Bioconductor also resolves CRAN/Bioconductor origins.

NameRequiredDescriptionDefault
packageYes
repositoryNocran
bioc_versionNo
resolve_repositoriesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare read-only, non-destructive, open-world behavior. The description adds a genuine behavioral nuance: the Bioconductor path resolves CRAN/Bioconductor origins. However, it does not explain what resolve_repositories does, how repository='all' behaves, or whether resolution causes extra network calls.

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?

A single compact sentence with no filler, front-loaded with the core action. The semicolon clause is dense and would benefit from slight unpacking, but nothing is wasted.

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?

An output schema exists, so return values need not be explained. But for a four-parameter tool with zero schema descriptions, the description leaves most input semantics unexplained and is too thin to guide correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It only hints at repository-resolution behavior for Bioconductor and says nothing about package, bioc_version, resolve_repositories, or the repository enum values.

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

Purpose4/5

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

States a specific verb and resource: 'Get direct dependency fields'. The word 'direct' usefully scopes it against transitive dependency tools, but 'dependency fields' is vague about what is actually returned and no sibling is named for contrast.

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

Usage Guidelines2/5

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

No indication of when to use this versus alternatives such as check_package_compatibility or get_package_info. Usage is only implied by the tool name; there are no exclusions or selection criteria.

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

get_function_docsC
Read-only

Get raw Rd by literal alias from the selected repository and release source archive.

NameRequiredDescriptionDefault
offsetNo
packageYes
functionYes
repositoryNocran
bioc_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful context that the output is raw Rd from a source archive, but it does not disclose failure behavior, rate limits, or what happens with missing aliases.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It is dense with domain jargon such as 'Rd' and 'literal alias', but structurally it is efficient.

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 five-parameter tool with zero schema descriptions, the description is too sparse to guide correct invocation. An output schema exists, but input semantics, repository/bioc_version behavior, and sibling-tool alternatives are not adequately covered.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the burden for five parameters. It only vaguely maps 'literal alias' to function and 'selected repository' to repository, while leaving package, offset, and bioc_version unexplained.

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 names a specific verb and resource: retrieving raw Rd documentation by literal alias from a repository/source archive. It is clear what the tool returns, but it does not explicitly differentiate its role from sibling docs tools such as get_package_vignettes or get_context7_docs.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this instead of the many sibling documentation tools, nor any exclusions or prerequisites. Usage is only loosely implied by the phrase 'raw Rd' and the repository/source archive context.

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

get_package_agent_guidanceB
Read-only

Read AGENTS.md at a metadata-verified GitHub ref; never execute it.

NameRequiredDescriptionDefault
packageYes
revisionYes
repositoryNocran
bioc_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only profile is covered. The description adds genuinely new context beyond them: the source is metadata-verified (implies an external fetch and verification step) and the fetched content is untrusted guidance that must not be executed, which is meaningful prompt-injection context.

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?

A single front-loaded sentence with no wasted words; the resource and safety constraint both land immediately. It is terse to the point of omitting scope detail, but nothing is padding.

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?

An output schema and annotations cover return shape and safety, so those needn't be described. However, for a four-parameter network-reading tool with zero schema descriptions, the description leaves repository/bioc_version behavior, and what happens when AGENTS.md is absent, unexplained.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning and largely fails. 'metadata-verified GitHub ref' loosely hints that revision is a git ref, but repository (cran/bioconductor enum) and bioc_version are entirely unexplained, as is the package identifier format.

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?

States a specific verb ('Read') and resource ('AGENTS.md') at a metadata-verified GitHub ref, which is clear enough to distinguish it from sibling docs tools. It does not explicitly name a sibling alternative, but the resource is unmistakable.

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?

Gives no when-to-use condition and never contrasts with siblings like get_package_knowledge or get_positron_guidance, which also surface package guidance. 'Never execute it' is a safety rule, not selection guidance.

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

get_package_infoC
Read-only

Get metadata with index/DESCRIPTION lookup or deep archive verification.

NameRequiredDescriptionDefault
packageYes
repositoryNocran
bioc_versionNo
verify_archiveNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that verification can be 'deep archive' — which merely restates the verify_archive parameter — and says nothing about network cost, what is verified, or failure behavior for a tool that can reach out to repositories.

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

Conciseness3/5

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

One front-loaded sentence with no padding, which is good, but its brevity comes at the cost of substance rather than from efficient information density.

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?

An output schema exists, so return values need not be described, but with four undocumented parameters, an enum that needs explanation, and two distinct retrieval modes left ambiguous, the definition is too thin for an agent to call this correctly on the first attempt.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden, yet it explains none of the four parameters: not the repository enum (cran/bioconductor/all), not the role of bioc_version, and not what toggling verify_archive actually changes. The single mention of archive verification only echoes the parameter name.

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

Purpose3/5

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

The description states a verb and resource ('Get metadata') and hints at two retrieval modes (index/DESCRIPTION lookup vs. deep archive verification). However, in a sibling set crowded with get_package_knowledge, check_package_version, search_packages and get_dependencies, 'metadata' is too broad to tell an agent what this returns that those do not.

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

Usage Guidelines2/5

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

There is no statement of when to pick this over get_package_knowledge, search_packages or check_package_version, and no prerequisites or exclusions. The 'index/DESCRIPTION lookup or deep archive verification' phrase gestures at two modes but never says when to choose each.

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

get_package_knowledgeC
Read-only

Combine package metadata with requested AGENTS.md and Context7 material.

NameRequiredDescriptionDefault
packageYes
questionNo
revisionNo
repositoryNocran
bioc_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety and external-lookup behavior are covered structurally. The description adds only that multiple sources are merged, and says nothing about what happens when a package lacks an AGENTS.md, when Context7 has no match, or how partial results are surfaced.

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

Conciseness3/5

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

A single short sentence is efficient and front-loaded, but here brevity comes at the cost of under-specification rather than sharpness — there is no wasted clause, yet also no sentence that establishes what the agent gets back or how to choose inputs.

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?

Although an output schema exists (so return shape needn't be described), a 5-parameter aggregation tool spanning three external sources needs far more than one sentence. Nothing addresses repository/bioconductor selection, revision pinning, answerable-question semantics, or the behavior of combining sources.

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

Parameters1/5

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

Schema description coverage is 0% across 5 parameters, so the description carries the full burden and fails: it never explains what 'package', 'revision', 'repository', 'bioc_version', or especially 'question' mean or how they change behavior. 'Requested AGENTS.md and Context7 material' vaguely gestures at optional inputs but does not map to any parameter.

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

Purpose3/5

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

The verb 'combine' plus the resources (package metadata, AGENTS.md, Context7 material) hints that this is an aggregator over package info, agent guidance, and external docs. However, it never states that explicitly, and with siblings like get_package_info, get_package_agent_guidance, and get_context7_docs present, an agent cannot tell from the text whether this replaces those tools or supplements 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?

There is no when-to-use guidance, no mention of alternatives, and no conditions under which an agent should pick this over the three single-purpose siblings it apparently wraps. The word 'requested' implies optionality but gives no criteria.

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

get_package_vignettesB
Read-only

List vignette links from the version-checked official page; never execute content.

NameRequiredDescriptionDefault
packageYes
repositoryNocran
bioc_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds useful behavioral context by specifying that links come from a version-checked official page and that content must never be executed, though it does not discuss rate limits or pagination.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted wording. The purpose and the no-execution safety constraint both earn their place.

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?

An output schema exists, so the description need not explain return values, and annotations cover safety. However, with three undocumented parameters and no guidance on repository or bioc_version semantics, the description is too sparse for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% for three parameters, and the description does not mention the package, repository, or bioc_version parameters at all. It provides no meaning for the enum values or the version-checking behavior.

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

Purpose4/5

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

The description states a specific verb and resource: list vignette links. It also scopes the source as the version-checked official page, making the purpose clear, but it does not explicitly distinguish itself from sibling documentation-oriented tools such as get_function_docs.

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 only guidance is the safety constraint 'never execute content.' There is no explicit guidance on when to use this tool versus alternatives such as get_package_info or get_function_docs, nor any stated exclusions.

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

get_positron_guidanceB
Read-only

Retrieve official Positron guidance; this does not control the IDE or an R session.

NameRequiredDescriptionDefault
topicYes
r_versionNo
project_typeNo
operating_systemNo
positron_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds a useful behavioral boundary: this tool retrieves guidance and does not control the IDE or an R session. It does not describe the return format or whether guidance varies with optional context parameters, but with annotations present the bar is lower.

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

Conciseness5/5

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

A single front-loaded sentence that states the action and the key limitation with zero wasted words. It is appropriately sized for a retrieval tool with structured annotations and an output schema.

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 tool is read-only, has an output schema, and annotations cover safety; the description's negative scope is valuable. But with five parameters at 0% schema description coverage, the description should explain how optional context arguments affect the returned guidance. It also does not clarify how this differs from sibling guidance/documentation tools.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions no parameters at all, not even the required 'topic' enum. The enum values are self-descriptive, but the four optional parameters (r_version, project_type, operating_system, positron_version) receive no explanation of how they refine the guidance, leaving a significant gap.

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

Purpose4/5

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

The description states a specific verb and resource: 'Retrieve official Positron guidance.' It also scopes the tool by explicitly saying what it does not do ('does not control the IDE or an R session'), which helps distinguish it from IDE-control tools. It does not differentiate from sibling documentation/guidance tools such as get_r_workflow_guidance or get_quarto_docs, so it falls short of a 5.

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

Usage Guidelines3/5

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

The intended usage is implied by the name and topic enum: fetch Positron guidance on a given topic. The negative clause rules out IDE or R-session control, which is useful. However, the description gives no explicit guidance on when to choose this tool over the many sibling docs/guidance tools.

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

get_quarto_docsC
Read-only

Retrieve a page from the fixed catalog of official Quarto documentation.

NameRequiredDescriptionDefault
topicYes
quarto_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds that the catalog is fixed rather than free-form search, which is useful, but says nothing about how quarto_version affects results (fallback? error?) or what happens for unsupported versions.

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?

A single front-loaded sentence with no filler. It is efficiently written, though the brevity comes at the cost of the missing parameter and usage detail.

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

Completeness2/5

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

An output schema exists so return values needn't be spelled out, but with both parameters undocumented and no routing against sibling doc tools, an agent lacks what it needs to call this confidently with a specific version.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden, yet it never mentions 'topic' or 'quarto_version'. Only indirectly does 'fixed catalog' hint that topic is a closed set; the nullable version parameter is entirely unexplained.

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?

States a specific verb ('Retrieve') and resource ('a page from the fixed catalog of official Quarto documentation'). It is distinguishable from analysis siblings like analyze_quarto_document, but it never contrasts itself with the other doc-lookup tools (get_context7_docs, get_shiny_docs).

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

Usage Guidelines2/5

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

No guidance on when to reach for this versus get_context7_docs or the analysis/guidance siblings in the same family. The agent must infer that 'fixed catalog' means only a small known set of topics is served.

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

get_r_prompt_contextC
Read-only

Resolve selected R package versions, direct dependencies and source provenance.

NameRequiredDescriptionDefault
packagesYes
r_versionNo
bioconductor_releaseNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds that resolution includes direct dependencies and source provenance, which is real content beyond the annotations, but says nothing about network resolution behavior, failure modes, or how versions are chosen.

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?

A single front-loaded sentence with no filler. Efficient, though its brevity is achieved partly by omitting needed detail rather than by sharp editing.

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?

With an output schema present, return values needn't be described, and annotations cover safety. However, three undocumented parameters and no usage boundaries against a dense sibling set leave the definition under-specified for what appears to be a context-assembly tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden. It loosely implies the 'packages' parameter ('selected R package versions') but never explains r_version or bioconductor_release, or the accepted package string format.

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

Purpose3/5

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

The verb 'Resolve' with the objects 'R package versions, direct dependencies and source provenance' gives a rough sense of the operation. But the tool name implies prompt-context assembly, which the description never mentions, and there is no differentiation from siblings like get_dependencies or check_package_version that appear to cover overlapping ground.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the many adjacent siblings (get_package_info, get_dependencies, check_package_version, check_package_compatibility). The agent is left to infer the selection condition entirely.

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

get_r_workflow_guidanceC
Read-only

Combine official framework docs with knowledge for explicitly named packages.

NameRequiredDescriptionDefault
packagesNo
scenarioYes
r_versionNo
bioc_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only a thin behavioral clue that it combines official framework docs with package knowledge and works for explicitly named packages. It says nothing about the scenario-driven behavior, source boundaries, or why explicit package naming matters.

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

Conciseness3/5

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

The description is a single sentence with no fluff, so it is concise. However, for a tool with a required scenario enum and several optional parameters, it is too sparse to function as a well-structured definition, and it does not front-load the key usage or parameter context.

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?

An output schema exists, so return values need not be described, and annotations cover safety. Even so, the description is inadequate for the tool's complexity: it omits the scenario-based nature, the required scenario values, version parameters, and the distinction from neighboring documentation and package-knowledge tools.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for four undocumented parameters. It only indirectly mentions the packages parameter via 'explicitly named packages' and says nothing about the required scenario enum, r_version, or bioc_version. The scenario parameter is especially important and completely absent from the description.

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

Purpose3/5

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

The description states that the tool combines official framework docs with package knowledge, which gives a rough sense of the action. However, it does not mention R workflow guidance, scenario-based guidance, or how it differs from siblings such as get_package_knowledge, get_quarto_docs, get_positron_guidance, or get_visualization_workflow. The purpose is therefore vague rather than clearly differentiated.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus the many sibling guidance/doc tools. The phrase 'for explicitly named packages' hints at package scoping but does not tell the agent when this workflow-guidance tool is the right choice or when it should use alternatives.

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

get_shiny_docsB
Read-only

Get genuine Rd for a Shiny function from a CRAN source archive.

NameRequiredDescriptionDefault
packageYes
functionYes
package_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds one useful behavioral detail — that documentation is pulled from a CRAN source archive, implying a network fetch of a package tarball rather than a cached/local lookup. It says nothing about what happens if the package or version is absent, or about fetch cost.

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?

A single front-loaded sentence with no filler. It is efficient, though the brevity is part of why usage and parameter gaps remain.

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?

An output schema exists, so return-value explanation is not needed, and annotations carry the safety signals. What is missing is the piece an agent most needs with a near-identical sibling: routing guidance versus get_function_docs and the meaning of package_version.

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

Parameters2/5

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

Schema description coverage is 0%, so all three parameters (package, function, package_version) are undocumented in the schema. The description implies what `package` and `function` mean but never explains `package_version` — whether it pins a specific release, defaults to latest, or accepts range syntax — leaving a real gap the description should have filled.

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

Purpose4/5

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

The description states a specific verb and resource ("Get genuine Rd for a Shiny function") plus the source ("CRAN source archive"), so the agent knows this retrieves raw Rd documentation. It stops short of distinguishing itself from the sibling get_function_docs, which sounds nearly identical in purpose.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus get_function_docs, get_context7_docs, or get_package_info, all of which appear to overlap. The phrase "genuine Rd" hints at raw-source retrieval but never says why an agent would pick that over rendered docs.

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

get_visualization_docsC
Read-only

Get exact current CRAN Rd by alias; historical versions are not substituted.

NameRequiredDescriptionDefault
packageYes
functionYes
package_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds one genuinely useful behavioral fact: the returned docs are the exact current CRAN Rd and are never silently substituted with older content. It says nothing about sourcing, failure mode when an alias doesn't exist, or latency, which with openWorldHint=true would be valuable.

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?

One compact sentence with the freshness guarantee placed second, so nothing is wasted. Brevity is slightly overstated here — the terseness is part of why the parameter story is missing — but structurally it is clean and front-loaded.

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

Completeness2/5

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

With an output schema and annotations present, the bar is lower, but the description still leaves two decision-critical gaps: how this differs from get_function_docs, and whether package_version is meaningful. For a 3-parameter, enum-constrained docs lookup in a crowded sibling set, that is not enough to call it correctly with confidence.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning — and it doesn't. It never explains that 'function' means the Rd alias, nor what package_version does, and the statement 'historical versions are not substituted' actively conflicts with the existence of a nullable package_version parameter, leaving the agent unsure whether that argument is honored or ignored.

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

Purpose3/5

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

The verb+resource is 'Get exact current CRAN Rd', which is specific, but 'by alias' is R-documentation jargon and the tool name (get_visualization_docs) points at visualization rather than the generic CRAN Rd lookup described. Nothing distinguishes it from the sibling get_function_docs, so an agent cannot tell which one to call without guessing.

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 single clause 'historical versions are not substituted' implies a freshness preference but gives no when-to-use/when-not guidance and never names the obvious alternative (get_function_docs, get_context7_docs, get_package_vignettes). No prerequisites or coverage of which packages are eligible are stated in prose.

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

get_visualization_workflowD
Read-only

Group current official function references; no code is generated or run.

NameRequiredDescriptionDefault
scenarioYes
package_versionsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

D1.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds only that no code is generated or run, which is largely redundant with readOnlyHint and does not clarify what 'grouping references' actually entails, such as whether it returns a structured workflow or prose guidance.

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

Conciseness3/5

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

The description is a single short sentence, so it is concise, but its brevity comes at the cost of clarity and it is not front-loaded with the tool's actual purpose. The negative clause 'no code is generated or run' is useful but the main clause is too vague to earn its place.

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

Completeness1/5

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

Given two parameters with an enum, an output schema, and a complex visualization-workflow domain, the description is far too thin. It never explains what the four scenario values produce or how this tool fits among the many visualization and analysis siblings.

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

Parameters1/5

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

The schema has two parameters, including a required 'scenario' enum with four values, but the description mentions neither parameter. With schema description coverage at 0%, the description does nothing to explain what the scenario values mean or how package_versions should be supplied.

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

Purpose2/5

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

The description says 'Group current official function references', which is vague and does not mention visualization, workflows, or the scenario-based output implied by the name. It fails to differentiate this tool from siblings like get_visualization_docs or get_r_workflow_guidance.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as get_visualization_docs or the many analyze_* tools. The only constraint offered is 'no code is generated or run', which is a negative behavioral statement rather than a usage condition.

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

improve_r_promptC
Read-only

Structure an existing prompt while retaining its complete original text and constraints.

NameRequiredDescriptionDefault
targetNo
packagesNo
r_versionNo
detail_levelNo
existing_promptYes
project_contextNo
enhancement_modeNodeterministic
improvement_goalsNo
structured_contextNo
bioconductor_releaseNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

The description adds one genuinely useful behavioral guarantee beyond annotations — that the original text and constraints are preserved, i.e. the transformation is non-destructive. However, with openWorldHint=true, it says nothing about enhancement_mode='external' potentially reaching outside the process, nor about how the three modes differ, which is the main behavioral risk an agent needs disclosed.

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

Conciseness3/5

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

One front-loaded sentence with no filler, which is structurally good, but it is under-specified rather than concise — the brevity comes at the cost of any parameter or mode explanation.

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?

An output schema exists so return values need not be described, but for a 10-parameter tool with three enums and a defaulted enhancement_mode, this one-liner leaves an agent unable to choose values for most inputs. It is complete only on the single required path.

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

Parameters2/5

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

Schema description coverage is 0% across 10 parameters, so the description carries the full burden, yet it explains none of them — target, packages, r_version, detail_level, improvement_goals, enhancement_mode, project_context, structured_context and bioconductor_release are all opaque. Only 'constraints' loosely gestures at existing_prompt's semantics.

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 gives a concrete verb and resource ('Structure an existing prompt') plus the key invariant (retains original text and constraints), so an agent knows this is a non-lossy rewrite of a supplied prompt rather than a new-prompt generator. It does not explicitly contrast with siblings build_r_prompt or validate_r_prompt, which is the only thing keeping it from a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no mention of build_r_prompt (create from scratch) or validate_r_prompt (check an existing one) as alternatives, even though these are the tools an agent would most plausibly confuse with this one. The agent must infer the routing itself.

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

list_r_prompt_templatesA
Read-only

List stable built-in R prompt template identifiers and descriptions.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already establish that this is a read-only, non-destructive, open-world operation. The description adds that templates are stable and built-in and that both identifiers and descriptions are returned, but it does not add further behavioral context such as ordering or result limits. No contradiction with 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 front-loaded sentence with no wasted language. Every word contributes to stating what the tool lists.

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 zero-parameter read-only list tool, the description, annotations, and output schema together provide enough context to invoke it correctly. The only minor gap is the absence of explicit guidance about when to choose it over prompt-related sibling tools.

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 there are no parameter semantics to explain. The schema itself is empty, and the baseline for zero-parameter tools is adequate.

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

Purpose4/5

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

The description states a specific verb and resource: it lists built-in R prompt template identifiers and descriptions. It is clear what the tool returns, though it does not explicitly distinguish itself from prompt-related siblings such as get_r_prompt_context, build_r_prompt, or validate_r_prompt.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives. The usage is implied by the name and description, but no alternatives or exclusions are named.

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

search_packagesC
Read-only

Search repository names and available title keywords; repository defaults to cran.

NameRequiredDescriptionDefault
limitNo
queryYes
offsetNo
repositoryNocran
bioc_versionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered externally. The description adds the default repository behavior, but it does not explain result ranking, pagination behavior, or how the search handles open-world repository scope.

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

Conciseness4/5

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

The description is a single efficient sentence with no filler, and the default repository value is front-loaded. However, its brevity comes at the cost of clarity around search scope and parameters.

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

Completeness2/5

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

With five parameters, an output schema, and several sibling lookup tools, this description is too sparse to fully guide invocation. It covers the repository default but omits query behavior, pagination, bioc_version relevance, and when to choose this search tool over package-info alternatives.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for five parameters but only mentions repository and the default value cran. It gives no explanation of query syntax, limit, offset, or bioc_version, leaving most parameter semantics undocumented.

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 clear search verb and identifies the resources searched: repository names and title keywords. It is understandable that this is a package search tool, but it does not explicitly distinguish itself from siblings such as get_package_info or check_package_version.

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 only usage-like detail is that the repository defaults to cran. There is no guidance on when to use this tool instead of get_package_info, get_dependencies, or other sibling lookup tools, and no exclusions or prerequisites are stated.

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

validate_r_promptC
Read-only

Check prompt structure, conflicts, possible secrets and unverified API claims.

NameRequiredDescriptionDefault
prompt_textYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the categories of findings (structure, conflicts, secrets, unverified API claims), but says nothing about severity, whether findings block anything, or what a failing validation means.

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

Conciseness3/5

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

It is a single short fragment with no wasted words, but it is under-specified rather than concise: a noun-phrase list without a complete subject-verb statement or any front-loaded usage cue.

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?

An output schema exists, so return-value detail is not required, and the four check categories give a reasonable preview. However, for a validation tool the agent still lacks guidance on what input shape to supply and what to do with results, leaving noticeable gaps.

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

Parameters2/5

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

There is one parameter (prompt_text) with 0% schema description coverage, and the description does not explain its format, length limits, or whether it accepts raw prompt text versus a template name. With low coverage the description should compensate, and it does not.

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 names a specific verb ('Check') and enumerates the concrete checks performed — prompt structure, conflicts, possible secrets, unverified API claims — which makes the tool's purpose clear. It does not distinguish itself from nearby siblings such as improve_r_prompt or build_r_prompt, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no statement of when to run validation versus improving (improve_r_prompt) or building (build_r_prompt) a prompt, and no preconditions. The agent must infer the workflow position from the tool name alone.

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. 32 tool updatesv0.1.0
    • First observedanalyze_ggplot_code
    • First observedanalyze_ggplotly_compatibility
    • First observedanalyze_ggraph_code
    • First observedanalyze_knitr_chunks
    • First observedanalyze_quarto_document
    • First observedanalyze_quarto_project
    • First observedanalyze_r_workspace
    • First observedanalyze_shiny_app
    • First observedanalyze_tidyr_pipeline
    • First observedbuild_r_prompt
    • First observedcheck_package_compatibility
    • First observedcheck_package_version
    • First observedexplain_shiny_reactivity
    • First observedget_bioconductor_version
    • First observedget_context7_docs
    • First observedget_dependencies
    • First observedget_function_docs
    • First observedget_package_agent_guidance
    • First observedget_package_info
    • First observedget_package_knowledge
    • First observedget_package_vignettes
    • First observedget_positron_guidance
    • First observedget_quarto_docs
    • First observedget_r_prompt_context
    • First observedget_r_workflow_guidance
    • First observedget_shiny_docs
    • First observedget_visualization_docs
    • First observedget_visualization_workflow
    • First observedimprove_r_prompt
    • First observedlist_r_prompt_templates
    • First observedsearch_packages
    • First observedvalidate_r_prompt

TDQS

C2.8/5.0

Scored across 32 tools

Disambiguation3/5

The set has many narrowly targeted but similar-sounding tools, such as get_function_docs/get_shiny_docs/get_visualization_docs/get_quarto_docs and the several analyze_* static inspectors. Descriptions differentiate them, but overlapping doc-fetching paths like get_package_knowledge vs get_context7_docs vs get_package_agent_guidance create real misselection risk.

Naming Consistency5/5

All tool names use snake_case with a consistent verb_noun pattern (get_, check_, analyze_, build_, validate_, list_). The qualifiers are descriptive and predictable despite the length of some names.

Tool Count2/5

32 tools is above the rubric's heavy threshold, with several closely related variants for docs, static analysis, and prompt operations. The broad R-knowledge scope partly justifies it, but the surface feels segmented rather than tightly scoped.

Completeness4/5

Coverage spans package discovery, metadata, dependencies, version/compatibility checks, docs, agent guidance, Shiny/Quarto/visualization workflows, and prompt lifecycle. Minor gaps remain, such as discovering function aliases or listing package functions, but core knowledge workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides real-time access to Python package documentation, source code, and symbol search to prevent AI hallucinations.
    55 PyPI
    7
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI coding agents to inspect project dependency versions, resolve version constraints, and audit Python code for deprecated or incompatible APIs using authoritative evidence and local AST analysis.
    3
    6 npm
    MIT