Skip to main content
Glama

serpent2-mcp — MCP-сервер для Serpent 2

MCP-сервер (Model Context Protocol) для нейтронно-физических расчётов в Serpent 2. Даёт ИИ-ассистенту (OpenCode, Claude Desktop, Cursor и др.) три возможности:

  1. Знать язык Serpent — конспект, точный синтаксис всех карт и set-опций из официальной документации, готовые примеры.

  2. Проверять и запускать расчёты — статический линтер (3 уровня, включая sss2 --noplot --norun), фоновые задачи, логи, остановка.

  3. Разбирать результаты_res.m / _det.m / _dep.m в JSON, читаемые сводки и графики PNG.

Сервер не содержит кода Serpent (он проприетарный): нужен ваш собственный бинарник sss2 — локальный или доступный по SSH.

Требования: Python ≥ 3.10, MCP-клиент (OpenCode), интернет один раз для кэша документации; для расчётов — установленный Serpent 2 с библиотеками данных.


Быстрый старт

1. Установка

cd /путь/к/Serpent2-mcp
./setup.sh              # создаёт .venv и ставит зависимости (+ matplotlib)
# ./setup.sh --no-plots  # без графиков (меньше зависимостей)
# ./setup.sh --status    # проверить, что установлено

Альтернатива — pipx install .; тогда в конфиге OpenCode команда будет ["serpent2-mcp"] вместо пути к python из .venv.

2. Подключение к OpenCode

Добавьте в opencode.json проекта или в глобальный ~/.config/opencode/opencode.json (можно взять готовый opencode.example.json и поправить путь):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "serpent": {
      "type": "local",
      "command": ["/полный/путь/Serpent2-mcp/.venv/bin/python", "-m", "serpent2_mcp"]
    }
  }
}

После изменения конфига перезапустите OpenCode.

3. Проверка

Спросите ассистента: «вызови serpent_get_environment» — он покажет найденный sss2, версию, стиль CLI и пути к данным. Или из терминала:

.venv/bin/python -m serpent2_mcp --status

При первом запуске сервер в фоне скачивает кэш документации (~1 минута); до завершения работают serpent_get_card (встроенный индекс) и serpent_get_reference, а полнотекстовый поиск сообщит об ожидании.

4. Бинарник Serpent и данные

По умолчанию сервер ищет:

  • sss2 — в рабочей папке OpenCode (на глубину 3), затем в PATH;

  • данные — *.xsdata, *.dec, *.nfy рядом с рабочей папкой (глубина 3).

Если Serpent лежит в другом месте, добавьте в блок environment:

"environment": {
  "SERPENT_EXE": "/mnt/Serpent2/sss2",
  "SERPENT_DATA_DIR": "/mnt/Serpent2/xsdata"
}

На macOS без Serpent доступны все «знаниевые» инструменты, статическая валидация и скачивание данных; расчёты можно запускать на Linux по SSH.


Related MCP server: OpenKer Modeler MCP Server

Установка на другой ПК (Linux)

С интернетом на целевой машине

Скопируйте репозиторий (git clone, rsync -a, scp -r или архивом), поставьте Python и запустите установщик:

# Debian/Ubuntu:
sudo apt install python3 python3-venv
# Fedora/RHEL:
# sudo dnf install python3 python3-pip

tar -xzf Serpent2-mcp.tar.gz        # если переносили архивом
cd Serpent2-mcp
./setup.sh                          # или ./setup.sh --no-plots
./setup.sh --status                 # python, venv, версия пакета

setup.sh использует только POSIX sh, работает на macOS и Linux, не требует root и не трогает систему: всё ставится в локальный .venv внутри папки.

Полностью офлайн

На машине с интернетом и той же ОС/архитектурой (например, тоже Linux x86_64) соберите бандл «проект + все wheel-пакеты»:

cd Serpent2-mcp
./tools/make_offline_bundle.sh                    # → dist-offline.tar.gz
# INCLUDE_PLOTS=0 ./tools/make_offline_bundle.sh  # без matplotlib

scp dist-offline.tar.gz user@target:

На целевой машине:

tar -xzf dist-offline.tar.gz
cd Serpent2-mcp
./setup.sh --offline --wheelhouse ../wheelhouse
# добавьте --no-plots, если бандл собран без matplotlib

pydantic-core и matplotlib содержат платформенные бинарники, поэтому wheelhouse собирается под ту же ОС/архитектуру. Офлайн-установка ставится из wheel-файлов: для обновления распакуйте новый бандл и повторите команду.

Без установки на Linux вообще

Если OpenCode работает на macOS, а Serpent — на Linux-сервере, ставить сервер на Linux не нужно: включите SSH-бэкенд (см. ниже), MCP-процесс останется на Mac, а sss2 будет запускаться на удалённой машине.

Конфиг на Linux-машине

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "serpent": {
      "type": "local",
      "command": ["/home/USER/Serpent2-mcp/.venv/bin/python", "-m", "serpent2_mcp"],
      "environment": {
        "SERPENT_EXE": "/mnt/Serpent2/sss2",
        "SERPENT_DATA_DIR": "/mnt/Serpent2/xsdata"
      }
    }
  }
}

