kegg-mcp-server
The kegg-mcp-server is an MCP server offering structured, API-key-free access to the KEGG bioinformatics database. It provides 34 tools, 9 resource templates, and 4 guided prompts for querying and analyzing biological data:
Database & Organisms: Retrieve KEGG release statistics; list ~12,000 organisms.
Pathways: Search and retrieve pathway details, genes, compounds, reactions; render pathway topology as ASCII art (chain or grid styles).
Genes: Search by name/symbol; get detailed info including sequences; find cross-species orthologs.
Compounds & Reactions: Search by name, formula, or mass; retrieve compound info, reactions, and equations.
Enzymes: Search by EC number/name; get full details with substrates, products, and linked genes.
Diseases: Search; retrieve associated genes, drugs, and pathways.
Drugs: Search and get details; screen for drug–drug interactions.
Modules, Orthology (KO), Glycans, BRITE: Search and retrieve functional modules, KO entries, glycan compositions, and BRITE hierarchies.
Cross-Database: Batch lookup (up to 50 entries); convert identifiers between KEGG and external DBs (e.g., UniProt, ChEBI); find related entries across KEGG.
Guided Prompts: Built-in workflows for pathway enrichment analysis, drug target investigation, metabolic pathway comparison, and pathway visualization.
Features include structured JSON responses, per‑operation TTL caching, request retry with exponential backoff, a 3‑requests‑per‑second rate limit, and user‑friendly error handling. Deployable via uvx, pip, or MCP‑compatible clients like Claude Desktop.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kegg-mcp-serversearch pathways for glycolysis in human"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
kegg-mcp-server-python
An unofficial Python Model Context Protocol (MCP) server for the KEGG bioinformatics database. It exposes 34 tools, 9 resource templates, and 4 guided prompts to any MCP-compatible client (Claude Desktop, Claude Code, Cursor, etc.). Developed by Elytron Biotech.
Built with FastMCP, returns structured Pydantic JSON (not raw text), and includes per-operation TTL caching, request retry with exponential backoff, a three-request-per-second rate limit, structured JSON stderr logging, and batch helpers out of the box. No API key is required.
Responses are token-aware by default: get_*_info tools return a compact EntrySummary (entry id, name, class, description, counts of linked entities) unless you pass detail_level="full". Errors are returned as a typed ErrorResult the model can reason about, not raised as exceptions.
Usage notice: This is a community project and is not affiliated with or endorsed by KEGG or Kanehisa Laboratories. KEGG states that its REST API is for academic use by academic users; non-academic users must follow KEGG's linked non-academic-use guidance. Users are responsible for ensuring that their use complies with those terms.
Quick start
With uvx (no install)
uvx kegg-mcp-serverWith pip
pip install kegg-mcp-server
kegg-mcp-serverRequires the MCP Python SDK v2 (
mcp>=2,<3, protocol revision2026-07-28). Versions up to 0.3.1 ran on the 1.x SDK; because mcp 2.0 removedmcp.server.fastmcp, that is a breaking dependency change, which is why this is 0.4.0 rather than a patch. Nothing changes for clients — an mcp 2.x server answers every earlier protocol revision from the same app, so a host still on the 1.x SDK connects unchanged and negotiates2025-11-25.
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"kegg": {
"command": "uvx",
"args": ["kegg-mcp-server"]
}
}
}OS | Path |
macOS |
|
Windows |
|
Linux |
|
Claude Code
claude mcp add kegg-mcp-server -- uvx kegg-mcp-serverOr install as a plugin (includes slash commands, agent, and skill):
claude plugin install Lucas-Servi/kegg-mcp-server-pythonThe plugin bundles:
Type | Name | Description |
Command |
| Quick search across all KEGG databases |
Command |
| Pathway deep-dive with ASCII visualization |
Command |
| Drug targets, pathways, and interactions |
Agent |
| Auto-invoked for biological pathway/gene/drug questions |
Skill |
| Multi-step workflow guide (enrichment, comparison, investigation) |
MCPB bundle (Linux x86-64 only, no Python install required)
The release bundle is built specifically for Linux x86-64 and CPython 3.12 because it vendors native dependencies. Download the linux-x86_64-py312.mcpb artifact from the releases page and drag it onto Claude Desktop. On macOS or Windows, use the cross-platform uvx, pip, or Claude Code plugin installation above.
Related MCP server: Oh My KEGG MCP
What's included
34 Tools
Category | Tools | Examples |
Database |
| Get KEGG release stats, search the ~12k organisms by code or name |
Pathways |
| Search by keyword, get full pathway details |
Genes |
| Find genes in any organism, cross-species orthologs |
Compounds |
| Search by name/formula/mass, find reactions |
Reactions |
| Equation, enzymes, pathways for any reaction |
Enzymes |
| EC number lookup, substrates, genes |
Diseases |
| Disease genes, drugs, pathways |
Drugs |
| Drug targets, DDI screening |
Modules |
| Functional module definitions |
Orthology |
| KEGG Orthology entries |
Glycans |
| Glycan composition, reactions |
BRITE |
| Functional hierarchies (level counts by default; |
Cross-database |
| Bulk fetch (up to 50), ID mapping within one kind — genes ↔ UniProt/NCBI, chemistry ↔ ChEBI/PubChem |
Visualization |
| ASCII art rendering of pathway topology (chain or grid mode) |
9 Resource Templates
Direct URI-based access to KEGG entities:
kegg://pathway/{pathway_id} e.g. kegg://pathway/hsa00010
kegg://gene/{gene_id} e.g. kegg://gene/hsa:1956
kegg://compound/{compound_id} e.g. kegg://compound/C00002
kegg://reaction/{reaction_id} e.g. kegg://reaction/R00756
kegg://disease/{disease_id} e.g. kegg://disease/H00004
kegg://drug/{drug_id} e.g. kegg://drug/D00001
kegg://organism/{org_code} e.g. kegg://organism/hsa
kegg://pathway/{pathway_id}/ascii e.g. kegg://pathway/hsa00010/ascii
kegg://search/{database}/{query} e.g. kegg://search/compound/glucose4 Guided Prompts
Prompt | Arguments | What it does |
|
| Maps a gene list to KEGG IDs, aggregates pathway associations, identifies enriched pathways |
|
| Drug lookup, target identification, pathway mapping, DDI screening |
|
| Compares gene/compound content of a pathway across species |
|
| Renders pathway as ASCII art (chain + grid), annotates key steps |
ASCII Pathway Renderer
The render_pathway_ascii tool converts KEGG pathway topology (from KGML XML) into LLM-friendly ASCII text. Two styles are available:
Chain mode (default) — linear reaction flow:
Glycolysis / Gluconeogenesis (hsa)
====================================
[alpha-D-Gl~] ──R01786──▶ [beta-D-Gl~] ──R01600──▶ [beta-D-F~]Grid mode — 2D spatial layout using KGML coordinates:
Glycolysis / Gluconeogenesis (hsa)
====================================
[Glc]────────▶[G6P]────────▶[F6P]
│
▼
[6PG]
Legend:
[Glc] = alpha-D-Glucose (cpd:C00267)
[G6P] = D-Glucose 6-phosphate (cpd:C00092)Transport options
# stdio (default -- for Claude Desktop, Claude Code, uvx)
kegg-mcp-server
# Streamable HTTP (for web/API deployment)
kegg-mcp-server --transport streamable-http --host 0.0.0.0 --port 8080
# python -m also works
python -m kegg_mcp_serverDevelopment
git clone https://github.com/Lucas-Servi/kegg-mcp-server-python
cd kegg-mcp-server-python
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Lint
ruff check src/ tests/
# Debug with MCP Inspector
mcp dev kegg-mcp-serverProject structure
src/kegg_mcp_server/
server.py FastMCP instance, lifespan (httpx client + TTL cache), CLI
client.py KEGGClient: async KEGG REST with retry/backoff + KEGG-politeness semaphore
cache.py Per-op TTL cache (info 24h, list 1h, entry ops 5min)
parsers.py KEGG flat-file and tab-delimited response parsers + summarize_flat_entry
errors.py KEGGAPIError exception type
logging.py JSON stderr logger (stdout is reserved for MCP stdio framing)
resources.py 8 MCP resource templates
prompts.py 3 bioinformatics workflow prompts
models/ Pydantic models for all KEGG entity types + EntrySummary + ErrorResult
tools/ 13 tool modules, each with a register(mcp) function; _common.py has the
@kegg_tool error-boundary decorator and shared READ_ONLY annotationsAuthor
Developed by Lucas Servi (lucasservi@gmail.com) at Elytron Biotech using Claude Code.
Acknowledgments
Based on Augmented-Nature/KEGG-MCP-Server -- the original TypeScript implementation that served as the foundation for this Python rewrite
KEGG -- Kyoto Encyclopedia of Genes and Genomes (Kanehisa Laboratories)
Model Context Protocol -- Anthropic's open protocol for LLM tool use
License
MIT -- see LICENSE.
Available Tools
34 toolsbatch_entry_lookupARead-onlyIdempotent
Fetch multiple KEGG entries in bulk (max 50 IDs).
Automatically chunks requests into groups of 10 to respect KEGG's API limit.
Args: entry_ids: List of KEGG entry IDs (e.g. ['C00002', 'C00031', 'C00033']). Can mix databases. Max 50 entries.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, indicating safe behavior. The description adds key behavioral detail about automatic request chunking, which is beyond annotation coverage and valuable for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main purpose. The 'Args' section is slightly redundant given the schema, but overall clear and efficient with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description covers purpose, batching, and parameters thoroughly. It lacks error handling details but is sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully compensates by explaining the entry_ids parameter with examples, acceptable formats, max size, and ability to mix databases. This adds complete meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch multiple KEGG entries in bulk' with a specific action and resource. It specifies a maximum of 50 IDs and allows mixing databases, which distinguishes it from sibling tools that fetch single entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains automatic chunking into groups of 10 to respect API limits, guiding the agent on when to use this tool for bulk requests. However, it does not explicitly contrast with single-entry tools or mention 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.
convert_identifiersARead-onlyIdempotent
Convert KEGG IDs to/from external database identifiers.
Converts within one kind only, KEGG side <-> outside side: genes (organism code 'hsa' or T-number 'T01001') <-> ncbi-geneid / ncbi-proteinid / uniprot; chemistry (compound / drug / glycan) <-> pubchem / chebi. Cross-kind pairs such as compound<->uniprot are rejected by KEGG, and 'kegg' is not a database conv accepts.
Args: source_db: Source database — 'hsa', 'T01001', 'ncbi-geneid', 'ncbi-proteinid', 'uniprot', 'compound', 'drug', 'glycan', 'pubchem' or 'chebi'. target_db: Target database, from the same list and the opposite side of the pair (e.g. source_db='hsa' + target_db='uniprot', or source_db='chebi' + target_db='compound'). entry_ids: Optional list of specific IDs to convert. Bare ids are prefixed with source_db automatically ('1956' -> 'hsa:1956'). KEGG accepts at most 10 per request; only the first 10 are sent. If None, converts the full source database (large: hsa <-> ncbi-geneid is ~700 KB).
| Name | Required | Description | Default |
|---|---|---|---|
| entry_ids | No | ||
| source_db | Yes | ||
| target_db | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations (readOnly, idempotent, non-destructive) by disclosing critical behaviors: automatic prefixing of bare IDs ('1956' -> 'hsa:1956'), the 10-entry per-request limit with truncation, the full-database conversion when entry_ids is None with a size warning (~700 KB for hsa↔ncbi-geneid), and the rejection of cross-kind pairs. This adds substantial transparency that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: an opening purpose statement, then a paragraph of key constraints, followed by bullet-point-style parameter details. Every sentence adds unique value, and the information density is high without redundancy. It is appropriately sized for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary context: purpose, allowed conversions, parameter behavior, size implications, and explicit rejections. Since an output schema exists, it does not need to describe return values. The description is complete for an agent to invoke the tool correctly, including edge cases and performance considerations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0% and no enums, the description carries the full burden of explaining parameters. It thoroughly describes source_db and target_db with valid values (hsa, T01001, ncbi-geneid, etc.), and entry_ids with its optional nature, auto-prefix behavior, 10-item limit, and None meaning full database. This is far more informative than the bare schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Convert KEGG IDs to/from external database identifiers.' It then specifies exact conversion kinds and pairs (genes ↔ ncbi/uniprot, chemistry ↔ pubchem/chebi) and rejects cross-kind conversions. This distinguishes it from sibling tools like get_gene_info or search_genes, which retrieve information rather than convert identifiers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (converting IDs between KEGG and external databases) and explicit constraints (only within one kind, 'kegg' not allowed, cross-kind rejected). However, it does not explicitly mention alternative tools or when not to use it in favor of other operations, so it falls short of the highest score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_brite_infoARead-onlyIdempotent
Get the structure of a KEGG BRITE functional hierarchy.
BRITE entries are large A/B/C/D trees, not flat-file entries, so the result is a bounded summary: the level line counts, the leaf column names, and the labels of the top two levels.
Args: brite_id: KEGG BRITE hierarchy ID. Any form KEGG hands out works — 'br:ko00001' (canonical), 'ko00001' / 'br08303' (as listed by list_databases), or the bare '00001' / '08303' returned by search_brite. detail_level: 'summary' (default) or 'full' (adds raw_content, the raw hierarchy text — TRUNCATED, since the largest hierarchies are several megabytes).
| Name | Required | Description | Default |
|---|---|---|---|
| brite_id | Yes | ||
| detail_level | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, describes output as a bounded summary, warns about truncation for full detail, and explains the difference between summary and full.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured, each sentence provides necessary context, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key aspects: purpose, input, output behavior, and limitations. Sufficient for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning for brite_id formats and detail_level semantics, including default and truncation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'get' with specific resource 'KEGG BRITE functional hierarchy', distinguishes from other get_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly indicates usage by explaining input requirements (brite_id) and mention of search_brite returning IDs, but lacks explicit comparison to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_compound_infoARead-onlyIdempotent
Get detailed information for a KEGG compound entry.
Args: compound_id: KEGG compound ID (e.g. 'C00002' for ATP, 'C00031' for D-Glucose). detail_level: 'summary' (default, compact) or 'full' (complete flat-file parse).
| Name | Required | Description | Default |
|---|---|---|---|
| compound_id | Yes | ||
| detail_level | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds behavioral context by explaining the detail_level parameter (summary vs full flat-file parse), which goes beyond the schema's enum. It does not contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences plus a two-line args block. Every sentence adds value: the first states purpose, the second provides usage guidance. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, required compound_id, enum for detail_level) and the presence of an output schema (not shown but referenced), the description is complete. It covers parameter semantics, default behavior, and typical use examples. No gaps are apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing compound_id examples (e.g., 'C00002' for ATP) and clarifying detail_level values ('summary' as default compact, 'full' as complete flat-file parse). This adds critical meaning beyond the raw schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool retrieves detailed information for a KEGG compound entry, with concrete examples like 'C00002' for ATP. This clearly distinguishes it from sibling tools like get_gene_info or get_reaction_info, which target different entity types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, but the tool name and context (siblings targeting different entities like genes, reactions) make it obvious. It provides examples of valid compound IDs, aiding selection, but lacks explicit exclusions or when-not scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_compound_reactionsARead-onlyIdempotent
Get all reactions involving a KEGG compound.
Args: compound_id: KEGG compound ID (e.g. 'C00002').
| Name | Required | Description | Default |
|---|---|---|---|
| compound_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. Description clarifies scope ('all reactions involving a compound') but does not explain edge cases like invalid compound_id or whether results include reactant/product roles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: two-line main description plus structured Args section. Every sentence adds value; no redundancy. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description need not detail return format. For a simple query tool with one required param, the description covers essential usage. Could mention compound_role (reactant/product) but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage for compound_id, but description provides 'KEGG compound ID (e.g. 'C00002')' which adds format and domain context beyond the schema's bare string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'get', resource 'reactions', and condition 'involving a KEGG compound'. Distinguishes from sibling tools like get_reaction_info and get_compound_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use versus alternatives such as search_reactions or get_pathway_reactions. The context of sibling tools implies use, but no when-not or alternative mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_database_infoARead-onlyIdempotent
Get release information and statistics for a KEGG database.
Args: database: Database name (e.g. 'kegg', 'pathway', 'compound', 'drug', 'genome').
| Name | Required | Description | Default |
|---|---|---|---|
| database | No | kegg |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's addition of 'release information and statistics' adds minimal behavioral context. It does not contradict annotations, but does not elaborate on response volume or network dependencies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two lines plus an Args section) and front-loaded with the primary purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (context indicates it exists), the description does not need to detail return values. It covers the single parameter adequately. A slight improvement would be to note that the database parameter corresponds to KEGG database identifiers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter with a default but no description. The description adds examples like 'kegg', 'pathway', 'compound', improving understanding despite 0% schema coverage. It does not list all valid values but provides sufficient context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'release information and statistics for a KEGG database', specifying the verb (get) and resource (database info). It distinguishes from sibling tools that operate on specific entries (e.g., get_gene_info, get_pathway_info) by targeting database-level metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 alternatives or when not to use it. There is no mention of context like initial discovery or prerequisites, leaving the agent to infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disease_infoARead-onlyIdempotent
Get detailed information for a KEGG disease entry.
Args: disease_id: KEGG disease ID (e.g. 'H00004' for colorectal cancer). detail_level: 'summary' (default, compact) or 'full' (complete flat-file parse).
| Name | Required | Description | Default |
|---|---|---|---|
| disease_id | Yes | ||
| detail_level | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, ensuring the tool is safe. The description adds context on the 'detail_level' output behavior (summary vs full) but does not disclose any additional behavioral traits beyond what annotations provide. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one line for purpose, then an Args section listing parameters. No fluff, every sentence provides necessary information. The structure is front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, output schema exists), the description covers the essential input behavior. It could mention that 'disease_id' is a KEGG ID, but that is implied. The existence of an output schema compensates for not describing return values. Slight room for improvement but largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining both parameters: 'disease_id' with an example ('H00004') and 'detail_level' with its enum options and meanings. This adds significant value beyond the minimal schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get detailed information' and resource 'KEGG disease entry'. While it distinguishes the tool from other 'get_*_info' siblings by specifying 'disease entry', it does not explicitly differentiate them, but the name and context make it clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on using the 'detail_level' parameter with defaults and meanings ('summary' compact, 'full' complete flat-file parse). However, it does not mention when to use this tool versus alternatives like 'search_diseases' or other info tools, nor 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_drug_infoARead-onlyIdempotent
Get detailed information for a KEGG drug entry.
Args: drug_id: KEGG drug ID (e.g. 'D00001' for aspirin, 'D00564' for ibuprofen). detail_level: 'summary' (default, compact) or 'full' (complete flat-file parse).
| Name | Required | Description | Default |
|---|---|---|---|
| drug_id | Yes | ||
| detail_level | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by explaining the detail_level parameter (summary vs full), which goes beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two lines of purpose followed by parameter explanations. Every sentence adds necessary information, and the important part is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not displayed), the description does not need to explain return values. It covers both parameters well, with clear examples and options. A minor improvement would be to note that it returns structured drug data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 0%, the description adds meaning beyond the schema: it gives concrete examples for drug_id (e.g., D00001 for aspirin) and explains the options and default for detail_level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information for a KEGG drug entry', specifying both the action (get) and the resource (KEGG drug entry). This clearly distinguishes it from sibling tools like get_gene_info or get_compound_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples of drug IDs but does not explicitly state when to use this tool versus siblings like search_drugs. Usage context is implied but not explicitly differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drug_interactionsARead-onlyIdempotent
Get drug-drug interactions for one or more KEGG drugs.
Args: drug_ids: Single drug ID (e.g. 'D00001') or multiple IDs joined with '+' (e.g. 'D00001+D00564'). Max 10 entries.
| Name | Required | Description | Default |
|---|---|---|---|
| drug_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds useful behavioral details: max 10 entries and input format. No contradictions, and the description adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one purpose sentence and an Args section. Every sentence is necessary and earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 required param, output schema present), the description covers input format and constraints completely. No additional information about return values is needed due to output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no parameter description. The description fully compensates by explaining drug_ids format (single ID or '+' joined, max 10) with examples, providing essential semantics for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Get drug-drug interactions for one or more KEGG drugs', which is a specific verb+resource. It clearly distinguishes from siblings like get_drug_info or search_drugs by focusing on interactions between drugs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains input format (single ID or multiple joined with '+', max 10) but does not explicitly mention when to use vs alternatives. Given no sibling tool handles interactions directly, the context is sufficient for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_enzyme_infoARead-onlyIdempotent
Get detailed information for a KEGG enzyme (EC number).
Args: enzyme_id: EC number (e.g. '1.1.1.1') or prefixed ID (e.g. 'ec:1.1.1.1'). detail_level: 'summary' (default, compact) or 'full' (complete flat-file parse).
| Name | Required | Description | Default |
|---|---|---|---|
| enzyme_id | Yes | ||
| detail_level | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, etc. The description adds behavioral context beyond annotations, such as the two detail_level modes ('summary' vs 'full') and that it accepts prefixed IDs. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences for purpose followed by a clear bullet-like list for arguments. Every sentence adds value, and it is front-loaded with the tool's primary function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, one enum, output schema exists), the description is complete. It covers parameter formats, default behavior, and output levels without needing to describe return values due to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully compensates by explaining enzyme_id (EC number formats including prefixed 'ec:') and detail_level (default 'summary', alternative 'full' for complete flat-file parse). This adds meaning beyond the schema's type and enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information for a KEGG enzyme (EC number).' It specifies the action (get) and resource (enzyme by EC number), and this specificity distinguishes it from siblings like get_gene_info or get_reaction_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples of valid enzyme_id formats and explains the two detail_level options, but it does not explicitly state when to use this tool versus alternatives. Usage is implied but lacks explicit when-not or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gene_infoARead-onlyIdempotent
Get detailed information for a KEGG gene entry.
Args: gene_id: KEGG gene ID in format 'organism:gene' (e.g. 'hsa:1956' for EGFR). detail_level: 'summary' (default, compact) or 'full' (complete parse with linked orthologs, pathways, xrefs, and references). include_sequence: If True and detail_level='full', fetches amino acid and nucleotide sequences.
| Name | Required | Description | Default |
|---|---|---|---|
| gene_id | Yes | ||
| detail_level | No | summary | |
| include_sequence | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature. The description adds behavioral context by explaining how detail_level and include_sequence affect the output, which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and well-structured: a single opening sentence followed by a clear parameter list. No redundant information; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return value details are not needed. The description covers input semantics adequately. However, missing error handling or invalid input notes slightly reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description fully documents each parameter: expected format for gene_id, enum values for detail_level, and conditional behavior for include_sequence. This compensates completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves detailed information for a KEGG gene entry, distinguishing it from search-related siblings like search_genes or get_gene_orthologs. The verb and resource are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a specific gene_id is known, but does not explicitly state when to choose this tool over alternatives like get_gene_orthologs or search_genes. No when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gene_orthologsARead-onlyIdempotent
Get KO (KEGG Orthology) entries and cross-organism orthologs for a gene.
Args: gene_id: KEGG gene ID (e.g. 'hsa:1956').
| Name | Required | Description | Default |
|---|---|---|---|
| gene_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering safety. Description adds minimal behavioral context (returns orthologs). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, front-loaded with purpose. No wasted language. Every sentence is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter, annotations, and an output schema (exists), the description is complete enough. Minor gap: no mention of pagination or result limits, but acceptable for a simple lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully documents the single parameter with format and example ('hsa:1956'). Adds significant meaning beyond schema's type/title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves KO entries and cross-organism orthologs for a gene, with a specific verb and resource. Example provided aids understanding. Distinguishes from siblings like get_gene_info or get_ko_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 alternatives, nor any exclusions or prerequisites. A brief mention of when to use another tool (e.g., for general gene info) would improve this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_glycan_infoARead-onlyIdempotent
Get detailed information for a KEGG glycan entry.
Args: glycan_id: KEGG glycan ID (e.g. 'G00001'). detail_level: 'summary' (default, compact) or 'full' (complete flat-file parse).
| Name | Required | Description | Default |
|---|---|---|---|
| glycan_id | Yes | ||
| detail_level | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value by explaining the two detail_level options (summary vs full), but does not disclose other behaviors like error handling or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence stating the purpose followed by a clear, bullet-style parameter list. Every sentence earns its place with no extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, one enum, output schema present), the description adequately covers the key inputs. It does not explain return values, but the output schema provides that. It could briefly mention the source database (KEGG) but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description fully compensates by specifying the format of glycan_id (e.g., 'G00001') and the meaning of detail_level values (summary vs full). This provides clear semantics beyond the schema's titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get detailed information for a KEGG glycan entry.' It uses a specific verb-resource combination and distinguishes from siblings like get_gene_info and get_reaction_info, which target other KEGG entity types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use when you have a KEGG glycan ID and want details. However, it does not explicitly state when to prefer this over similar tools like search_glycans, nor does it mention 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_ko_infoARead-onlyIdempotent
Get detailed information for a KEGG Orthology (KO) entry.
Args: ko_id: KEGG KO identifier (e.g. 'K00844' for hexokinase). detail_level: 'summary' (default, compact) or 'full' (complete flat-file parse).
| Name | Required | Description | Default |
|---|---|---|---|
| ko_id | Yes | ||
| detail_level | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds detail level options but no additional behavioral context such as rate limits or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one line for purpose followed by argument details. It is well-structured and front-loaded with no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, description need not explain return format. It covers both parameters and suffices for a simple retrieval tool, though mentioning when to use it (e.g., 'when you have a KO ID') would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates by explaining both parameters: ko_id with an example and detail_level with enum values and default. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and resource 'KEGG Orthology (KO) entry', distinguishing it from sibling 'search_ko_entries' which implies searching rather than retrieving by ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides parameter details but does not explicitly state when to use this tool versus alternatives like search_ko_entries or other get_* tools. Usage is implied by the need for a KO ID but no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_module_infoARead-onlyIdempotent
Get detailed information for a KEGG module.
Args: module_id: KEGG module ID (e.g. 'M00001' for glycolysis core module). detail_level: 'summary' (default, compact) or 'full' (complete flat-file parse).
| Name | Required | Description | Default |
|---|---|---|---|
| module_id | Yes | ||
| detail_level | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. The description adds no behavioral context such as error handling, rate limits, or data freshness, but with annotations, the burden 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two short paragraphs) and front-loaded with the main purpose. Every sentence is informative with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters and the presence of an output schema (which covers return values), the description is reasonably complete. It could mention what the returned data contains or edge cases, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining module_id with an example ('M00001') and detail_level with meanings ('summary' default, 'full' complete parse). This adds meaningful guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information for a KEGG module', specifying the verb 'Get', resource 'KEGG module', and is distinct from sibling tools which focus on other entity types (genes, pathways, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides parameter examples and details but does not explicitly state when to use this tool over alternatives or mention prerequisites or limitations. Usage is implied but not fully clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pathway_compoundsARead-onlyIdempotent
Get all compounds (metabolites) associated with a KEGG pathway.
Args: pathway_id: KEGG pathway ID (e.g. 'map00010').
| Name | Required | Description | Default |
|---|---|---|---|
| pathway_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety. The description adds no further behavioral traits (e.g., response format, error handling), so it provides minimal added value beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise with two short sentences that convey the essential information without any superfluous content. It is well-structured and immediately useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, output schema exists), the description provides a solid overview. However, it omits mention of potential edge cases (e.g., invalid pathway ID) or output format, but these are partially addressed by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for pathway_id (0% coverage), but the description adds an example ('map00010') and context (KEGG pathway ID). This effectively compensates for the schema gap, though more format details could improve clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and the resource (compounds/metabolites) associated with a KEGG pathway. It provides a concrete example of a pathway_id, and the purpose is distinct from sibling tools like get_pathway_genes and get_pathway_reactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via the pathway_id parameter, but does not explicitly specify when to use this tool over alternatives (e.g., search_compounds, get_compound_info). No guidance on prerequisites or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pathway_genesARead-onlyIdempotent
Get all genes associated with a KEGG pathway.
Args: pathway_id: KEGG pathway ID (e.g. 'hsa00010'). Use organism-specific IDs (e.g. 'pae00350' for P. aeruginosa) — reference pathways ('map*') are not supported by the KEGG gene link API.
| Name | Required | Description | Default |
|---|---|---|---|
| pathway_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive. The description adds no new behavioral details beyond what annotations imply. It does not contradict annotations, so a baseline score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for purpose and a brief structured note for the argument. Every sentence is essential, and the information is front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description is sufficiently complete. It covers the parameter semantics and the core function. Minor omission: it doesn't mention potential errors or edge cases, but given the tool's simplicity and annotations, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for the only parameter 'pathway_id'. However, the tool description fully compensates by explaining the parameter: its type (KEGG pathway ID), an example, and a vital constraint about unsupported reference pathways. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb+resource: 'Get all genes associated with a KEGG pathway.' It clearly distinguishes from sibling tools like search_genes or get_pathway_compounds by focusing on the association between genes and a KEGG pathway.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the type of pathway IDs to use (organism-specific, not reference pathways) and includes a concrete example. While it does not directly compare to alternatives, it provides clear constraints on when the tool works, which guides appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pathway_infoARead-onlyIdempotent
Get detailed information for a KEGG pathway.
Args: pathway_id: KEGG pathway ID (e.g. 'hsa00010', 'map00010'). detail_level: 'summary' (default, compact) or 'full' (complete flat-file parse with all linked genes, compounds, reactions, references, and xrefs).
| Name | Required | Description | Default |
|---|---|---|---|
| pathway_id | Yes | ||
| detail_level | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the detail_level parameter behavior, which provides context beyond annotations but does not reveal any additional behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear purpose statement and well-structured parameter explanations. Every sentence adds value, and no redundant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and annotations covering safety and idempotency, the description adequately covers the tool's behavior. However, it could mention the relationship to sibling tools or typical usage scenarios for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage (no parameter descriptions in schema), but the tool's description explains both parameters clearly, including examples for pathway_id and the distinction between summary and full detail levels. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Get detailed information for a KEGG pathway', using a specific verb and resource. It is clear but does not explicitly differentiate from sibling tools like get_pathway_genes or get_pathway_compounds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_pathway_genes or render_pathway_ascii. The description lacks recommendations or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pathway_reactionsBRead-onlyIdempotent
Get all reactions in a KEGG pathway.
Args: pathway_id: KEGG pathway ID (e.g. 'hsa00010').
| Name | Required | Description | Default |
|---|---|---|---|
| pathway_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, fully covering the safety profile. The description adds no behavioral traits (e.g., pagination, rate limits, return format). It is acceptable but fails to add context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the verb and resource, and contains no fluff. Every part earns its place, including the example parameter value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter), rich annotations, and presence of an output schema, the description is minimally adequate. It states what the tool does but omits details about the output format or the structure of returned reactions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single parameter pathway_id, leaving its meaning entirely to the description. The description provides an example value ('hsa00010') which adds some meaning, but does not fully specify the expected format or allowed values. This partially compensates for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all reactions in a KEGG pathway', using a specific verb and resource. It effectively distinguishes this tool from sibling tools like get_pathway_genes or get_pathway_compounds by explicitly focusing on reactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_pathway_genes or get_pathway_compounds. It only gives an example pathway_id, which loosely hints at usage but does not specify contexts or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reaction_infoARead-onlyIdempotent
Get detailed information for a KEGG reaction.
Args: reaction_id: KEGG reaction ID (e.g. 'R00756' for glucose phosphorylation). detail_level: 'summary' (default, compact) or 'full' (complete flat-file parse).
| Name | Required | Description | Default |
|---|---|---|---|
| reaction_id | Yes | ||
| detail_level | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the description does not need to reiterate safety. It adds useful context about the two detail levels ('summary' vs 'full') and the nature of the returned data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using only two sentences plus a structured argument list. Every word is functional, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, output schema exists), the description is fully adequate. It covers purpose, parameter semantics, and expected behavior without needing to detail return values since the output schema handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema properties have no descriptions (0% coverage), but the description fully compensates by explaining reaction_id with an example ('R00756' for glucose phosphorylation) and detail_level with clear meanings ('summary' default, 'full' for complete flat-file parse).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed information for a KEGG reaction', which is specific and distinguishes this tool from sibling tools like search_reactions that search for reactions rather than retrieving details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as search_reactions. It does not mention any preconditions or exclusions, leaving the agent to infer usage from the tool's basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_organismsARead-onlyIdempotent
List organisms available in KEGG with their 3-4 letter codes and names.
KEGG has ~12,000 organisms, so the full list is large. Pass query to
filter by organism code or name (e.g. 'Bacillus', 'hsa') instead of
paging through everything.
Args:
query: Case-insensitive substring filter on the organism code or name.
Empty (the default) returns the first max_results organisms.
max_results: Maximum number of organisms to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, openWorld, idempotent, non-destructive), the description discloses important behaviors: empty query returns the first max_results organisms, max_results is capped at 100, and filtering is a case-insensitive substring match on code or name. This adds real operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: a one-sentence purpose, a useful context note about list size, and a compact Args list. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the annotations, and the output schema, the description covers everything an agent needs: what is returned, how to filter, pagination/default behavior, and constraints. No critical gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description fully compensates with an Args section explaining what each parameter does: query is a case-insensitive substring filter, max_results limits and caps the result count, and defaults are clarified. This is significantly more informative than the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'List organisms available in KEGG with their 3-4 letter codes and names.' This clearly distinguishes the tool from the sibling search_* and get_* tools, which target specific entities rather than enumerating organisms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear practical guidance: the list is large, so pass a query to filter by code or name rather than paging through everything. It does not explicitly name alternative tools or say when not to use this tool, but the context is unambiguous enough for an agent to choose it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_pathway_asciiARead-onlyIdempotent
Render a KEGG pathway as ASCII text optimized for LLM consumption.
Two styles available:
'chain': Linear reaction flow text showing substrate->enzyme->product chains. Robust and compact. Best for understanding reaction sequences.
'grid': 2D spatial layout using KGML coordinates. Shows the pathway topology with box-and-arrow rendering. Best for seeing spatial relationships.
Args: pathway_id: KEGG pathway ID (e.g. 'hsa00010' for human glycolysis). Must be organism-specific; reference pathways (map*) have limited KGML. style: 'chain' (default, linear text) or 'grid' (2D spatial layout). max_width: Maximum line width in characters (40-200, default 100). max_height: Grid mode only: maximum height in lines (20-80, default 40).
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | chain | |
| max_width | No | ||
| max_height | No | ||
| pathway_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and openWorld hints. The description adds behavioral details: ASCII output, style options, max dimensions, and the KGML limitation. It does not disclose error handling or async behavior, but the annotations cover the key traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: one-line overview, clear bullet-like explanation of styles, and parameter list with all necessary details. No redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (not shown), the description does not need to detail return values. It covers all relevant aspects: pathway ID requirements, style choices, and layout constraints. Complete for a simple rendering tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully explains each parameter. Pathway_id includes an example and constraint; style explains the two options with recommendations; max_width and max_height have ranges and defaults. All parameters are well-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Render a KEGG pathway as ASCII text optimized for LLM consumption.' It differentiates from sibling tools (e.g., search_pathways, get_pathway_info) which do not render paths. The two styles are explicitly named and their purposes are defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: style 'chain' for reaction sequences, 'grid' for spatial relationships. Also notes that pathway_id must be organism-specific and reference pathways have limited KGML, which helps the agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_briteARead-onlyIdempotent
Search KEGG BRITE functional hierarchy databases.
Args: query: Hierarchy name (e.g. 'KEGG pathway', 'transporter', 'ribosome'). max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a safe read-only, idempotent operation. The description adds the cap on max_results (100) but does not disclose further behavioral traits like pagination or result format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus parameter list. It front-loads the purpose and uses minimal, effective language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with existing output schema, the description covers the key inputs and constraints. It is nearly complete, though missing error handling details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description provides useful semantics: query is a hierarchy name with examples, and max_results has a cap. This adds meaning beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'KEGG BRITE functional hierarchy databases'. This distinguishes it from siblings like search_pathways and search_compounds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the parameters (query and max_results) but does not provide guidance on when to use this tool versus alternatives like get_brite_info or search_pathways.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_compoundsARead-onlyIdempotent
Search KEGG compounds by name or chemical property.
Args: query: Search term (compound name, formula, or mass). search_type: 'name' (default), 'formula', 'exact_mass', 'mol_weight', or 'nop'. max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No | ||
| search_type | No | name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the tool is clearly a safe read operation. Description adds no additional behavioral context beyond the basic search action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is clear and well-structured with an Args section, but could be slightly more concise (e.g., removing redundant 'Args:' header). Still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description adequately covers what the tool does and its parameters. It lacks information about return format or pagination, but the search functionality is fully described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite schema having 0% description coverage, the tool description fully explains each parameter: query, search_type (with options), and max_results (with cap). This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Search KEGG compounds by name or chemical property' and lists specific search types, distinguishing it from sibling tools like search_drugs, search_genes, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains query types and parameters, but does not explicitly specify when to choose this tool over alternatives or when not to use it. However, sibling tools are clearly different topics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_diseasesARead-onlyIdempotent
Search KEGG diseases by name or keyword.
Args: query: Disease name (e.g. 'diabetes', 'cancer', 'Alzheimer'). max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds the behavioral detail that max_results is capped at 100, which is beyond annotation scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise, using a clean docstring format. It front-loads the purpose and adds parameter details without any superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the presence of an output schema, and comprehensive annotations, the description provides all necessary context. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining the query parameter with examples and clarifying max_results with a cap and default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search KEGG diseases by name or keyword,' providing a specific verb and resource. It distinguishes from sibling search tools that target other entities like compounds or drugs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to prefer this tool over alternatives or mention exclusions. Usage is implied by the disease context, but no concrete guidelines are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_drugsARead-onlyIdempotent
Search KEGG drugs by name, formula, or molecular weight.
Args: query: Drug name, formula, or mass value. search_type: 'name' (default), 'formula', 'exact_mass', or 'mol_weight'. max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No | ||
| search_type | No | name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds useful behavioral context by noting that max_results is capped at 100.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear Args structure, no redundant information, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (not shown but indicated), the description does not need to explain return values. It covers purpose, parameters, and constraints completely for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates by explaining the query parameter as drug name/formula/mass, listing valid search_type values (name, formula, exact_mass, mol_weight), and clarifying the max_results cap. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'KEGG drugs', and lists the searchable fields (name, formula, molecular weight), which distinguishes it from sibling search tools like search_compounds or search_diseases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for drug-related searches but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_enzymesARead-onlyIdempotent
Search KEGG enzymes by EC number or name.
Args: query: EC number (e.g. '1.1.1.1') or enzyme name (e.g. 'kinase', 'oxidase'). max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, indicating a safe, idempotent read operation. The description adds the max_results cap and search behavior, which is consistent but does not substantially extend the annotation information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences plus a list of args. Every sentence adds value, no fluff. It is well-structured and front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, a well-defined input schema, and comprehensive annotations, the description provides complete context for the tool's operation. It covers input semantics, constraints, and safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining that 'query' accepts EC numbers or names and 'max_results' is capped at 100. This adds meaning beyond the schema's basic type info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it searches KEGG enzymes by EC number or name, using specific verbs and resource. Siblings (search_compounds, search_reactions, etc.) are for different entities, so it is well differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (searching enzymes) and explains the query types (EC number or name) and max_results cap. It does not explicitly exclude alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_genesARead-onlyIdempotent
Search for genes in a KEGG organism database.
Args: query: Search term (gene name, symbol, or description). organism_code: KEGG organism code (e.g. 'hsa' human, 'mmu' mouse, 'eco' E. coli). max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No | ||
| organism_code | No | hsa |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations: it specifies the database scope, parameter meanings, and a result cap of 100. It does not contradict the readOnlyHint, openWorldHint, idempotentHint, or destructiveHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear main sentence followed by parameter explanations. No redundant information; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers input parameters and database context. Since an output schema exists, it does not need to detail return values. It is largely complete for a search tool, though could mention the result type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining each parameter: query as search term, organism_code with examples, and max_results with cap. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches for genes in a KEGG organism database, using a specific verb and resource. However, it does not explicitly differentiate from other search tools like search_compounds or search_pathways, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks explicit context or exclusions, making it unclear for an agent to decide between search_genes and other search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_glycansARead-onlyIdempotent
Search KEGG glycan database by keyword or composition.
Args: query: Glycan name or composition (e.g. 'GlcNAc', 'Man5', 'sialic acid'). max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior. The description adds context about the data source (KEGG glycan database) and a cap on max_results at 100, which goes beyond the schema. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences for purpose and a clear two-argument list. No fluff, every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, output schema exists), the description provides sufficient context: what it does, how to use it, parameter details. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description fully explains both parameters: query with examples ('GlcNAc', 'Man5', 'sialic acid') and max_results with its cap (100). This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search KEGG glycan database by keyword or composition', specifying the verb, resource, and search criteria. It distinguishes from other sibling search tools focused on different data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when searching glycans but does not explicitly state when to use this tool over alternatives like search_compounds or search_diseases. No exclusions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ko_entriesARead-onlyIdempotent
Search KEGG Orthology (KO) entries by keyword.
Args: query: Gene function (e.g. 'hexokinase', 'ribosomal protein', 'cytochrome'). max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds a behavioral detail (max_results capped at 100) and example queries. It does not disclose result ordering or pagination, but given annotations, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with the main purpose followed by parameter details. It wastes no words, but could front-load the purpose more distinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic function but omits details about result ordering, default behavior (e.g., empty query), and what fields are returned. Given the output schema exists, this is acceptable but leaves some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries full burden. It provides clear, meaningful descriptions for both parameters: query with examples of gene functions, and max_results with its cap. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches KEGG Orthology entries by keyword, using a specific verb and resource. It distinguishes from sibling tools like get_ko_info (which retrieves a specific entry) but could be more precise about what a KO entry represents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like search_genes or search_pathways. The description implies keyword-based search but does not state when-not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_modulesARead-onlyIdempotent
Search KEGG modules by keyword.
Args: query: Module name or pathway block (e.g. 'glycolysis', 'TCA cycle'). max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the bar is low. The description adds the behavioral constraint that max_results is capped at 100, which is valuable context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with every sentence providing essential information. It is front-loaded with the purpose and then details parameters efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with 2 parameters and an existing output schema, the description covers all necessary aspects: purpose, parameter semantics, and behavioral constraints (capped results). No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the query parameter with examples ('glycolysis', 'TCA cycle') and notes the cap on max_results, adding meaning beyond the schema's titles and default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search KEGG modules by keyword,' providing a specific verb+resource combination. It distinguishes from sibling search tools like search_pathways and search_compounds by specifying 'modules' as the target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use for keyword searches on KEGG modules. However, there is no explicit guidance on when not to use it or suggestions for alternative tools, such as search_pathways for pathways or get_module_info for detailed info on a specific module.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pathwaysARead-onlyIdempotent
Search KEGG pathways by keyword.
Args: query: Search term (e.g. 'glycolysis', 'TCA', 'insulin signaling'). organism_code: 3-4 letter organism code (e.g. 'hsa' for human, 'mmu' for mouse). Use 'map' for reference pathways. max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No | ||
| organism_code | No | map |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds limited behavioral context (e.g., max_results cap of 100, organism code patterns). No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single-line purpose followed by three short bullet points with examples. Every word serves a purpose, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 params, output schema present, annotations provided), the description adequately covers parameter behavior and constraints. It does not describe return values, but the output schema should handle that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description fills the gap by explaining each parameter: query examples, organism_code format and use of 'map', and max_results cap. This adds substantial meaning beyond the schema's default values and titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence 'Search KEGG pathways by keyword' clearly states the verb (search), resource (KEGG pathways), and scope (by keyword), distinguishing it from sibling search tools like search_compounds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like search_brite or get_pathway_info. Usage is implied through parameter examples but no comparative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_reactionsARead-onlyIdempotent
Search KEGG reactions by keyword.
Args: query: Search term (reaction name or description). max_results: Maximum number of results to return (capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, openWorld, idempotent, and non-destructive. Description adds 'Search KEGG reactions' but no further behavioral traits like rate limits or result structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two-sentence summary followed by two parameter lines. Front-loaded with purpose, no extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple search tool; output schema exists to detail return format. Description covers purpose and parameters adequately. Could mention result sorting or pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description fully explains both parameters: query as search term, max_results with cap of 100. Adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Search' and resource 'KEGG reactions', clearly distinguishing it from siblings like get_reaction_info (details) and search_pathways (pathways).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 alternatives such as get_reaction_info or search_pathways. Only parameter descriptions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v0.4.0- Changed
get_brite_info4 fields changed- added
Output schema / $defs / BriteHierarchyAdded value: +{ + "description": "Bounded projection of a KEGG BRITE ``A``/``B``/``C``/… tree.\n\nBRITE entries are hierarchies, not flat-file entries: ``/get/br:ko00001`` is\n4.3 MB / 65,337 lines and ``/get/br:hsa00001`` is 6.8 MB. Returning the raw\ntext would overflow the context window of the model this feeds, so the\ndefault projection keeps the navigational skeleton (per-level line counts +\nthe top two levels' labels) and drops the leaves. ``raw_content`` is\npopulated only for ``detail_level=\"full\"``, and is itself capped.", + "properties": { + "columns": { + "items": { + "type": "string" + }, + "title": "Columns", + "type": "array" + }, + "deepest_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Deepest Level" + }, + "detail_level": { + "default": "summary", + "title": "Detail Level", + "type": "string" + }, + "entry": { + "title": "Entry", + "type": "string" + }, + "labels": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": "Labels", + "type": "object" + }, + "labels_truncated": { + "items": { + "type": "string" + }, + "title": "Labels Truncated", + "type": "array" + }, + "last_updated": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Last Updated" + }, + "level_counts": { + "additionalProperties": { + "type": "integer" + }, + "title": "Level Counts", + "type": "object" + }, + "raw_content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Raw Content" + }, + "raw_truncated": { + "default": false, + "title": "Raw Truncated", + "type": "boolean" + }, + "total_lines": { + "default": 0, + "title": "Total Lines", + "type": "integer" + } + }, + "required": [ + "entry" + ], + "title": "BriteHierarchy", + "type": "object" +} - removed
Output schema / $defs / BriteInfoRemoved value: -{ - "properties": { - "dblinks": { - "anyOf": [ - { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Dblinks" - }, - "definition": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Definition" - }, - "entry": { - "title": "Entry", - "type": "string" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "Name" - }, - "raw_content": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Raw Content" - } - }, - "required": [ - "entry", - "name" - ], - "title": "BriteInfo", - "type": "object" -} - removed
Output schema / $defs / EntrySummaryRemoved value: -{ - "description": "Compact projection of a KEGG flat-file entry.\n\nReturned from `get_*_info` tools when `detail_level=\"summary\"` (the default) to\nkeep response size small. Counts replace long linked-entity lists; long text\nblocks (sequences, comments, raw content) and per-entry xref/reference dumps\nare omitted. Request `detail_level=\"full\"` for the complete entry.", - "properties": { - "cls": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Cls" - }, - "counts": { - "additionalProperties": { - "type": "integer" - }, - "title": "Counts", - "type": "object" - }, - "dblinks_sample": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "title": "Dblinks Sample", - "type": "object" - }, - "definition": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Definition" - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Description" - }, - "detail_level": { - "default": "summary", - "title": "Detail Level", - "type": "string" - }, - "entry": { - "title": "Entry", - "type": "string" - }, - "entry_type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Entry Type" - }, - "equation": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Equation" - }, - "exact_mass": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Exact Mass" - }, - "formula": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Formula" - }, - "mol_weight": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Mol Weight" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "default": "", - "title": "Name" - }, - "organism": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Organism" - } - }, - "required": [ - "entry" - ], - "title": "EntrySummary", - "type": "object" -} - changed
Output schema / properties / result / anyOfPrevious value: -[ - { - "$ref": "#/$defs/BriteInfo" - }, - { - "$ref": "#/$defs/EntrySummary" - }, - { - "$ref": "#/$defs/ErrorResult" - } -]New value: +[ + { + "$ref": "#/$defs/BriteHierarchy" + }, + { + "$ref": "#/$defs/ErrorResult" + } +]
- Changed
list_organisms3 fields changed- added
Input schema / properties / max_resultsAdded value: +{ + "default": 100, + "title": "Max Results", + "type": "integer" +} - added
Input schema / properties / queryAdded value: +{ + "default": "", + "title": "Query", + "type": "string" +} - added
Output schema / $defs / ListResult / properties / truncatedAdded value: +{ + "default": false, + "title": "Truncated", + "type": "boolean" +}
34 tool updates
v0.1.0- First observed
batch_entry_lookup - First observed
convert_identifiers - First observed
find_related_entries - First observed
get_brite_info - First observed
get_compound_info - First observed
get_compound_reactions - First observed
get_database_info - First observed
get_disease_info - First observed
get_drug_info - First observed
get_drug_interactions - First observed
get_enzyme_info - First observed
get_gene_info - First observed
get_gene_orthologs - First observed
get_glycan_info - First observed
get_ko_info - First observed
get_module_info - First observed
get_pathway_compounds - First observed
get_pathway_genes - First observed
get_pathway_info - First observed
get_pathway_reactions - First observed
get_reaction_info - First observed
list_organisms - First observed
render_pathway_ascii - First observed
search_brite - First observed
search_compounds - First observed
search_diseases - First observed
search_drugs - First observed
search_enzymes - First observed
search_genes - First observed
search_glycans - First observed
search_ko_entries - First observed
search_modules - First observed
search_pathways - First observed
search_reactions
TDQS
Most tools are clearly distinct by KEGG entity type, with a consistent search/get pattern. A few generic utilities like find_related_entries overlap with specialized functions (e.g., get_gene_orthologs, get_compound_reactions), but descriptions clarify their specific use cases.
Tool names follow a consistent verb_noun snake_case pattern, such as search_* and get_*_info. Minor deviations like list_organisms, batch_entry_lookup, and render_pathway_ascii are still intuitive and do not break the overall coherence.
With 34 tools, the server exceeds the 25-tool threshold for 'too many' per the rubric. While each tool serves a distinct function, the high number may overwhelm agents, making the tool set harder to navigate.
The tool set comprehensively covers all major KEGG databases (compounds, drugs, diseases, genes, enzymes, glycans, modules, orthology, pathways, reactions, BRITE, organisms) with search and detail retrieval, plus batch and conversion utilities. No significant gaps are apparent for a read-only KEGG server.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
KEGG REST MCP — Kyoto Encyclopedia of Genes and Genomes.
MCP server for querying BrainKB, a knowledge base for neuroscience knowledge graphs.
WikiPathways MCP — open community pathway database.
An MCP server that provides tools to discover and retrieve podcast episodes transcripts.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that provides tools for querying the PubChem database for detailed information on chemical compounds, substances, bioassays, and molecular properties. It enables users to search by name, structure, or identifier to retrieve chemical classifications and cross-references through natural language.-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides access to the Kyoto Encyclopedia of Genes and Genomes (KEGG) database, offering 30 tools for searching and analyzing biological data like pathways, genes, and compounds. It supports integration with LangChain and Ollama to enable LLMs to interact with comprehensive genomic and chemical datasets.8MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that exposes the KEGG REST API — pathways, genes, compounds, reactions, enzymes, diseases, drugs, modules, orthology, glycans, and BRITE hierarchies, with cross-database linking. Provides 34 tools and 8 resource templates.MIT
- AlicenseAqualityDmaintenanceMCP server for searching Kerbal Space Program mods from the CKAN index, with tools for mod search, recommendations, parts listing, and CKAN download cache integration.81MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Lucas-Servi/kegg-mcp-server-python'
If you have feedback or need assistance with the MCP directory API, please join our Discord server