nds-mcp
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., "@nds-mcpatomic mass of U-235"
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.
nds-mcp
Nuclear Data Services MCP server — offline SQLite-backed nuclear physics data for AI agents.
Provides standard-mode tools covering atomic masses (AME2020), nuclear properties (NUBASE2020), charge radii (IAEA + laser spectroscopy), energy levels and gamma transitions (ENSDF), light nuclei resonance data (TUNL, A=4–20), bibliographic references, JENDL-5 decay/cross-section data, EXFOR experimental data, CODATA fundamental constants, update checks, plus discovery/query helpers (nds_catalog, nds_schema, nds_query).
Quick Start
npx -y nds-mcpThe pre-built SQLite database (~85 MB) is automatically downloaded to ~/.nds-mcp/nds.sqlite on first launch.
By default it downloads from this repo's GitHub Releases (override via NDS_DB_DOWNLOAD_URL).
Release assets use a single compressed format: *.sqlite.gz (auto-decompressed after download).
Optional tools JENDL-5 / EXFOR use separate SQLite files and are auto-downloaded on demand.
Maintainer ingest support also includes FENDL-3.2c and IRDFF-II optional SQLite files.
CODATA is bundled inside nds.sqlite.
Related MCP server: Open Research KB
Using nds-mcp through AI agents
Register the server in your client using the same launch command as Quick Start (see Configuration for Cursor, Claude Code, VS Code, Codex, OpenCode, and others).
Ask questions in chat. The agent chooses MCP tools based on your request; you do not need to call tools manually.
Discovery workflow: start with
nds_info(data versions, optional DB status) andnds_catalog(what is installed and how to query it). When one physical quantity appears in more than one source, tools return source-tagged values by default; see Cross-Source Rule.Downloads: the main
nds.sqlitefile is fetched on first server startup (see Quick Start). Optional SQLite files are downloaded the first time a tool needs them (see Optional DB auto-download trigger).Requirements: Node.js 18+ and the
sqlite3CLI on yourPATH. The server runs queries via the SQLite command-line tool (not an embedded Node binding).
Databases
SQLite file | Default path | Download behavior | Includes |
|
| Auto-download on server startup (required) | AME2020 masses + reaction Q-values; NUBASE2020 nuclear properties; charge radii (IAEA + Li2021 laser spectroscopy); ENSDF (levels, gammas, decay feedings, references); TUNL light-nuclei resonance/level data (A=4–20); CODATA fundamental constants |
|
| Auto-download on first call to JENDL-5 tools | JENDL-5 decay data + radiation spectra; JENDL-5 pointwise cross sections + ENDF-6 interpolation laws |
|
| Auto-download on first call to EXFOR tools | EXFOR experimental data points (SIG/MACS/...) + per-entry metadata |
|
| Built via | FENDL-3.2c evaluated ENDF-6 data for transport applications (photo-atomic, neutron, proton, deuteron) + embedded upstream zip archives (raw ENDF retained for MF/MT beyond what is normalized into tables) |
|
| Built via | IRDFF-II evaluated ENDF-6 dosimetry neutron data + embedded upstream zip archives (raw ENDF retained for MF/MT beyond what is normalized into tables) |
You can always bring your own files by setting NDS_DB_PATH / NDS_JENDL5_DB_PATH / NDS_EXFOR_DB_PATH / NDS_FENDL_DB_PATH / NDS_IRDFF_DB_PATH.
Glossary (Acronyms & Jargon)
MCP: Model Context Protocol (the tool interface used by agents/LLMs).
IAEA: International Atomic Energy Agency (many upstream nuclear-data sources and portals).
AME2020: Atomic Mass Evaluation 2020 (atomic masses, separation energies, Q-values).
NUBASE2020: Nuclear properties/decay evaluation (half-lives, spins, decay modes, isomers).
ENSDF: Evaluated Nuclear Structure Data File (levels, gamma transitions, decay feedings).
TUNL: Triangle Universities Nuclear Laboratory (light nuclei level/resonance tables, A=4–20).
JENDL-5: Japanese Evaluated Nuclear Data Library v5 (evaluated nuclear data).
EXFOR: Experimental Nuclear Reaction Data (experimental points + metadata).
FENDL-3.2c: Fusion Evaluated Nuclear Data Library (transport-focused evaluated ENDF-6 sets).
IRDFF-II: International Reactor Dosimetry and Fusion File (dosimetry-focused evaluated ENDF-6 sets).
CODATA: Recommended fundamental constants (Committee on Data for Science and Technology).
ENDF-6: Evaluated Nuclear Data File format (plain-text evaluated nuclear data, organized into sections).
MAT / MF / MT: ENDF section identifiers: MAT (material id), MF (“file number”, data category), MT (reaction/quantity id). Example: MF=3 = pointwise cross sections; MT=1 = total; MT=2 = elastic; MT=102 = (n,γ) capture.
XS: cross section.
BLOB: SQLite “binary large object” column storing raw bytes. This project embeds some upstream zip archives as BLOBs for completeness;
nds_querynever returns BLOBs and forbids selecting them.SIG / MACS: EXFOR quantity codes: SIG = cross section; MACS = Maxwellian-averaged cross section.
Optional DB auto-download trigger
jendl5.sqliteis downloaded when callingnds_get_radiation_spectrum,nds_list_available_targets,nds_get_reaction_info,nds_get_cross_section_table, ornds_interpolate_cross_section.exfor.sqliteis downloaded when callingnds_search_exforornds_get_exfor_entry.These optional SQLite assets are published on this repo's GitHub Releases page (latest release assets).
Download URL can point to either plain
.sqliteor compressed.sqlite.gz; server auto-gunzips when needed.For maintainers,
jendl5.sqliteshould include both decay tables and XS tables (jendl5_xs_meta/jendl5_xs_points/jendl5_xs_interp) before release upload.
Install (Optional)
Global install (lets you use command: "nds-mcp" in configs):
npm install -g nds-mcp
nds-mcpFrom source:
git clone https://github.com/fkguo/nds-mcp.git
cd nds-mcp
pnpm install
pnpm build
node dist/index.jsConfiguration
This is a local stdio MCP server. Launch options:
npx(no install):command: "npx",args: ["-y", "nds-mcp"]global install:
command: "nds-mcp",args: []
Clients using mcpServers (same JSON)
Claude Code (./.mcp.json), Cursor (./.cursor/mcp.json or ~/.cursor/mcp.json), Cline (cline_mcp_settings.json),
Kimi Code CLI (~/.kimi/mcp.json), Qwen Code CLI (./.qwen/settings.json or ~/.qwen/settings.json).
{
"mcpServers": {
"nds-mcp": {
"command": "npx",
"args": ["-y", "nds-mcp"],
"env": {}
}
}
}VS Code (Copilot)
VS Code uses .vscode/mcp.json and a servers key:
{
"servers": {
"nds-mcp": {
"command": "npx",
"args": ["-y", "nds-mcp"]
}
}
}Codex CLI
Add to ~/.codex/config.toml:
[mcp_servers.nds-mcp]
command = "npx"
args = ["-y", "nds-mcp"]OpenCode
Add to opencode.json (project) or ~/.config/opencode/opencode.json (global):
{
"mcp": {
"nds-mcp": {
"type": "local",
"command": ["npx", "-y", "nds-mcp"],
"enabled": true,
"environment": {}
}
}
}Cherry Studio
Settings → MCP Server → Add server:
Type:
STDIOCommand:
npxParameters:
-y nds-mcp
Generic stdio (manual)
npx -y nds-mcpThe server communicates over stdin/stdout (MCP protocol). Diagnostic messages go to stderr.
Data Sources
Source | Tables | Content |
AME2020 |
| Mass excess, binding energy, separation energies, Q-values |
NUBASE2020 |
| Half-life, spin/parity, decay modes, isomers |
IAEA (Angeli & Marinova 2013) |
| RMS charge radii |
Li et al. 2021 |
| Laser spectroscopy charge radii with per-isotope references |
ENSDF |
| Nuclear structure: levels, gamma transitions, decay feedings |
TUNL |
| Light nuclei (A=4–20) energy levels, resonance widths, isospin, decay modes (59 nuclides, 2512 levels) |
JENDL-5 Decay (optional, |
| Decay data + radiation spectra |
JENDL-5 XS (optional, |
| Pointwise cross sections + ENDF-6 interpolation laws |
EXFOR (optional, |
| Experimental data points (SIG/MACS/...) |
CODATA 2022 |
| Fundamental constants (value/uncertainty/unit, exact/truncated flags) |
Masses, Thresholds, and Near-Threshold Resonances (Important)
nds_get_massreturns AME atomic masses (neutral atoms; electrons included). This is standard: many Q-values/threshold computations can be done directly with atomic masses because electron masses largely cancel for reactions with the same total Z.If you need nuclear masses, convert via
M_nuc = M_atom - Z*m_e + B_e/c^2(electron binding energiesB_eare eV-scale for light nuclei; include them only if you need sub-keV precision).For unbound nuclei / broad resonances (e.g.
5He,5Li), a single real-number “ground-state energy/mass” depends on the resonance-parameter convention (S-matrix pole vs eigenphase centroid vs cross-section peak). Mixing AME masses with level energies from ENSDF/TUNL/evaluations can yield O(10–100 keV) shifts and even “threshold-above vs threshold-below” sign flips. When doing threshold comparisons for such systems, use a single self-consistent evaluation/convention.
Tools
Tool | Description |
| Database metadata: data versions, nuclide counts, file hash, optional DB status, and build/source metadata |
| Catalog installed libraries and query entrypoints (what exists, where to query, and which tools to use) |
| Inspect SQLite schema for an installed library (tables/columns/foreign keys; indexes optional) |
| Safe structured table query builder (filter/sort/paginate; no raw SQL). Enforces BLOB exclusion + |
| List embedded upstream ENDF-6 zip archive metadata for FENDL/IRDFF (never returns BLOB payloads) |
| Check npm registry for newer |
| Find nuclides by element, Z, and/or A (NUBASE2020) |
| Atomic mass data: mass excess, binding energy/A, atomic mass (AME2020) |
| Nucleon separation energies: Sn, Sp, S2n, S2p (AME2020) |
| Reaction Q-values: Qa, Q2bm, Qep, Qbn, etc. (AME2020) |
| Decay info: half-life, spin/parity, decay modes (NUBASE2020) |
| Nuclear charge radii with cross-source comparison (`mode=best |
| Search nuclides by property range (half-life, mass excess) |
| Nuclear energy levels from ENSDF + TUNL (auto-merged for A ≤ 20, with |
| Gamma-ray transitions from ENSDF |
| Beta/EC decay feeding patterns from ENSDF |
| ENSDF/NSR bibliographic references |
| JENDL-5 decay radiation spectra (discrete lines + continuous summaries) |
| List available JENDL-5 XS targets (A/state) for a given Z/projectile |
| List available JENDL-5 reaction channels for one target (mt/reaction/e-range/point-count) |
| JENDL-5 cross-section tables (`mode=raw |
| ENDF-6 NBT/INT interpolation at one incident energy |
| Search EXFOR data points (supports `quantity=SIG |
| Load full EXFOR entry payload by |
| Get one CODATA fundamental constant by name |
| List CODATA constants with filter and pagination |
Universal Query (Schema + Structured Queries)
Use nds_schema to discover tables/columns, then nds_query to query them safely.
Safety rules enforced by nds_query:
BLOB columns are never returned and cannot be explicitly selected (e.g. raw archive
contentfields).For big
*_pointstables, you must include a high-selectivity equality filter:where.eq.xs_id(evaluated XS tables), orwhere.eq.entry_id(EXFOR points)
For embedded raw archives tables, you can query metadata columns (e.g.
rel_path,sha256,size_bytes) but not the BLOB payload itself.For convenience, use
nds_list_raw_archivesto list raw-archive metadata (FENDL/IRDFF) without dealing with table names.
Cross-Source Rule
For the same physical observable that exists in multiple sources/databases, tools return source-tagged values from each source by default. Any recommended / best value is an additional field and does not replace or hide other source values.
Example: Charge Radii (new source-tagged output)
Use mode=compare to get all source-tagged values plus an explicit comparison summary:
[
{
"Z": 4,
"A": 10,
"mode": "compare",
"source_values": [
{
"source_name": "Li et al. laser spectroscopy",
"value_fm": 2.355,
"uncertainty_fm": 0.017,
"unit": "fm"
},
{
"source_name": "IAEA charge radii",
"value_fm": 2.355,
"uncertainty_fm": 0.017,
"unit": "fm"
}
],
"recommended_source": "Li et al. laser spectroscopy",
"recommended_r_charge_fm": 2.355,
"recommended_r_charge_unc_fm": 0.017,
"max_source_diff_fm": 0
}
]This reflects the current cross-source contract: return source-tagged values by default, and keep recommended/best as an additional field.
Example: JENDL-5 Pb-208 n,gamma
Raw points table:
{
"tool": "nds_get_cross_section_table",
"args": {
"Z": 82,
"A": 208,
"projectile": "n",
"mt": 102,
"mode": "raw",
"limit": 20
}
}Single-energy interpolation:
{
"tool": "nds_interpolate_cross_section",
"args": {
"Z": 82,
"A": 208,
"projectile": "n",
"mt": 102,
"energy_eV": 0.0253
}
}Optional clamped interpolation (instead of out-of-range error):
{
"tool": "nds_interpolate_cross_section",
"args": {
"Z": 82,
"A": 208,
"projectile": "n",
"mt": 102,
"energy_eV": 1000000000000,
"on_out_of_range": "clamp"
}
}Reaction channel discovery for one target:
{
"tool": "nds_get_reaction_info",
"args": {
"Z": 82,
"A": 208,
"state": 0,
"projectile": "n"
}
}If requested mt/reaction is absent for the nuclide, the server returns INVALID_PARAMS with available_mts and available_reactions.
If Z exists but requested A/state has no XS rows, server returns INVALID_PARAMS with available_targets (instead of generic not-found).
For common naming confusion (e.g., Li-6 n,a vs ENDF/JENDL n,t MT=105), error payload may include suggested_reaction.
nds_interpolate_cross_section defaults to on_out_of_range="error" (current behavior). With on_out_of_range="clamp", response includes clamped, requested_energy_eV, effective_energy_eV, tabulated_e_min_eV, and tabulated_e_max_eV.
For nds_search_exfor INVALID_PARAMS, payload includes structured guidance: parameter dependency/mutual-exclusion rules, copyable example calls, and available_for_Z overview (projectiles/quantities/A_values) when available.
Cross-section responses include explicit context fields: energy_unit="eV", cross_section_unit="b", jendl5_xs_version.
Cross-section responses also include both mt (ENDF MT number) and a human-meaningful reaction label plus reaction_description
so users/agents don't need to memorize MT codes.
Environment Variables
Variable | Default | Description |
|
| Tool exposure: |
|
| Database path. Set to skip auto-download. |
|
| Optional JENDL-5 database path (auto-downloaded on first use if unset). |
| GitHub Releases latest | Override auto-download URL for |
|
| Optional EXFOR database path (auto-downloaded on first use if unset). |
| GitHub Releases latest | Override auto-download URL for |
|
| Optional FENDL-3.2c DB path (maintainer ingest / status in |
| GitHub Releases latest | Override auto-download URL for |
|
| Optional IRDFF-II DB path (maintainer ingest / status in |
| GitHub Releases latest | Override auto-download URL for |
| GitHub Releases latest | Custom download URL for the SQLite file. |
Building the Database from Source
Maintainer-only: MCP clients never call these commands.
See RUNBOOK.md (repo only) for full SOP and raw input requirements. Minimal JENDL-5 build:
# Decay sublibrary
scripts/download-jendl5-dec.sh ~/.nds-mcp/raw/jendl5-dec_upd5.tar.gz
pnpm run ingest:jendl5-dec -- --source ~/.nds-mcp/raw/jendl5-dec_upd5.tar.gz --output ~/.nds-mcp/jendl5.sqlite
# Neutron pointwise XS sublibrary (300K, full archive)
scripts/download-jendl5-xs.sh ~/.nds-mcp/raw/jendl5-n-300K.tar.gz
pnpm run ingest:jendl5-xs -- --source ~/.nds-mcp/raw/jendl5-n-300K.tar.gz --output ~/.nds-mcp/jendl5.sqlite--jendl5-xs accepts tar/tgz/zip archives, extracted directories, single ENDF text files (.dat / .endf / .txt, including .gz), and json/jsonl sources.
Zip extraction uses system unzip; install it on hosts that run ingest jobs.
Release upload flow for optional DBs:
scripts/check-db.sh --only main,jendl5
scripts/release-phase2-dbs.sh --tag <tag> --repo fkguo/nds-mcp --jendl5 ~/.nds-mcp/jendl5.sqliteRule: build sqlite first, verify it locally, then upload release asset.
License
MIT
Available Tools
26 toolsnds_catalogA
Catalog installed libraries and query entrypoints (what exists, where to query, and which tools to use).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clarifies that the tool lists resources and directs to appropriate tools, but does not disclose output format, whether it scans local files or online sources, or any limitations. This is adequate but not rich in behavioral detail.
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 a single sentence, immediately front-loaded with the verb 'Catalog', and every phrase adds value. There is no redundancy or irrelevant detail.
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 no-parameter catalog tool, the description covers the essential purpose and the type of information returned. It could be more explicit about the output structure, but given the lack of output schema, it is reasonably complete for an agent to understand the tool's role.
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 tool has zero parameters, and the schema is an empty object with 100% coverage. Baseline for no params is 4, and the description adds no parameter-specific details (as none exist), which is appropriate.
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 a specific verb 'Catalog' with a clear resource: installed libraries and query entrypoints. The parenthetical explanation explicitly states what information is provided (existence, location, tool selection), which distinguishes it from sibling tools that query specific data.
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 when to use this tool: to discover what libraries exist, where to query, and which tool to use. However, it does not explicitly name alternatives or exclusions, leaving some ambiguity for an agent deciding between this and other discovery tools like nds_schema or nds_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_check_updateA
Check npm registry for newer nds-mcp version. Does not perform updates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the non-mutating nature (does not update), which is essential for trust. It doesn't describe return format or network error behavior, but the most critical trait is covered.
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 short sentences with the key information front-loaded. No wasted words, each 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?
The tool has no output schema, so the description should explain the return value or outcome. While it clearly states the check and non-update behavior, it doesn't indicate what the tool returns (e.g., a version number, a boolean, or a message). This is a gap, though the tool's simplicity mitigates it somewhat.
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 zero parameters, so the description has no parameters to explain. The baseline for zero parameters is 4, and the description is appropriate.
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 it checks the npm registry for a newer nds-mcp version, using the specific verb 'check' and resource. This distinguishes it from sibling tools, which all focus on nuclear data queries.
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 a clear context for use (checking for newer versions) and explicitly states what it does not do ('does not perform updates'). It lacks named alternatives, but the exclusion is valuable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_find_nuclideA
Find nuclides by element symbol, Z (atomic number), and/or A (mass number). Returns basic properties from NUBASE2020.
| Name | Required | Description | Default |
|---|---|---|---|
| A | No | Mass number | |
| Z | No | Atomic number | |
| element | No | Element symbol (e.g. "He", "U", "Pb") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns basic properties from NUBASE2020, implying a read-only lookup. However, it does not explain how multiple criteria are combined, whether multiple matches are returned, or what 'basic properties' includes, leaving behavioral ambiguity.
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 concise sentences with no filler. It front-loads the primary purpose immediately and states the data source, making it easy for an agent to quickly understand the tool's 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?
For a simple search tool with three well-described parameters, the description covers the core purpose. However, with no output schema and no annotations, it omits important context such as the output format, how criteria are combined, and whether results are singular or plural. This is a moderate gap for an agent deciding whether this tool meets a query.
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 already describes each parameter (A, Z, element) with 100% coverage. The description adds meaningful semantic value by explicitly using 'and/or', clarifying that the parameters are optional, flexible filters rather than requiring all to be provided. This goes beyond the schema's individual field descriptions.
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 a specific verb ('Find'), identifies the resource ('nuclides'), and clearly defines the search scope by element symbol, Z, and/or A. This clearly distinguishes it from sibling tools like nds_get_mass or nds_search, which target different aspects of nuclear data.
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 when to use this tool: when you need to find nuclides by basic identifiers and retrieve basic properties. However, it does not explicitly state when not to use it or mention alternatives such as nds_get_mass or nds_search, so usage guidance is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_get_charge_radiusA
Get nuclear charge radius (rms) with source-aware comparison across IAEA, laser spectroscopy, and CODATA (when available). mode=best|all|compare controls recommendation vs full source list.
| Name | Required | Description | Default |
|---|---|---|---|
| A | No | Mass number (omit for all isotopes of element) | |
| Z | Yes | Atomic number | |
| mode | Yes | Source selection mode: best (recommended), all (all sources), compare (all + spread) | best |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions source-aware comparison and mode-based recommendation vs full source list, adding context beyond the name. However, it does not describe the return format, edge cases (e.g., CODATA unavailable), or whether the operation is read-only, leaving some behavioral traits undisclosed.
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 concise sentences, front-loaded with the main verb and resource. It avoids redundancy and every sentence adds meaningful information. The mode control is explained efficiently without unnecessary elaboration.
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?
While there is no output schema, the description sufficiently conveys the tool's core purpose and mode behavior for a simple query tool. It does not explain return values or uncertainties, but given the straightforward nature of a charge radius lookup and the clarity of the description, it is reasonably complete. A dedicated note on output format would elevate it, but not critically needed.
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 100%, so the baseline is 3. The description adds a clarifying sentence about mode=best|all|compare controlling recommendation vs full source list, but this largely mirrors the schema's enum descriptions. No additional semantic detail is provided for Z or A beyond what the schema already includes.
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 with a specific verb ('Get') and a unique resource ('nuclear charge radius (rms)'). It distinguishes itself from sibling tools by emphasizing source-aware comparison across IAEA, laser spectroscopy, and CODATA. The mode parameter is explicitly mentioned, further clarifying the scope.
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 implied context about when to use this tool—for nuclear charge radius data—but does not explicitly state when to use it over alternatives or list exclusions. The mode explanation (best/all/compare) offers usage guidance for parameter options, not tool selection. This is clear but not fully explicit in differentiating from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_get_constantA
Get one CODATA fundamental constant by name (case-insensitive by default).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | CODATA constant name (e.g. "Planck constant", "speed of light in vacuum") | |
| case_sensitive | Yes | Whether to require exact case-sensitive name matching |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It adds the useful trait of case-insensitive matching by default, but it does not disclose what happens if the constant is not found, the return format (e.g., value and units), or any error behavior. This is a basic yet incomplete disclosure.
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 a single, front-loaded sentence that immediately conveys the action and target. Every word is meaningful, with no filler or 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?
The tool is simple with only two required parameters, both fully documented in the schema. The description provides the core purpose and a behavioral nuance, which is sufficient for a straightforward lookup. However, the absence of an output schema means the agent does not know the return structure, so it is not a 5.
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 100% for both parameters (name and case_sensitive), with examples and defaults provided. The description adds no additional parameter-level meaning beyond what the schema already contains, so baseline 3 is appropriate.
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 a specific verb ('Get') and clearly identifies the resource ('one CODATA fundamental constant') and the retrieval method ('by name'). It distinguishes itself from siblings like nds_list_constants, which lists constants, by focusing on single-constant retrieval.
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 the tool is used when you need a specific constant by name, which provides clear context. However, it does not explicitly mention when not to use it or name alternatives, so it falls just short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_get_cross_section_tableB
Get JENDL-5 pointwise cross-section tables. mode=raw returns tabulated points; mode=sampled interpolates onto a log grid with ENDF-6 NBT/INT rules.
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Mass number | |
| Z | Yes | Atomic number | |
| mt | No | ENDF-6 MT reaction number | |
| mode | Yes | "sampled": ENDF interpolation on log grid; "raw": stored points with pagination | sampled |
| limit | Yes | ||
| state | Yes | Target isomeric state | |
| offset | Yes | ||
| e_max_eV | No | ||
| e_min_eV | No | ||
| n_points | Yes | ||
| reaction | No | Reaction label like "n,gamma" | |
| projectile | Yes | n |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the behavioral difference between raw and sampled modes, including the ENDF-6 NBT/INT interpolation rules. However, it does not mention pagination, default parameter behavior, or error conditions, and there are no annotations to fall back on.
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, efficiently conveying the core action and mode-specific behavior with no wasted words. Every sentence 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 complexity (12 parameters, 8 required) and no output schema, the description is too sparse. It does not explain how to choose between mt and reaction, energy range defaults, or pagination, leaving significant gaps for an agent to invoke the tool 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?
The description adds some meaning for 'mode' by explaining what each mode returns, but it does not explain key parameters like e_min_eV, e_max_eV, n_points, limit, and offset, which also lack schema descriptions. With schema coverage at 50%, the description fails to compensate for the missing parameter 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 identifies the tool as retrieving JENDL-5 pointwise cross-section tables and explains the two return modes. It is specific and unambiguous, but it does not differentiate from sibling tools like nds_interpolate_cross_section or nds_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?
No guidance is provided on when to use this tool versus alternatives such as nds_interpolate_cross_section or nds_get_reaction_info. The description only explains the modes, not the use case, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_get_decayA
Get decay information from NUBASE2020: half-life, spin/parity, decay modes with branching ratios, isomers.
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Mass number | |
| Z | Yes | Atomic number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of transparency. It discloses the data source (NUBASE2020) and explicitly enumerates the returned data fields, making it evident that this is a read-only retrieval operation. It does not mention edge cases like not-found behavior or units, but the description is sufficiently clear for a straightforward get tool.
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 a single sentence that is concise, front-loaded with the main action, and contains no filler words. Every element (source, data types, isotopes) adds value and is directly relevant to tool selection and invocation.
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 2-parameter retrieval tool without an output schema, the description adequately covers what the tool does, what data will be returned, and the data source. It could be slightly richer by specifying units or noting that all isomers are included, but it is complete for typical use cases.
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 already provides complete descriptions for both parameters (Z: atomic number, A: mass number) with 100% coverage. The description does not add parameter-specific nuances beyond what the schema states, so the baseline score of 3 is appropriate.
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 a specific verb 'Get' with a clear resource 'decay information from NUBASE2020' and lists the exact data contents (half-life, spin/parity, decay modes with branching ratios, isomers). This clearly distinguishes it from sibling tools like nds_get_mass or nds_get_separation_energy, which focus on different nuclear properties.
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 clearly implies the use case: when decay information for a nuclide is needed, as it states the data types returned. It does not explicitly mention when not to use it or name alternative tools, but the context is clear and distinct from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_get_exfor_entryA
Get one EXFOR entry (all subentries + points) by entry number.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | EXFOR entry number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose that the result includes all subentries and points, which is useful, but it does not mention output format, potential large payload, error behavior, or whether any specific access conditions apply.
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 a single, front-loaded sentence that communicates the essential purpose and scope with no redundant wording.
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 simplicity of a one-parameter retrieval tool and no output schema, the description adequately covers what the tool returns. Minor gaps remain around error handling and output size, but the core information is present.
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 fully describes the only parameter (entry_id as 'EXFOR entry number'), and the description adds no extra semantics beyond restating that the tool works by entry number. This meets the baseline for high schema coverage.
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 one EXFOR entry including both subentries and data points, keyed by entry number. This specific verb-plus-resource pairing differentiates it from sibling search and listing tools.
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: use when you have a known EXFOR entry number and need the full entry. It does not explicitly name alternatives or when-not-to-use, but the context is clear enough for a simple lookup tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_get_massA
Get atomic mass data for a nuclide (Z, A) from AME2020: mass excess, binding energy/A, beta-decay energy, atomic mass.
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Mass number | |
| Z | Yes | Atomic number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does add context by listing the exact quantities returned (mass excess, binding energy/A, beta-decay energy, atomic mass), which sets expectations for the output. However, it does not explicitly state that this is a read-only operation, mention error behavior, or discuss any limitations or permissions.
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 a single, well-structured sentence that front-loads the core action and resource, then efficiently lists the specific data items. Every element adds value and there is 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 simplicity (two parameters, no output schema), the description is quite complete. It specifies the data source (AME2020) and enumerates the return fields, which is essential without an output schema. It could add units or a note on error handling, but the current description provides sufficient context for an informed agent.
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 100% with adequate descriptions for Z (atomic number) and A (mass number). The description only reiterates that these parameters define a nuclide, adding no extra meaning about ranges, units, or relationships. Since schema coverage is high, the baseline of 3 is appropriate.
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 function with a specific verb ('Get'), a specific resource ('atomic mass data'), and precise scope ('nuclide (Z, A) from AME2020'). It also enumerates the exact data returned (mass excess, binding energy/A, beta-decay energy, atomic mass), distinguishing it from sibling tools like nds_get_separation_energy and nds_get_q_value.
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 when to use this tool by specifying the data type and source (AME2020), but it does not explicitly mention alternatives or state when not to use it. There are no exclusions or comparisons to sibling tools, so the usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_get_q_valueA
Get Q-values from AME2020: Qα, Q(2β⁻), Q(εp), Q(β⁻n), Q(4β⁻), Q(d,α), Q(p,α), Q(n,α).
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Mass number | |
| Z | Yes | Atomic number | |
| type | No | Q-value type (omit for all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description indicates a read operation (Get) with a data source (AME2020). It does not disclose output format, default behavior when 'type' is omitted, or error handling, but the low-risk nature of a query tool keeps it at a mid-level score.
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 a single, front-loaded sentence stating the action and listing the Q-value types. No filler words, every element 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 the tool's simplicity (3 parameters, no output schema), the description covers the essential purpose and differentiates from siblings. It could mention that omitting 'type' returns all Q-values, but that is already captured in the schema, so the context is 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?
Schema description coverage is 100%, so all parameters (Z, A, type) are already documented. The description adds human-readable Q-value notation (e.g., Q(2β⁻)) that maps to enum values, but this is marginal beyond the schema's own 'Q-value type (omit for all)' description.
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 a specific verb 'Get' with the resource 'Q-values from AME2020', and explicitly lists the available Q-value types, clearly distinguishing this from sibling tools like nds_get_mass and nds_get_separation_energy.
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 clearly implies usage when Q-values are needed and lists all types, but it does not explicitly mention when not to use it or name alternatives. This provides clear context without exclusions, earning a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_get_radiation_spectrumA
Get decay radiation spectra from JENDL-5 Decay (gamma/beta/alpha/X-ray discrete lines and continuous-spectrum summaries).
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Mass number | |
| Z | Yes | Atomic number | |
| type | Yes | Filter by radiation type | all |
| state | Yes | Isomeric state (0=ground, 1=first isomer, ...) | |
| min_intensity | No | Minimum yield per decay. FC is yield per decay and can exceed 1.0. | |
| energy_max_keV | No | Maximum energy filter (keV) | |
| energy_min_keV | No | Minimum energy filter (keV) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavioral traits. It does reveal that the output contains both discrete lines and continuous-spectrum summaries, which is non-obvious and useful, but it does not discuss read-only safety, result size, pagination, or any limitations beyond that content detail.
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 a single, front-loaded sentence that immediately states the tool's core function, data source, and output content with no unnecessary words. It is optimally concise and structured.
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 schema fully documents all parameters, and the description adequately covers the core output content and scope, making the tool's purpose and invocation sufficiently clear. However, the absence of an output schema or annotations means a brief mention of return structure or usage caveats would make it more complete, but this is not a critical gap.
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 100% for all 7 parameters, so the description adds minimal semantic value beyond the schema. It mentions radiation types and summary nature, which loosely relates to the 'type' parameter, but it does not explain any parameter in a way that is not already in 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 states the specific verb 'Get' and the resource 'decay radiation spectra from JENDL-5 Decay', and further clarifies the scope by enumerating radiation types (gamma/beta/alpha/X-ray) and output forms (discrete lines and continuous-spectrum summaries). This explicitly differentiates it from sibling tools like nds_query_gammas or nds_get_decay, which focus on different aspects of decay data.
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 the tool should be used when decay radiation spectra are needed, but it offers no explicit 'when not to use' or alternative tool recommendations. The context is clear only through the tool's purpose, not through explicit comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_get_reaction_infoA
Return available JENDL-5 reaction channels for a target: mt, reaction, e_min_eV, e_max_eV, n_points.
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Mass number | |
| Z | Yes | Atomic number | |
| state | Yes | Target isomeric state | |
| reaction | No | Optional reaction string to check for common naming aliases (no automatic rewrite) | |
| projectile | Yes | n |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for disclosing behavior. It mentions the return of data and lists output fields, but does not state whether the operation is read-only, what happens for invalid targets, whether any authentication is needed, or any potential errors. For a seemingly simple read operation, the description leaves significant behavioral uncertainty.
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 a single, compact sentence that leads with the action verb and resource, then lists the output fields. It contains no filler or redundant information, making it highly concise and appropriately structured for quick scanning.
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 lists expected output fields but fails to explain their meaning (e.g., what 'mt' stands for, units of e_min_eV and e_max_eV, or the format of the channel list). With no output schema, this is a notable gap. However, the focus on JENDL-5 and the specific field list provides enough context for a basic understanding.
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 80% (4 of 5 parameters have descriptions), so the schema does most of the work. The tool description adds no parameter-specific explanations; it only lists output fields. The baseline score of 3 is appropriate because the schema covers parameters well, and the projectile's enum makes its meaning clear.
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 action ('Return available JENDL-5 reaction channels'), specifies the exact data source (JENDL-5), and lists the output fields. This distinguishes it from sibling tools like nds_get_cross_section_table and nds_interpolate_cross_section, which focus on numeric cross-section data rather than channel listings.
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 when to use the tool: to get reaction channel metadata for a given target. However, it provides no explicit guidance on when not to use it or mention of alternatives, such as using cross-section tools if the user needs numerical data. The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_get_separation_energyA
Get nucleon separation energies from AME2020: Sn, Sp, S2n, S2p.
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Mass number | |
| Z | Yes | Atomic number | |
| type | No | Separation energy type (omit for all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the data source (AME2020) and available types, but does not explicitly state that this is a read-only operation, describe output format, or mention error behavior. The gaps are notable but not severe for a simple retrieval tool.
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 a single, well-structured sentence that conveys the action, resource, source, and supported types with zero wasted words. It is appropriately concise and 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?
The tool is simple with fully documented parameters and a clear one-line purpose. The description does not explain the return format, but given the absence of an output schema and the straightforward nature of the retrieval, the provided information is nearly sufficient. A small gap remains regarding what the response looks like.
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 100%, so the baseline is 3. The description only echoes the enum values (Sn, Sp, S2n, S2p) already listed in the schema and adds no additional meaning about the Z, A, or type parameters beyond what the schema provides.
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 a specific verb ('Get') and clearly identifies the resource ('nucleon separation energies from AME2020'), listing the exact energy types (Sn, Sp, S2n, S2p). This distinguishes it from sibling tools like nds_get_mass or nds_get_q_value.
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 clearly implies when to use this tool—whenever separation energies are needed—but it does not explicitly state when not to use it or mention alternatives. The specificity provides strong contextual guidance, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_infoA
Return NDS database metadata: data versions, nuclide counts, DB file hash.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It explicitly uses 'Return' to indicate a read-only operation and lists the exact metadata fields returned. It does not discuss potential side effects or prerequisites, but for a simple metadata retrieval tool this is adequate 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 a single, front-loaded sentence with no fluff. Every phrase adds value: the verb, the resource, and the specific metadata items. It is concise and easy to parse.
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 zero parameters and no output schema, the description is reasonably complete. It lists the key metadata categories returned, which is sufficient for an agent to decide whether to call this tool. It does not detail the response structure, but that is not critical for a metadata summary 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?
The tool has zero parameters, so the schema is an empty object (100% coverage). The description adds meaning by specifying the content of the metadata returned, which is more than the schema provides. Baseline for zero parameters is 4, and the description meets it.
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 a specific verb ('Return') and clearly identifies the resource (NDS database metadata), enumerating specific items (data versions, nuclide counts, DB file hash). This clearly distinguishes it from sibling tools focused on querying specific data or operations.
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 obtaining general database metadata, but it does not explicitly state when to use this tool versus alternatives like nds_catalog or nds_schema. No when-not-to-use or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_interpolate_cross_sectionA
Interpolate JENDL-5 cross section at a specific energy using ENDF-6 NBT/INT segmented interpolation rules.
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Mass number | |
| Z | Yes | Atomic number | |
| mt | No | ||
| state | Yes | ||
| reaction | No | ||
| energy_eV | Yes | Incident energy (eV) | |
| projectile | Yes | n | |
| on_out_of_range | Yes | How to handle energy outside tabulated range: error (default) or clamp to nearest boundary | error |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds useful behavioral detail by specifying the exact interpolation rules (ENDF-6 NBT/INT), which is beyond the schema. However, it does not explicitly state that the operation is read-only or describe any potential side effects, though they are likely minimal for this type of lookup.
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 a single, front-loaded sentence with no redundant words. Every element contributes to understanding the tool's function: interpolation, JENDL-5, specific energy, and ENDF-6 rules.
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 has 8 parameters, no annotations, and no output schema, the description is too sparse. It omits how to identify the nuclide (Z, A, state), how to select a reaction (mt or reaction), and what the expected return value is. This makes it insufficient for an agent to confidently invoke the tool correctly without additional research.
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 50%, with state, projectile, mt, and reaction lacking schema descriptions. The description adds no parameter-specific guidance beyond the mention of 'specific energy,' and does not compensate for the undocumented parameters. It fails to explain how to specify a reaction via mt or reaction, or the role of projectile/state.
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 identifies the tool as an interpolation operation for JENDL-5 cross sections at a specific energy, using specific ENDF-6 NBT/INT rules. This distinguishes it from sibling tools like nds_get_cross_section_table, which likely returns a table rather than a single interpolated value.
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 the tool is for single-energy interpolation, contrasting with the table-based sibling tools. However, it does not explicitly mention alternatives or exclusions, so while context is clear, it stops short of providing explicit when-to-use vs 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.
nds_list_available_targetsA
List available JENDL-5 XS targets (A/state) for a given Z and projectile.
| Name | Required | Description | Default |
|---|---|---|---|
| Z | Yes | Atomic number | |
| projectile | Yes | n |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that this is a list/read operation and mentions the data source (JENDL-5) and output concept (A/state), but does not describe return format, pagination, or any edge cases. This is adequate but not comprehensive for a read tool.
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 a single, front-loaded sentence with no redundant words. It includes the essential verb, resource, and parameter context, earning a maximum score.
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 list tool with two parameters and no output schema, the description sufficiently conveys the tool's purpose and output concept (A/state targets). It does not fully describe return value structure, but the minimal complexity of the tool makes this 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?
Schema coverage is 50% (Z has a description, projectile has enum/default but no description). The description repeats the parameters without adding deeper semantics. The mention of 'A/state' hints at output structure but does not elaborate on parameter 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 a specific verb ('List') and resource ('available JENDL-5 XS targets (A/state)'), and specifies the required inputs (Z and projectile). This distinguishes it from sibling tools like nds_get_cross_section_table or nds_query, which are about retrieving data rather than enumerating available targets.
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 context for when to use the tool (when you need to list available targets for a given Z and projectile), but does not explicitly mention alternatives or exclusion scenarios. It implies usage but lacks a direct comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_list_constantsA
List CODATA fundamental constants with optional keyword filtering and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | Maximum results | |
| query | No | Keyword filter on constant names | |
| offset | Yes | Pagination offset | |
| exact_only | Yes | When true, return only constants with exact CODATA uncertainty |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. 'List' implies a read-only operation and filtering/pagination are mentioned, but the exact_only parameter is not surfaced in the description, and no return behavior is described.
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 a single sentence that front-loads the action and resource. Every phrase adds relevant information, with no filler 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?
For a low-complexity listing tool with full schema coverage, the description is adequate but minimal. It omits the exact_only behavior and does not mention what shape the returned list takes, which would be useful in the absence of an 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 description coverage is 100%, so the schema already documents all parameters. The description adds a high-level framing of 'keyword filtering and pagination' but provides no detail beyond the schema, so it earns the baseline score.
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 a specific verb ('List') and a specific resource ('CODATA fundamental constants'), and clearly conveys the tool's scope. It distinguishes this from siblings like nds_get_constant by emphasizing plural listing behavior with optional filtering and pagination.
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?
It states the tool lists constants and supports optional keyword filtering and pagination, giving some context for when to use it. However, it does not explicitly mention alternatives like nds_get_constant or provide 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.
nds_list_raw_archivesA
List embedded upstream ENDF-6 zip archive metadata for FENDL/IRDFF (never returns BLOB payloads).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Substring match on rel_path (case-sensitive). | |
| limit | Yes | Required. Hard-capped server-side (default cap: 5000). | |
| offset | Yes | ||
| library | Yes | Raw archive library to browse: fendl32c|irdff2 | |
| projectile | No | Projectile selector (fendl32c only; ignored if absent). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description is the primary source for behavioral details. It does disclose a key behavior—never returns BLOB payloads—but omits other details like pagination behavior, error semantics, or permissions. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence that leads with the action and resource, and parenthetically adds a critical behavioral caveat. No 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?
For a list tool, the description states the core purpose and key limitation, and the schema covers parameters. However, without an output schema, it does not convey the structure of the returned metadata, leaving some ambiguity about the response format.
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 descriptions cover 4 of 5 parameters well (q, limit, library, projectile), giving the agent necessary semantics. The description itself adds no extra parameter information, but with high coverage it does not need to.
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 identifies the action (list), the resource (embedded upstream ENDF-6 zip archive metadata), and the library scope (FENDL/IRDFF), distinguishing it from sibling list tools.
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—browsing raw archive metadata—but does not explicitly mention alternatives or state when not to use it. The note about never returning BLOB payloads implies a distinction from payload-returning tools, but no sibling is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_lookup_referenceA
Look up ENSDF/NSR bibliographic references by keynumber or mass number.
| Name | Required | Description | Default |
|---|---|---|---|
| A | No | Mass number (list all references for this A) | |
| keynumber | No | NSR keynumber (e.g. "2012WA38") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action without mentioning return format, data source details, or any side effects. For a type of operation, it provides almost no behavioral transparency beyond the tool name.
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 a single, front-loaded sentence that directly states the tool's purpose without excessive wording.
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 is adequate for a simple tool with two optional parameters, but it does not describe the return format or behavior when no references are found. Given the absence of an output schema and annotations, a bit more detail would improve 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 input schema fully documents A and keynumber with descriptions. The description adds the 'or' relationship indicating that either parameter can be used, which is helpful but not extensive. Since schema coverage is 100%, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function as looking up bibliographic references, specifies the two lookup keys (keynumber and mass number), and differentiates it from sibling tools like nds_query or nds_search which handle broader data queries.
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 context for when to use this tool: to retrieve references by NSR keynumber or mass number. However, it does not explicitly name alternative tools or state when not to use it, so it falls short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_queryC
Safe structured query builder over SQLite tables (filter/sort/paginate; no raw SQL input).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | Required. Hard-capped server-side (default cap: 5000). | |
| table | Yes | Table or view name (must exist; [A-Za-z0-9_]+ only). | |
| where | No | ||
| offset | Yes | ||
| select | No | Column allowlist. If omitted, selects all non-BLOB columns. | |
| library | Yes | Database to query: nds|jendl5|exfor|fendl32c|irdff2 | |
| order_by | No | Sort order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'safe' and 'no raw SQL input', implying protection against injection, but does not disclose whether the operation is read-only, what the response format is, how errors are handled, or that there is a hard limit cap (which is only in the schema). The description adds minimal value beyond the schema's own type/constraint 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 a single, tightly worded sentence of 12 words. It is front-loaded with the core purpose ('Safe structured query builder') and follows with essential capabilities ('filter/sort/paginate; no raw SQL input'). Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, nested filtering objects, multiple database libraries) and the absence of an output schema, the description is too terse to be complete. It does not mention the supported libraries, the fact that it queries nuclear/EXFOR data, or the default selection behavior. The schema provides structure, but the description fails to provide essential high-level context needed by an agent to appropriately invoke this 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 71%, so the baseline is 3. The description adds a high-level conceptual summary ('filter/sort/paginate') that maps to the where, order_by, limit, and offset parameters, but it does not provide any specific parameter-level semantics beyond what the schema already offers. It does not compensate for the 29% of parameters lacking schema descriptions (e.g., offset lacks a description, but the summary covers its general role).
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 identifies the tool as a structured query builder over SQLite tables, with explicit mention of filter/sort/paginate and no raw SQL input. This distinguishes it from raw SQL execution tools, but it does not explicitly contrast it with the specialized sibling query tools (e.g., nds_query_gammas, nds_query_levels), so it falls short of full sibling differentiation.
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 minimal guidance on when to use this tool versus the specialized query tools. It implies safe, structured querying but does not state when to choose nds_query over nds_query_gammas or others, nor does it mention any exclusions or prerequisites. Instead of guiding selection, it relies on the tool name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_query_decay_feedingsB
Query beta/EC decay feeding patterns from ENSDF. Returns branching ratios, log(ft) values, endpoint energies for parent nuclide decays.
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Parent mass number | |
| Z | Yes | Parent atomic number | |
| decay_mode | No | Filter by decay mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It reveals the return contents but does not disclose whether the operation is read-only, requires authentication, has rate limits, or behaves differently for invalid nuclides. The query nature is implied but not explicitly stated as safe.
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?
A single, front-loaded sentence that states the purpose and expected outputs. Every word contributes, 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?
For a simple query tool with three parameters and no output schema, the description adequately names the returned data types. It is slightly incomplete on usage scenarios and safety, but the core behavior is well covered.
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 100%, with each parameter described in the schema. The description adds context by framing Z/A as 'parent nuclide' and linking to decay modes, but it does not provide new syntax or format details 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 a specific verb 'Query' with a clear resource ('beta/EC decay feeding patterns from ENSDF') and lists concrete returned data (branching ratios, log(ft), endpoint energies). This distinguishes it from siblings like nds_get_decay or nds_query_levels.
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 given on when to use this tool versus alternatives such as nds_get_decay or nds_query_gammas. The description states what it does but does not mention exclusions, prerequisites, or preferred contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_query_gammasA
Query gamma-ray transitions from ENSDF. Returns energies, intensities, multipolarities, conversion coefficients for a nuclide.
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Mass number | |
| Z | Yes | Atomic number | |
| limit | Yes | ||
| level_energy | No | Filter gammas from specific level (keV) | |
| gamma_energy_max | No | Maximum gamma energy (keV) | |
| gamma_energy_min | No | Minimum gamma energy (keV) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral transparency. It states the return fields, which adds value, but does not disclose filtering capabilities, output structure, pagination, or any limits/caveats. The behavior is partially transparent but leaves key usage details unmentioned.
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 one sentence, front-loaded with the primary action and target. It includes essential return information without any filler. Every word contributes to understanding the tool's 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 the core purpose and return types, which is sufficient given the high schema coverage. However, there is no output schema and the description does not mention the limit parameter or filter options, leaving minor gaps for a complete picture.
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 high (83%), so the schema already explains most parameters (Z, A, energy filters). The description adds no parameter-specific meaning beyond 'for a nuclide', which maps to Z/A. Since the schema handles the heavy lifting, baseline 3 is appropriate.
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 a specific verb ('Query') and resource ('gamma-ray transitions from ENSDF'), and explicitly lists the returned data types (energies, intensities, multipolarities, conversion coefficients). This clearly distinguishes it from sibling tools like nds_query_levels and nds_query_decay_feedings, which target different nuclear data.
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: it is used for querying gamma-ray transitions from ENSDF for a nuclide, implying the need for Z and A. It does not explicitly name alternatives or exclusions, but the scope is well-defined by the query target.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_query_levelsA
Query nuclear energy levels from ENSDF and TUNL. Returns level energies, spin-parity, half-lives. For A ≤ 20, automatically includes TUNL resonance data (widths, isospin, decay modes, table_label for TUNL publication provenance). Each result has a "source" field ("ENSDF" or "TUNL").
| Name | Required | Description | Default |
|---|---|---|---|
| A | Yes | Mass number | |
| Z | Yes | Atomic number | |
| limit | Yes | ||
| energy_max | No | Maximum level energy (keV) | |
| energy_min | No | Minimum level energy (keV) | |
| include_tunl | No | Include TUNL resonance data (default: true for A ≤ 20, false otherwise) | |
| include_decay_datasets | Yes | Include levels from decay datasets (default: ADOPTED only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses return fields, the 'source' field, and conditional TUNL data (widths, isospin, decay modes, table_label). It doesn't mention pagination or auth, but these are not necessarily expected for a read-only query tool.
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?
Three dense sentences with no filler: first sentence gives purpose, second explains TUNL behavior, third describes the source field. Every sentence 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?
The description, combined with the rich schema, gives a complete picture for a query tool: inputs are documented, outputs are listed, and special behavior is explained. Missing explicit return structure details but that's acceptable without an 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 86%, so the baseline is 3. The description adds the A ≤ 20 condition and TUNL-specific output details but does not further explain energy_min/max or limit beyond what the schema already provides.
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 'Query nuclear energy levels from ENSDF and TUNL' and specifies the returned data (energies, spin-parity, half-lives), distinguishing it from sibling tools like nds_query_gammas and nds_query_decay_feedings.
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 that this tool is for energy level queries and explains the automatic TUNL inclusion for A ≤ 20, which is useful. However, it doesn't explicitly compare with alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_schemaA
Inspect SQLite schema for an installed NDS database library (tables/columns/foreign keys, optional indexes).
| Name | Required | Description | Default |
|---|---|---|---|
| library | Yes | Database to inspect: nds|jendl5|exfor|fendl32c|irdff2 | |
| include_indexes | Yes | Include index metadata (name/columns). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses that the tool operates on an 'installed' database library (implying local, not online) and that it inspects rather than modifies. However, it does not detail side effects, error conditions for missing libraries, or the exact response format, leaving some room for ambiguity.
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 a single, front-loaded sentence that efficiently communicates the tool's purpose and key scope options. There is no filler or repetition of schema details, making every word earn 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 simple tool with only two parameters and no output schema, the description adequately covers the what and the key optionality. It could be more complete by hinting at the output structure (e.g., returning table definitions), but the mention of tables/columns/foreign keys provides a reasonable mental model, so it is sufficiently complete for a low-complexity 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?
The input schema fully documents both parameters with descriptions for 'library' (with an enum) and 'include_indexes' (with a default). The description adds a general hint about 'optional indexes' which aligns with include_indexes, but it does not meaningfully extend the schema's own parameter explanations. This matches the baseline for high schema coverage.
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 the specific verb 'Inspect' targeting the resource 'SQLite schema' and enumerates the scope (tables/columns/foreign keys, optional indexes). This clearly distinguishes the tool from sibling data-query tools like nds_query or nds_get_mass, making its purpose unmistakable.
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 you need to inspect the schema of an installed database—but it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites beyond the implicit notion of the library being installed. This meets the 'implied usage' criterion but lacks direct comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_searchA
Search nuclides by property range (half_life_seconds, mass_excess_keV). Returns ground-state nuclides matching criteria.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Maximum value | |
| min | No | Minimum value | |
| Z_max | No | Maximum atomic number | |
| Z_min | No | Minimum atomic number | |
| limit | Yes | Maximum results | |
| property | Yes | Property to search by. Note: stable nuclides have null half_life_seconds and are excluded from half-life range searches. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It mentions that only ground-state nuclides are returned, which is a useful behavioral trait. However, it does not disclose other important behaviors such as how stable nuclides are handled (null half_life_seconds and exclusion from half-life searches), which is only mentioned in the schema. Limits, sorting, or pagination are not described. This is a partial disclosure.
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 one concise sentence that is front-loaded with the action and resource. Every word contributes: it specifies the search type, property examples, and result focus. There is no wasted text, making it highly efficient for an agent to parse.
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 provides the core purpose and return focus, but lacks details about the output format since there is no output schema. It does not explain whether results are a list, how they are sorted, or what fields each nuclide contains. Given the tool's complexity (six parameters, multiple properties) and the absence of an output schema, the description is not fully complete for an agent to confidently infer expected results.
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?
All parameters have schema descriptions (100% coverage), so the description does not need to repeat them. The tool description adds minimal value beyond the schema—it mentions the two property names, but the schema already defines an enum that includes these and aliases. The min/max and Z_min/Z_max are well-documented in the schema. The description does not clarify the relationship between the property aliases or the range semantics beyond what the schema provides.
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: searching nuclides by property range, with specific examples of properties (half_life_seconds, mass_excess_keV). It also clarifies that it returns ground-state nuclides, which narrows the scope and helps distinguish it from other search tools. The verb 'Search' and resource 'nuclides' are specific, and the scope is well-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?
The description implies use for property-range searches, but does not explicitly state when to use this tool over alternatives like nds_find_nuclide or nds_query. It lacks exclusions or guidance on choosing between search methods. The context is clear enough for a basic understanding, but no explicit 'when to use' or 'when not to use' is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nds_search_exforB
Search EXFOR experimental reaction data points by target/projectile/reaction/quantity (including MACS).
| Name | Required | Description | Default |
|---|---|---|---|
| A | No | Target mass number | |
| Z | Yes | Target atomic number | |
| limit | Yes | ||
| state | Yes | Target isomeric state | |
| e_max_eV | No | ||
| e_min_eV | No | ||
| quantity | Yes | SIG | |
| reaction | No | "n,gamma", "n,total", "p,n", etc. | |
| kT_max_keV | No | ||
| kT_min_keV | No | ||
| projectile | Yes | n |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure burden. It only states the search action, without mentioning return format, pagination, required fields, or any operational constraints. For a read-only search, it should at least indicate how results are returned or limited, but it does not.
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 a single, front-loaded sentence with no fluff. It efficiently conveys the tool's core purpose and key filtering dimensions, earning a top score for conciseness.
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 has 11 parameters, no annotations, no output schema, and multiple sibling tools, one short sentence is insufficient. It lacks guidance on energy filters, result limits, output structure, and how it differs from similar EXFOR-related tools, making the description incomplete for effective tool selection and invocation.
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 36%, the description must compensate. It mentions target, projectile, reaction, and quantity, which maps to several parameters, but omits energy range (e_min/e_max) and kT range parameters, which are essential for MACS searches. The phrase 'including MACS' adds some value but doesn't explain the required kT inputs.
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 EXFOR experimental reaction data points' with a specific verb and resource, distinguishing this tool from generic search tools like nds_search by naming EXFOR and the data type. It also lists the key search facets (target/projectile/reaction/quantity) and explicitly includes MACS, which is a unique capability.
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 EXFOR experimental reaction data points are needed, but it provides no explicit when-to-use vs alternatives like nds_get_exfor_entry or nds_get_cross_section_table. There are no exclusions or alternative tool names mentioned, so guidance is only implicit.
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.
26 tool updates
v0.2.0- First observed
nds_catalog - First observed
nds_check_update - First observed
nds_find_nuclide - First observed
nds_get_charge_radius - First observed
nds_get_constant - First observed
nds_get_cross_section_table - First observed
nds_get_decay - First observed
nds_get_exfor_entry - First observed
nds_get_mass - First observed
nds_get_q_value - First observed
nds_get_radiation_spectrum - First observed
nds_get_reaction_info - First observed
nds_get_separation_energy - First observed
nds_info - First observed
nds_interpolate_cross_section - First observed
nds_list_available_targets - First observed
nds_list_constants - First observed
nds_list_raw_archives - First observed
nds_lookup_reference - First observed
nds_query - First observed
nds_query_decay_feedings - First observed
nds_query_gammas - First observed
nds_query_levels - First observed
nds_schema - First observed
nds_search - First observed
nds_search_exfor
TDQS
Most tools have clearly distinct purposes, targeting specific databases and data types. A few pairs, like nds_get_decay vs nds_query_decay_feedings and nds_get_mass vs nds_find_nuclide, could cause minor confusion, but the descriptions provide enough context to differentiate them.
Tool names consistently start with 'nds_' but mix verbs like get, query, list, search, find, and interpolate. There are also noun-style names such as nds_info and nds_catalog, so the pattern is not fully uniform, though still readable and descriptive.
With 26 tools, the server is on the heavy end, exceeding the typical 3-15 tool range. However, the broad scope covering multiple nuclear databases (NUBASE, AME, ENSDF, JENDL, EXFOR, CODATA) justifies a larger tool surface, making it borderline but not excessive.
The tool surface covers major nuclear data types: nuclide properties, masses, decay, levels, gammas, cross sections, EXFOR, and constants. Minor gaps exist, such as no direct access to raw ENDF-6 BLOB payloads and TUNL data only for A≤20, but these are workable limitations.
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
- busabaseOAuthcom.busabase
Database for your AI agent. Turn its output into data, docs, skills, and apps you can actually use.
Agent-native MCP server over 49M+ US public and government records, privacy-first, always current.
Machine-readable utilities and datasets for AI agents.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
31
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceLocal MCP server for indexing personal knowledge into SQLite with hybrid search, chunk-level citations, memory tools, and agent orchestration.4MIT
- AlicenseNot gradedqualityBmaintenanceA local-first MCP server for building and querying PDF knowledge bases. It indexes PDFs into DuckDB and exposes evidence-grounded retrieval tools to separate corpus-backed answers from independent reasoning.123MIT
- AlicenseNot gradedqualityCmaintenanceA pure SQLite structured long-term memory MCP server for AI agents, featuring adaptive Ebbinghaus forgetting curves, hierarchical memory tiers, trust feedback, and anomaly detection—all fully offline with deterministic scoring.MIT
- AlicenseNot gradedqualityDmaintenanceMCP tool server providing SQLite database access for AI agents.MIT
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/fkguo/nds-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server