Skill (SKILL.md) при работе в папке репозитория подхватывается автоматически; для других проектов скопируйте skills/serpent2/ в ~/.config/opencode/skill/serpent2/.


Конфигурация

Все параметры опциональны. Порядок применения: значения по умолчанию → файл serpent2-mcp.toml (в проекте или ~/.config/serpent2-mcp/config.toml) → переменные окружения SERPENT_*. Шаблон — serpent2-mcp.example.toml. Файлы opencode.json и serpent2-mcp.toml добавлены в .gitignore, так как обычно содержат машинозависимые абсолютные пути.

Переменная

Назначение

SERPENT_EXE

путь к sss2 (или имя команды)

SERPENT_DATA_DIR

каталоги с данными (через :/;)

SERPENT_ACELIB, SERPENT_DECLIB, SERPENT_NFYLIB

явные файлы данных

SERPENT_BACKEND

local (по умолчанию) или ssh

SERPENT_SSH_HOST

user@host для удалённых запусков

SERPENT_SSH_WORKDIR

рабочий каталог на удалённой машине

SERPENT_SSH_JOBDIR

каталог задач на удалённой машине (по умолч. ~/.serpent2-mcp/jobs)

SERPENT_SSH_OPTS

доп. опции ssh, например -o BatchMode=yes

SERPENT_OMP

число OpenMP-потоков по умолчанию

SERPENT_MPI_LAUNCHER

шаблон запуска MPI, по умолч. mpirun -np {n}

SERPENT_JOB_TIMEOUT

убить задачу через N секунд (0 = никогда)

SERPENT_EXTRA_ROOTS

дополнительные разрешённые каталоги

SERPENT_ALLOW_OUTSIDE

1 — разрешить запуск файлов вне рабочей папки

SERPENT_DOCS_AUTO_SYNC

0 — не обновлять документацию автоматически

SERPENT_LANG

язык сводок/подписей графиков: ru или en

Запуск на Linux по SSH (с macOS)

"environment": {
  "SERPENT_BACKEND": "ssh",
  "SERPENT_SSH_HOST": "user@server",
  "SERPENT_SSH_WORKDIR": "/home/user/serpent/runs"
}

Сервер создаст каталог задачи на удалённой машине, загрузит run.sh, запустит sss2 через nohup, читает лог, умеет останавливать задачу. Входной файл должен существовать по тому же пути на удалённой машине (общий каталог, rsync или NFS). Уровень 3 валидации (sss2 --norun) для SSH-бэкенда недоступен — используйте его на самом хосте.


Инструменты

Инструмент

Что делает

serpent_get_environment

находит sss2, версию, стиль CLI (-/--), данные, статус кэша доков

serpent_get_reference

конспект Serpent (тема: geometry, burnup, sources, versions, …)

serpent_search_docs

полнотекстовый поиск по официальной документации

serpent_get_card

точный синтаксис карты/опции (surf, set acelib, sb, …)

serpent_list_cards

список всех карт и set-опций

serpent_get_examples

встроенные примеры (pin cell, защита, burnup, групповые константы)

serpent_validate_input

статические проверки + sss2 --noplot --norun (уровень 3)

serpent_run

фоновый запуск, возвращает job_id

serpent_job_status

статус задачи, прогресс и хвост лога (без id — список задач)

serpent_job_output

больше лога

serpent_job_kill

остановить задачу

serpent_get_results

сводка _res.m/_det.m/_dep.m в JSON

serpent_plot_results

PNG: спектры детекторов, k-eff, burnup, произвольные переменные

serpent_list_data_libraries

каталог библиотек VTT (ENDF/B-VII.1, JEFF-3.2, JENDL-4.0, FENDL-3.0, …)

serpent_download_data_library

фоновая докачка библиотеки с resume и распаковкой

serpent_sync_docs

обновить/пересобрать кэш документации

Типовой цикл: get_cardvalidate_inputrunjob_statusget_resultsplot_results. Все расчёты фоновые и не блокируют чат.


Ядерные данные

Инструмент serpent_download_data_library качает данные с официального репозитория VTT https://serpent.vtt.fi/repository/. Каталог (serpent_list_data_libraries) знает основные библиотеки и принимает понятные псевдонимы: JEFF, JEFF-3.2, ENDF/B-VII.1, JENDL, JENDL-4.0, FENDL, thermal, photon, edep и т.д.

Ключ

Что это

Размер

endfb71

ENDF/B-VII.1 (0…1800 K), каталог data.xsdata

6.63 ГБ

jeff32

JEFF-3.2

7.34 ГБ

jendl40

JENDL-4.0

6.16 ГБ

fendl30

FENDL-3.0 rev.4 (термояд)

7.20 ГБ

endfb71_edep

спец. библиотека для energy deposition

3.77 ГБ

thxs

библиотеки теплового рассеяния S(α,β)

91 МБ

sss_endfb7.dec, sss_endfb7.nfy

данные распада и выходы деления

35 МБ / 7 МБ

photon_data, mcplib84

фотонные данные

7.7 МБ / 15 КБ

jeff40.xsdata, endfb81.xsdata, jendl5.xsdata, fendl32c.xsdata

исправленные directory-файлы для новых оценок

< 1 МБ

Куда кладётся:

  • по умолчанию — в первый каталог из SERPENT_DATA_DIR, иначе в ./data рядом с рабочей папкой;

  • .tar.gz распаковывается прямо в этот каталог, поэтому рядом появляются data.xsdata, *.dec, *.nfy — их и указывайте в set acelib / set declib / set nfylib;

  • загрузка идёт в фоне: serpent_job_status(job_id) показывает progress (байты/всего) и хвост лога; докачка после обрыва поддерживается (.part + Range);

  • данные скачиваются на машине, где запущен MCP-сервер; для удалённых расчётов их нужно получить на целевом хосте.

Библиотеки JEFF-4.0, ENDF/B-VIII.1, JENDL-5 и FENDL-3.2c (сами ACE-данные) распространяются не VTT, а OECD/NEA, NNDC, JAEA и IAEA; в каталоге для них есть только исправленные directory-файлы.


Документация и версии

  • Кэш документации: ~/.cache/serpent2-mcp/docs/serpent2.sqlite3 (477 разделов, 56 страниц, 229 карт; автосинк раз в 30 дней, принудительно — serpent_sync_docs(force=true)).

  • Офлайн всегда работают serpent_get_card, serpent_list_cards, serpent_get_reference, serpent_get_examples — на встроенном индексе cards_static.json и рукописном primer.md.

  • Целевая версия — актуальная документация (0.21.0 / Serpent 2.2.5). serpent_get_environment предупреждает о beta/старых версиях, стиль CLI (--norun или -norun) подбирается автоматически; различия версий смотрите в serpent_get_reference("versions").

Skill и AGENTS.md

  • .opencode/skill/serpent2/SKILL.md — при работе в этом репозитории OpenCode подхватывает skill сам; для других проектов скопируйте в ~/.config/opencode/skill/serpent2/.

  • AGENTS.example.md — правила для AGENTS.md проекта, обязывающие ассистента пользоваться serpent_* инструментами.

Обновление

# онлайн-установка (editable):
cd Serpent2-mcp && git pull && ./setup.sh     # зависимости обновятся при необходимости

# офлайн-установка:
# повторить сборку бандла и `./setup.sh --offline --wheelhouse ../wheelhouse`

Разработка и тесты

./setup.sh --dev
.venv/bin/python -m pytest tests -q     # 36 тестов, Serpent не требуется
.venv/bin/python tools/gen_cards.py     # пересобрать индекс карт из docs

Индекс cards_static.json содержит только факты (имена карт и параметров, синтаксис, ссылки) — без текстов документации VTT, поэтому его можно публиковать. Полные описания подтягиваются из локального кэша после первого синка. Для локального использования описания можно вернуть в индекс:

.venv/bin/python tools/gen_cards.py --max-notes 800   # не публиковать этот файл

Тесты используют «фейковый sss2»: эмулируют успешный/неуспешный запуск, SSH-бэкенд и докачку по локальному HTTP-серверу.

Возможные проблемы

Симптом

Решение

sss2 not found

положите ./sss2 в рабочую папку, добавьте в PATH или задайте SERPENT_EXE

path ... outside the allowed roots

укажите SERPENT_EXTRA_ROOTS или SERPENT_ALLOW_OUTSIDE=1

Сервер не появился в OpenCode

проверьте JSON конфига, перезапустите OpenCode, ./setup.sh --status

matplotlib is not installed

./setup.sh (с графиками) — или используйте сервер без plot_results

Поиск по докам пуст

первый синк ещё идёт: serpent_sync_docs или подождите минуту

Level 3 не запускается

нет sss2 (SSH-бэкенд) — используйте уровень 2 на хосте с Serpent

Старый Serpent не знает флаг

сервер сам подбирает -/-- по выводу sss2; проверьте serpent_get_environment

Лицензия

Код сервера, тесты, skill и скрипты — MIT (см. LICENSE). Лицензия не распространяется на Serpent 2 (проприетарное ПО VTT, сервер его не содержит и не распространяет) и на документацию VTT, которая скачивается в локальный кэш; cards_static.json в репозитории содержит только фактические данные (имена, параметры, синтаксис) без текстов документации.

Ограничения

  • Docker-бэкенд зарезервирован, но не реализован (планируется docker exec в контейнер с вашим sss2).

  • Уровень 3 валидации (sss2 --norun) недоступен через SSH-бэкенд.

  • Кэш документации — © VTT; в репозиторий не коммитится, собирается локально. cards_static.json в коммите содержит только фактические данные (имена, параметры, синтаксис). Serpent — проприетарное ПО с экспортными ограничениями; сервер лишь управляет вашей установкой.

Available Tools

16 tools
download_data_libraryA

Start a background download of a Serpent data library into a local directory (resumable, extracts tar.gz; multi-GB transfers report progress via job_status). The download runs on THIS machine (the one hosting the MCP server). Use name from list_data_libraries, or an explicit url.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
destNo
nameNo
extractNo
filenameNo
force_reextractNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that it's a background, resumable download, extracts tar.gz files, reports multi-GB transfer progress via job_status, and runs on the machine hosting the MCP server. These are critical behavioral traits. It omits permission or storage requirements but covers the key operational details.

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

Conciseness5/5

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

Two tightly packed sentences, front-loaded with the core action and constraints. No filler, highly efficient.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. However, with six parameters at 0% schema coverage, the description omits crucial details for dest, extract, filename, and force_reextract. It covers the high-level behavior and name/url parameters well but is incomplete for safe, correct invocation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explicitly explains the name and url parameters and clarifies how to obtain the name. It does not address dest, extract, filename, or force_reextract, leaving half the parameters undocumented. Baseline of 3 is appropriate for partial parameter guidance.

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

Purpose5/5

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

States a specific verb (download) and resource (Serpent data library) with explicit scope. It distinguishes itself from the sibling list_data_libraries by noting that the name parameter should come from that list.

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

Usage Guidelines4/5

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

Clear context: use name from list_data_libraries or an explicit url. Does not state when NOT to use it or mention alternatives for verification, but provides sufficient routing guidance for this download tool.

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

get_cardA

Get the exact syntax, parameter list, notes and documentation link for a Serpent input card or set option. Examples: 'surf', 'mat', 'src', 'set acelib', 'acelib', 'sb'.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It is transparent about the return payload (syntax, params, notes, doc link) and the operation is clearly a read-only documentation lookup, so risk is low. It says nothing about case sensitivity of the name, error behavior for unknown cards, or any auth/rate constraints.

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

Conciseness5/5

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

Two sentences, zero waste, with the capability statement front-loaded and the examples placed second to clarify accepted inputs. Nothing is padded.

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

Completeness4/5

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

An output schema exists, so return values need not be detailed, and the one required parameter is illustrated with examples. For a simple single-argument lookup the description is nearly sufficient; only the exact name-format rules are missing.

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

Parameters3/5

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

Schema description coverage is 0% for the single 'name' parameter, so the description must compensate. It partially does by supplying concrete example values including a multi-word form ('set acelib'), which hints at the accepted input format. It still does not state whether the 'set ' prefix is required, whether names are case-sensitive, or how aliases resolve.

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

Purpose4/5

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

States a specific verb (Get) and enumerates exactly what is returned: exact syntax, parameter list, notes and documentation link, for a Serpent input card or set option. The examples ('surf', 'mat', 'set acelib') make the resource concrete. It does not explicitly contrast itself with the sibling list_cards, so it stops short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the examples — an agent infers this is the lookup tool for a single known card or option name. There is no explicit statement of when to use this versus list_cards, get_reference or search_docs, and no exclusions or prerequisites are given.

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

get_environmentA

Show detected Serpent executable, version, CLI flag style, data libraries, server configuration and documentation cache status. Call this first on a new machine or when a run fails with 'sss2 not found'.

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses what is detected and returned, which implies a read-only diagnostic, but it does not explicitly state whether the operation has side effects, whether the optional refresh changes cache state, or what permissions are needed.

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

Conciseness5/5

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

Two sentences with no filler; the scoping statement is front-loaded and the usage condition follows directly. Every sentence earns its place.

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

Completeness4/5

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

An output schema exists, so the description need not explain return values, and it already lists the main environment details. It gives clear usage context. The only notable omission is the meaning of the optional refresh parameter, which is minor for this diagnostic tool.

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

Parameters2/5

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

The schema has one parameter (refresh) with 0% description coverage, and the description does not mention refresh at all. It therefore adds no meaning beyond the schema for the only input, which is a clear gap.

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

Purpose5/5

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

The description uses a specific verb ('Show') and enumerates the exact environment details returned: Serpent executable, version, CLI flag style, data libraries, server configuration, and documentation cache status. This distinguishes it from siblings like list_data_libraries or search_docs, which serve narrower purposes.

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

Usage Guidelines4/5

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

It explicitly states when to call it: 'Call this first on a new machine or when a run fails with ‘sss2 not found’.' This gives clear triggering conditions, but does not name alternatives or state when not to use it.

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

get_examplesA

List bundled Serpent input examples (pin cell, shielding, burnup, group constants, minimal sphere). With topic, return the best matching example content.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the important behavioral trait that the tool operates in two modes: a listing mode with no argument and a 'best match' retrieval mode with a topic. It does not describe permissions, ambiguity handling when no example matches well, or anything about result size, so the disclosure is partial.

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

Conciseness5/5

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

Two sentences, no filler, with the enumeration and the conditional behavior front-loaded. Every clause earns its place.

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

Completeness4/5

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

For a simple one-optional-parameter tool with an output schema already defining return shape, the description covers both invocation modes adequately. Only the topic-matching semantics remain underspecified.

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

Parameters4/5

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

Schema coverage is 0% and the single 'topic' parameter is undocumented in the schema, but the description compensates by explaining its effect: supplying a topic changes the output from a list to the best-matching example content. This is meaningful added semantics, though it omits matching behavior (fuzzy? exact?) and the null default's meaning.

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

Purpose4/5

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

States a specific verb and resource ('List bundled Serpent input examples') and enumerates the concrete example categories (pin cell, shielding, burnup, group constants, minimal sphere), so the agent knows exactly what comes back. It does not explicitly contrast itself with siblings like get_reference or search_docs, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description implies usage through its dual-mode sentence ('With topic, return the best matching example content'), but it never states when to prefer this tool over get_reference, search_docs, or get_card, nor any exclusion. Usage is inferable rather than guided.

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

get_referenceA

Return the curated Serpent 2 quick reference (modes, geometry, materials, sources, detectors, burnup, group constants, CLI options, output files, pitfalls). Optionally request one topic (e.g. 'geometry', 'burnup', 'source', 'versions').

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It does convey that this is a static curated read-only reference and lists its breadth, but it does not say what happens for an unrecognized topic (error vs. full reference), nor whether the result is cached or static. Adequate but incomplete for an unannotated tool.

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

Conciseness4/5

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

Two sentences, front-loaded with the purpose and followed by the parameter guidance. The long parenthetical topic enumeration is dense but each item adds real scope information, so there is little waste.

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

Completeness4/5

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

An output schema exists, so return-value format need not be described, and the tool is simple with one optional parameter. Between the enumerated coverage and the parameter examples, an agent has enough to call it correctly; only the invalid-topic behavior is left open.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does: it names the single parameter, marks it optional, and supplies four concrete example values. It falls short of an authoritative topic list ('e.g.' implies open-ended), and 'versions' appears in the examples but not in the enumerated content list, a minor inconsistency.

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

Purpose4/5

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

States a specific verb and resource ('Return the curated Serpent 2 quick reference') and enumerates the exact subject areas covered, which makes the scope unambiguous. The word 'curated' implicitly separates it from search_docs/get_card, but it never names a sibling to make the boundary explicit.

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

Usage Guidelines3/5

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

The second sentence explains how to use the optional parameter ('Optionally request one topic'), which is implied usage guidance. It says nothing about when to prefer this reference over search_docs, get_card, or get_examples when an agent needs Serpent 2 knowledge, and no exclusions or prerequisites are given.

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

get_resultsB

Read and summarise Serpent output files. Defaults to the newest _res.m in the workdir; returns k-eff estimates, run parameters, integral rates and optionally detector/depletion summaries. Use variables=[...] to extract specific _res.m variables.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNo
inputNo
workdirNo
max_rowsNo
sectionsNo
variablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions default file selection and optional summaries, but does not disclose error handling if no _res.m exists, permission requirements, whether reading is destructive, or the format of returned data. Crucial behavioral traits remain undocumented for a tool claiming to 'read' files.

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

Conciseness4/5

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

The description is two sentences, front-loading the main action and default behavior, then quickly covering return values and a parameter tip. It is efficient with no wasted words, though it could be slightly more structured with bullet points for return values.

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

Completeness3/5

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

An output schema exists, so return values need not be fully detailed, but the description must cover parameter usage and behavioral aspects. With 6 parameters at 0% schema coverage and no annotations, the description is incomplete: it omits guidance on 5 parameters and fails to describe error conditions or output format. The existing output schema mitigates some need, but the overall definition leaves an agent guessing about key invocation details.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only partially compensates by explaining the 'variables' parameter ('Use variables=[...] to extract specific _res.m variables') and implying 'file' or 'workdir' via defaults. Five other parameters (file, input, workdir, max_rows, sections) receive no explanation, leaving significant gaps for an agent to interpret their purpose.

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

Purpose4/5

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

The description states a specific verb and resource: 'Read and summarise Serpent output files', naming the exact file type (_res.m) and the specific outputs returned (k-eff, run parameters, integral rates). It distinguishes itself from sibling tools like plot_results and job_output by focusing on Serpent result extraction, though it could more explicitly contrast with plot_results.

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

Usage Guidelines3/5

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

Usage is implied through default behavior ('Defaults to the newest _res.m') and a specific scenario for variables extraction, but no explicit when-to-use versus alternatives (e.g., plot_results or job_output) is provided. An agent must infer that this is for programmatic result reading rather than visualization.

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

job_killA

Terminate a running background job (SIGTERM, then SIGKILL for local jobs).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. Disclosing SIGTERM then SIGKILL for local jobs is genuinely useful behavioral context, but there is no mention of permissions, remote-job behavior, whether the operation is idempotent, or what the true final state is.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler that earns every clause by including the signal escalation detail.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description covers the core destructive behavior and signal sequence. It stops short of permissions, idempotency, and remote-job handling, leaving minor gaps.

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

Parameters2/5

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

Schema description coverage is 0% for the single job_id parameter, so the description must compensate, and it does not say what a job ID looks like, where to obtain one, or what format it takes. Baseline 4 is overridden by the documented coverage gap.

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

Purpose5/5

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

The description states a specific verb ('Terminate') and resource ('running background job'), and gives the signal sequence, making it clearly distinguishable from read-only siblings like job_status or job_output.

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

Usage Guidelines3/5

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

Usage is implied by the name and 'running background job' scoping, but there is no explicit when-to-use guidance or mention of alternatives (e.g., job_status for inspection before killing).

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

job_outputB

Read more log output from a background job (tail of the run log).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
tail_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioural burden. It mentions 'tail of the run log' which hints at the tail_chars default behavior, but does not disclose whether this is a safe read-only operation, whether partial output indicates job completion, or any other behavioral traits.

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

Conciseness5/5

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

A single, tight sentence that front-loads the action and scope. No wasted words.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. However, with no annotations and 0% schema coverage, an agent still lacks clear guidance on permissions, whether the operation is read-only, and parameter details. Adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the description should compensate. It implies tail behavior ('tail of the run log') which gives some meaning to the tail_chars parameter, but job_id is entirely undocumented and no format or range details for tail_chars are given. Marginal value added, but does not fully compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb ('Read') and resource ('log output from a background job'), and clarifies the scope with 'tail of the run log'. This is distinct from job_status and job_kill among siblings, though it doesn't explicitly name those alternatives.

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

Usage Guidelines3/5

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

The phrase 'Read more log output' implies this is a follow-up for fetching incremental output, and 'background job' implies it applies only to asynchronous runs. However, no explicit when-to-use vs job_status or job_kill guidance is provided.

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

job_statusA

Check background job state (running/finished/failed/lost), exit code, progress and recent log output. Without job_id, list the most recent jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
job_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, but an output schema exists, so the enumeration of returned fields (state, exit code, progress, log output) is largely redundant with structured data. The description does not state read-only semantics, whether calls block or poll, or how an unknown/expired job_id is handled, leaving the main behavioral burden unmet.

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

Conciseness5/5

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

Two tight sentences with the core capability front-loaded and the mode-switching condition second; no filler, no restatement of the tool name.

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

Completeness4/5

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

For a 2-parameter, zero-required, read-only-style tool with an output schema, the description covers modes, states, and what is returned. The only real omission is the meaning/default of 'tail' and any indication of error handling for invalid job IDs.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It explains job_id well (absent means list mode instead of detail mode), but 'tail' is never mentioned — its role as the log-line count is only weakly implied by 'recent log output,' leaving one of two parameters effectively undocumented.

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

Purpose4/5

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

The description names a specific verb ('Check') and resource ('background job state') and enumerates the possible states (running/finished/failed/lost), which helps an agent distinguish it from siblings like job_kill or job_output. It also discloses the dual behavior (state lookup vs. listing when job_id is absent), though it never names the sibling tools it is not.

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

Usage Guidelines4/5

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

It gives an explicit conditional: 'Without job_id, list the most recent jobs,' which tells the agent how to trigger the listing mode. It does not name alternatives (e.g., job_output for full logs, job_kill to terminate), so the agent must infer when to prefer those tools.

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

list_cardsA

List all known Serpent input cards and set options, optionally filtered by kind (card|set|all). Useful for discovery when the exact name is unknown.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden, and it does disclose the filtering behavior and the discovery intent. However it says nothing about scope limits, pagination, or whether set options and cards are returned in the same shape. For a read-only listing tool this is adequate but thin.

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

Conciseness5/5

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

Two sentences, no filler, with the listing scope front-loaded and the usage caveat second. Every clause carries information.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and the description covers scope and filtering. It is nearly complete for a simple list tool, missing only clarification of what the enum values mean in practice.

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

Parameters4/5

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

Schema coverage is 0% and the single 'kind' parameter has only a default of 'all' documented. The description compensates by spelling out the accepted values (card|set|all), which is the key semantic the schema omits. The only gap is that it doesn't say what 'set' vs 'card' actually selects.

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

Purpose4/5

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

States a specific verb and resource ('List all known Serpent input cards and set options') and names the optional filter. The discovery framing implicitly distinguishes it from the single-item sibling get_card, though it never names that sibling explicitly.

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

Usage Guidelines4/5

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

Gives a clear when-to-use condition ('Useful for discovery when the exact name is unknown'), which is exactly the situation that routes an agent here over get_card or search_docs. It stops short of naming the alternatives or stating when not to use it.

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

list_data_librariesA

List the official VTT Serpent nuclear data libraries that can be downloaded (ENDF/B-VII.1, JEFF-3.2, JENDL-4.0, FENDL-3.0, decay/fission-yield/photon data). Each entry has key, title, size, URL and file name.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations, so description must carry full burden. It discloses that entries include key, title, size, URL, and file name, which tells the agent what it gets. However, no info on filtering, pagination, or return format beyond that. Output schema exists, so return format is partly covered.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the core action and scope. Every word earns its place.

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

Completeness5/5

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

For a zero-param list tool with an existing output schema, the description is complete: it states what is listed and what each entry contains, which is sufficient for correct invocation.

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

Parameters4/5

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

No parameters, so baseline 4. The description correctly implies no input is required and provides context about what the output contains.

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

Purpose5/5

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

Specific verb+resource: 'List the official VTT Serpent nuclear data libraries that can be downloaded'. It enumerates examples and names the sibling (download_data_library) implicitly by contrasting available vs downloadable libraries.

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

Usage Guidelines4/5

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

Clear context – this tool surfaces libraries that can be downloaded, while download_data_library performs the download. No explicit when-not-to-use or exclusions, but the purpose is unambiguous.

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

plot_resultsA

Draw a PNG plot from Serpent output. kind: detector (needs name), keff (k-eff per step), burnup (BU vs DAYS from _dep.m), variables (needs x and y variable names). Returns the path of the written image.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
fileNo
kindYes
langNo
nameNo
inputNo
outputNo
workdirNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the key side effect ('Returns the path of the written image'), which tells the agent a filesystem write occurs, but it says nothing about where the file lands, whether it overwrites an existing output, permissions, or whether the source data must already exist from a prior run.

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

Conciseness5/5

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

Two dense sentences with zero filler: the purpose leads, then the per-kind requirements, then the return value. Every clause carries information an agent needs before calling.

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

Completeness3/5

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

An output schema exists, so the return-path sentence is arguably redundant, and the description need not restate return structure. But for a 9-parameter, annotation-free tool with 0% schema coverage, more than half the parameters remain semantically opaque, leaving the agent under-informed for a write-side-effect operation.

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

Parameters3/5

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

Schema coverage is 0% across 9 parameters, so the description must compensate. It explains the required 'kind' values and the conditional dependencies ('detector needs name', 'variables needs x and y'), which is meaningful semantic content, but leaves file, input, output, workdir, and lang entirely undefined.

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

Purpose4/5

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

States a specific verb and resource ('Draw a PNG plot from Serpent output') that clearly separates it from the sibling set (run, get_results, job_output, etc.), which contains no plotting tool. It stops short of explicitly naming an alternative it might be confused with, but the action is unambiguous.

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

Usage Guidelines3/5

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

The kind enumeration functions as de facto usage guidance: it tells the agent which kind to pick (detector, keff, burnup, variables) and the conditional prerequisites for two of them. However, there is no guidance on when to reach for plot_results versus the sibling get_results or job_output, nor any prerequisite/ordering context.

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

runB

Start a Serpent calculation as a background job and return its job id (long runs must not block). By default the input is statically validated first; pass force=true to skip. options: extra CLI flags, e.g. ['--noplot']. omp/mpi_tasks are convenience shortcuts.

ParametersJSON Schema
NameRequiredDescriptionDefault
ompNo
forceNo
inputYes
backendNo
optionsNo
workdirNo
mpi_tasksNo
validate_firstNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full behavioral burden. It does disclose the async/background nature, that the job id is returned, that validation runs by default, and that force=true bypasses it. It says nothing about error/failure behavior, whether jobs are cancellable or resource-limited, backend selection implications, or permissions, leaving substantial behavioral gaps for a mutation/launch tool.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the action and return value, with the validation/force note before the trailing parameter hints. Efficient, though the terse 'options: extra CLI flags' fragment and the missing mention of validate_first cost some clarity.

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

Completeness3/5

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

An output schema exists, so the job-id return need not be explained in depth, and the description correctly covers validation and flag convenience. But for an 8-parameter launcher with zero schema coverage and no annotations, omitting backend, workdir, and validate_first leaves an agent without enough to invoke it confidently in non-default configurations.

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

Parameters3/5

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

Schema description coverage is 0% across 8 parameters, so the description must compensate. It explains force ('skip validation'), options (CLI flags, e.g. ['--noplot']), and characterizes omp/mpi_tasks as 'convenience shortcuts,' which is genuine added meaning. But backend, workdir, and validate_first are entirely undocumented, and the relationship between force and validate_first is left ambiguous.

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

Purpose4/5

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

The description gives a specific verb and resource: 'Start a Serpent calculation as a background job and return its job id.' This clearly separates it from the job-management siblings (job_status, job_output, job_kill) without naming them. It stops short of an explicit contrast with validate_input or get_results, so a 4 rather than a 5.

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

Usage Guidelines3/5

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

It conveys the triggering context ('long runs must not block') and the validation default, which implies this is the launcher for non-blocking runs. However, it never states when to prefer validate_input first, when to use job_status to follow up, or what happens if validation fails, so usage is only implied.

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

search_docsA

Full-text search across the indexed official Serpent documentation (syntax manual, user guide, appendices, wiki). kind: all|card|guide|extra|wiki. Returns matching sections with source links.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoall
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It usefully discloses the return shape ('matching sections with source links') and that the corpus is an index (hinting at the sync_docs dependency), but says nothing about pagination/limit behavior, result ranking, index staleness, or that the operation is read-only.

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

Conciseness5/5

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

Three compact sentences, front-loaded with purpose and scope, then the enum values, then the return shape. No filler or repetition.

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

Completeness4/5

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

An output schema exists, so return values need not be spelled out. The critical enum ambiguity in the schema is resolved by the description, and purpose is clear; the only residual gap is the undocumented 'limit' parameter and the absence of any read-only/side-effect statement.

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

Parameters4/5

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

Schema description coverage is 0% and the schema leaves 'kind' as a bare string with no enum, so the description's enumeration 'all|card|guide|extra|wiki' adds real meaning the schema does not provide. It also clarifies that 'query' is a full-text query; only 'limit' remains undocumented by both schema and description.

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

Purpose5/5

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

States a specific verb (full-text search) and resource (indexed official Serpent documentation), and enumerates the covered corpora (syntax manual, user guide, appendices, wiki). An agent can distinguish it from retrieval siblings like get_reference, get_card, get_examples, and from the index-management tool sync_docs.

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

Usage Guidelines3/5

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

Usage is only implied: the phrase 'indexed official Serpent documentation' suggests this is the tool for fuzzy lookup across all docs, versus the more targeted get_* siblings. There is no explicit when-to-use statement, no when-not, and no named alternative for cases like fetching a known reference or example.

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

sync_docsB

Trigger or refresh the download/index of the official Serpent documentation cache (runs in the background). Returns current sync status.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full load. It usefully discloses that the sync runs in the background (non-blocking) and returns sync status, which is genuine behavioral context. It omits idempotency, whether re-running is safe, permission/auth requirements, and potential rate limits on the upstream docs source.

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

Conciseness4/5

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

Two short sentences, action first, with no filler. Slightly redundant to state 'Returns current sync status' when an output schema already exists, but the structure is front-loaded and efficient.

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

Completeness3/5

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

An output schema exists, so return values need not be spelled out. However, the undocumented force parameter and the absence of any guidance on when this lengthy background sync should be triggered leave the definition minimally adequate for an agent to call it competently.

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

Parameters2/5

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

There is a single 'force' boolean with 0% schema description coverage, and the description never mentions it. The 'trigger or refresh' wording hints faintly at a first-run vs re-run distinction but gives no rule for when force=true is needed, so the parameter's semantics remain unexplained.

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

Purpose4/5

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

Clear specific verb+resource: triggering/refreshing the Serpent documentation cache. An agent can distinguish it from read-only siblings like search_docs or get_reference. It does not, however, explicitly name those siblings or when to prefer this over them.

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

Usage Guidelines2/5

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

The phrase 'trigger or refresh' implies use when the cache is missing or stale, but there is no explicit when-to-use, no mention of when not to call it, and no routing to alternatives like search_docs. It also never explains when the force parameter should be set.

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

validate_inputA

Statically validate a Serpent input file (and its includes): known cards/options, duplicate names, undefined surface/material/cell/universe references, material unit mixing, source/neutron-mode consistency and more. level=3 (or run_norun=true) also runs sss2 -noplot -norun when the executable is available and parses its exact input errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
inputNo
levelNo
run_norunNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses that the deeper mode invokes an external process (`sss2 -noplot -norun`) and that this only happens 'when the executable is available', which is real environmental/behavioral context. It does not state that validation is non-mutating or how long the external run may take, but the key conditional behavior is surfaced.

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

Conciseness4/5

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

Two dense but front-loaded sentences: the core validation purpose and its checks come first, with the optional deep mode second. No filler, though the first sentence packs a long enumeration that could be trimmed slightly.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the check inventory is thorough. The gap is the unexplained text/input parameter pair and the undefined intermediate levels, which an agent needs to choose arguments correctly for a 4-param tool.

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

Parameters2/5

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

Schema coverage is 0%, so the description must explain all four parameters. It partially covers level and run_norun, but the critical distinction between the `text` and `input` parameters (raw text vs. file path?) is left entirely unexplained, and the meaning of level values below 3 is absent.

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

Purpose5/5

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

States a specific verb and resource ('statically validate a Serpent input file') and enumerates the actual checks performed (known cards/options, duplicate names, undefined references, unit mixing, source/neutron-mode consistency). This clearly separates it from execution-oriented siblings like run and job_status, since it is explicitly static.

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

Usage Guidelines3/5

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

It gives a concrete condition for the deeper mode ('level=3 (or run_norun=true) also runs sss2...'), which is useful routing within the tool. However, it never says when to reach for validate_input rather than run or get_reference, nor what levels 1 and 2 mean, so the when-to-use guidance is only implied.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv0.1.0
    • First observeddownload_data_library
    • First observedget_card
    • First observedget_environment
    • First observedget_examples
    • First observedget_reference
    • First observedget_results
    • First observedjob_kill
    • First observedjob_output
    • First observedjob_status
    • First observedlist_cards
    • First observedlist_data_libraries
    • First observedplot_results
    • First observedrun
    • First observedsearch_docs
    • First observedsync_docs
    • First observedvalidate_input

TDQS

A3.6/5.0

Scored across 16 tools

Disambiguation4/5

The documentation cluster (get_reference, search_docs, get_card, list_cards, get_examples) has some conceptual proximity, but descriptions clearly differentiate curated reference vs full-text search vs single-card lookup vs discovery vs examples. The job family (job_kill, job_status, job_output) is cleanly separated by purpose, and run/get_results/plot_results target distinct lifecycle stages.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (get_environment, search_docs, validate_input, list_cards, get_results, plot_results, download_data_library). The job_* family is internally consistent but uses noun_verb ordering, and 'run' is a bare verb, which are minor deviations from the dominant convention.

Tool Count4/5

16 tools is reasonable for a complex simulation domain spanning environment detection, documentation, validation, execution, job management, results, plotting and data libraries. Each tool earns its place, though the count sits at the upper edge of comfortable scope.

Completeness4/5

The surface covers a full workflow: environment setup, doc lookup, input validation, running, job lifecycle, results extraction, plotting and data library management. A minor gap is the absence of a tool to author/write input files or clean up/delete old jobs, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides AI agents with physics-based corrosion engineering calculations, from rapid handbook lookups to mechanistic electrochemical models with dual-tier pitting assessment for material compatibility screening and corrosion rate prediction.
    1
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI agents to traverse SysML v2 model graphs, query requirements, and perform impact analysis for model-based systems engineering. It allows agents to interact with plain-text models to automate documentation and refine system architectures.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to automate COMSOL Multiphysics simulations, including model management, geometry building, physics configuration, meshing, solving, and results visualization via the MCP protocol.
    MIT