Skip to main content
Glama

Project Bourne

project-bourne MCP server

Project Bourne은 재현 가능한 과학 및 엔지니어링 워크로드를 위한 오픈소스 실행 및 출처(provenance) 인프라입니다.

다음 질문에 답합니다: 이 과학적 결과는 정확히 어떻게 생겨났을까?

AI를 클러스터에서 멀리 유지하기

Researcher's workstation
  Linux / macOS
        │
  AI / Agent (optional)
        │ local stdio MCP
        ▼
  Bourne Control Plane
        │
        ├─ freezes immutable ExecutionPlan
        ├─ builds/stages versioned Bourne workers
        └─ uses existing VPN / OpenSSH
        ▼

HPC login / access node
  one-shot Bourne Remote Worker
        │
        ├─ validates the plan
        ├─ verifies staged file digests
        ├─ stages the execution bundle
        └─ submits with sbatch / qsub / bsub
        ▼

Slurm / PBS / IBM LSF
        │
        │ allocates resources
        ▼

Compute allocation
  execution-scoped Bourne Compute Worker
        │
        ├─ reads immutable ExecutionPlan
        ├─ observes actual allocation
        ├─ reproduces selected environment
        ├─ performs compute-side preflight
        ├─ executes exact scientific argv
        └─ writes durable result evidence
        ▼

Scientific workload

Later:

Researcher's workstation
        │
        │ existing SSH
        ▼
Remote Worker: reconcile
        │
        ├─ exact Bourne-owned scheduler job state
        └─ bounded result evidence
        ▼
Local Bourne provenance database

Remote Worker와 Compute Worker는 에이전트나 상주 서비스가 아닙니다. 둘 다 수명이 짧고 버전이 지정된 Bourne 워커입니다. Bourne은 계산 노드에 직접 SSH로 접속하지 않습니다. Slurm/PBS/LSF는 할당(allocation) 안에 Compute Worker를 배치하고, 제출을 수락한 후 작업 수명을 관리합니다. 연구자의 워크스테이션/컨트롤 플레인은 연결이 끊어졌다가 나중에 동일한 실행을 다시 조정(reconcile)할 수 있습니다.

HPC 경로에는 AI, MCP 서버, AI 자격 증명, 인바운드 포트, 루트 액세스, 상주 데몬 또는 클러스터의 공개 인터넷 액세스가 필요하지 않습니다. 연구자의 기존 OpenSSH 구성과 스케줄러 액세스를 사용합니다. 에이전트는 제한 없는 원격 셸이 아닌, 타입화된(typed) Bourne 연산을 받습니다.

Bourne 컨트롤 플레인은 Linux와 macOS에서 지원 및 테스트됩니다. 네이티브 Windows는 아직 검증되거나 지원되지 않습니다.

Bourne은 에이전트 네이티브(agent-native)이지 에이전트 의존적(agent-dependent)이 아닙니다. CLI와 Python 서비스는 에이전트나 MCP 없이도 작동합니다.

Related MCP server: LinkedRun

빠른 시작

사람

PyPI에서 Project Bourne v0.8.0을 설치합니다:

python -m pip install "bourneprov==0.8.0"

bourne run python examples/demo.py
bourne list
bourne show @1

# Or execute an ExecutionRequest v2 document:
bourne execute --request bourne.json

설치된 CLI로 사이트 인식 SSH 워크플로를 구성합니다:

bourne site add imperial \
  --ssh login.example.edu \
  --scheduler slurm \
  --local-root "$PWD" \
  --remote-root /work/$USER/project

bourne discover --site imperial
bourne plan --site imperial --request bourne.json --provider constraints.json

첫 번째 plan 호출은 제한된 후보들을 출력합니다. 그런 다음 사람이나 에이전트가 선호도 결정을 명시적으로 내립니다:

bourne plan --site imperial --request bourne.json \
  --provider constraints.json \
  --trust-provider-classifications \
  --candidate sha256:...

bourne execute --plan <plan-id>
bourne execution wait <execution-id>

trust 플래그는 해당 선언적 제공자(provider)의 의미적 분류에 대한 명시적 검토 결정입니다. 제공자는 스스로에게 그 권한을 부여할 수 없습니다. 더 좁은 사용자 결정을 위해서는 --approve-variant-change PARAMETER 또는 --declare-execution-only PARAMETER를 사용합니다. 선택된 후보가 제공자에 바인딩된 JSON 입력을 변경하는 경우, Bourne은 원본을 보존하고 별도로 해시된 WorkloadVariant를 자동으로 플랜에 바인딩합니다.

Slurm/PBS/LSF는 수락 후 작업을 소유합니다. 연구자의 워크스테이션/컨트롤 플레인, VPN, SSH 연결, MCP 호스트 및 에이전트는 연결이 끊어질 수 있습니다. Bourne은 나중에 다시 연결하여 정확한 실행을 조정합니다. 모호한 연결 실패가 맹목적 재제출을 촉발하는 일은 없습니다.

에이전트 / MCP

v0.8.0 에이전트 및 MCP 진입점은 로컬 stdio로 유지됩니다:

python -m pip install "bourneprov[mcp]==0.8.0"
bourne mcp

# Or use the public transparent launcher:
npx -y @project-bourne/mcp@0.8.0

개발

Project Bourne은 개발, 의존성 잠금, 테스트 및 빌드 프런트엔드로 uv를 사용합니다. uv를 설치한 후, 커밋된 lockfile을 동기화하고 다음 명령으로 테스트 스위트를 실행합니다:

uv sync --locked --all-extras --dev
uv run --frozen --no-sync python -W error::ResourceWarning -m unittest discover -s tests -v
uv build --no-sources

CI는 이러한 명령의 locked/frozen 변형을 사용하므로 오래된 uv.lock은 표류(drift)하는 대신 실패합니다. uv는 개발 도구일 뿐입니다: bourneprov 런타임 의존성이 아니며, pip install에 필요하지 않고, npm 런처에서 사용되지 않으며, HPC 로그인 노드나 계산 노드에서 절대 필요하지 않습니다. 전체 기여자 워크플로는 CONTRIBUTING.md를 참조하세요.

왜 Bourne인가

Bourne은 과학 프로그램의 변경을 요구하지 않고 임의의 실행 파일을 래핑합니다. 로컬 우선(local-first)이며 프레임워크에 구애받지 않습니다: Python, 컴파일된 솔버, Julia, MPI 프로그램 및 기타 명령은 동일한 영속적 실험 모델을 사용합니다.

bourne run bash -c "echo hello"
bourne run ./solver case.yaml
bourne run julia simulation.jl
bourne run mpirun -np 64 ./solver

프로그램의 stdout과 stderr는 실행 중에도 계속 표시되며 실험 기록에 보존됩니다.

v0.8의 런타임 진실

v0.8은 계획 진실, 스케줄러 진실, 런타임 진실, 실험 진실, 검증 및 과학적 타당성을 분리합니다. 실행 범위의 Compute Worker는 명시적인 observed, partially_observed, unavailable, unsupported 또는 unknown 적용 범위와 함께 버전이 지정된 프로세스, 할당, CPU, 메모리, I/O, GPU 및 환경 증거를 기록합니다. 누락된 원격 측정(telemetry)은 유효한 워크로드를 실패시키지 않으며 조작된 0이 되지 않습니다.

IBM LSF는 제한된 큐 발견, bsub, 정확한 작업에 대한 활성 bjobs, 최근 완료된 bjobs -a, 영속적 bhist 조정 및 bkill로 Slurm 및 PBS에 합류합니다. 기존 Apptainer/Singularity 이미지는 선택된 사이트 인식 플랜으로 고정(freeze)될 수 있습니다. Bourne은 계산 측에서 기존 런타임/이미지를 검증하고 과학 명령을 정확한 argv로 전달합니다. 이미지를 빌드하거나, 가져오거나, 설치하거나 관리하지 않습니다. v0.8은 다중 노드 컨테이너 실행을 오케스트레이션하지 않으며, MPI 런처/컨테이너 순서를 선택하거나 MPI 런처를 주입하지 않습니다. 런타임 증거 및 스케줄러 적용 범위를 참조하세요.

핵심 아키텍처

Bourne Core는 결정적 실행, 증거, 계획, 저장 및 출처를 담당합니다. CLI, SDK 및 MCP는 동일한 서비스 위의 어댑터입니다:

             Project Bourne Core
                    │
       ┌────────────┼────────────┐
       │            │            │
      CLI          SDK          MCP
    humans                     agents

원격 워커는 일회성(one-shot)이며, 사용자 공간에서 실행되고, AI가 아니며, 데몬이 아닙니다. 발견, 플랜 검증, 스테이징, 스케줄러 제출 및 조정을 위한 버전이 지정된 연산만 수락합니다. 과학 명령은 불변 플랜에서 정확한 argv로 유지됩니다. 과학 argv가 원격 셸 텍스트에 삽입되지 않습니다. 원격 워커 프로토콜은 v1로 유지됩니다. v0.8은 릴리스된 worker-result v1/v2 및 staged-plan v1/v2/v3 페이로드용 리더를 유지하면서 worker-result 프로토콜 v3와 staged-plan 프로토콜 v4를 추가합니다.

에이전트 및 MCP 통합

표준 로컬 stdio 서버는 bourne mcp입니다. 안정적인 공식 MCP 레지스트리 ID는 io.github.KozakHou/project-bourne이며, 이식 가능한 Agent Skill은 skills/project-bourne에 있습니다. v0.8.0 npm 패키지와 일치하는 레지스트리 메타데이터는 동일한 릴리스 ID를 사용합니다.

MCP 호환 에이전트는 "네 개의 GPU를 사용하여 이 시뮬레이션을 실행하고 출처를 보존하세요"와 같은 명시적 요청을 ExecutionRequest v2로 변환하고, Bourne에 계획을 요청하고, 결정적 해석을 보여주며, 실행 의도가 확립된 후 불변 플랜을 실행할 수 있습니다. Bourne 자체는 제약 없는 자연어를 해석하지 않으며 다른 모델을 호출하지 않습니다.

에이전트 경로는 의도적으로 2단계입니다:

agent intent → ExecutionRequest v2 → bourne_plan → inspect → bourne_execute_plan

계획은 워크로드를 실행하거나 인프라를 조용히 발견하지 않습니다. 모호한 대상과 알 수 없는 사실은 해결되지 않은 채로 남습니다. MCP 주석은 호스트 UX 힌트입니다. Bourne Core는 여전히 불변 플랜, 정확한 argv, 스케줄러 작업 소유권, 아티팩트 의미론 및 출처를 강제합니다. MCP 통합 및 에이전트 가이드를 참조하세요.

실행 요청

이제 실행은 한 번에 제한되고 버전이 지정된 JSON 요청으로 설명할 수 있습니다:

{
  "kind": "bourne.execution-request",
  "version": 2,
  "command": ["python", "train.py", "--case", "case1"],
  "artifacts": {
    "inputs": ["config.yaml"],
    "outputs": ["result.h5"]
  },
  "resources": {"cpus": 8, "gpus": 1, "walltime": "2h"},
  "execution": {"backend": "direct"},
  "verification": {
    "checks": [
      {"type": "output_exists", "path": "result.h5"},
      {"type": "output_min_bytes", "path": "result.h5", "min_bytes": 1024}
    ]
  }
}

bourne.json으로 저장한 다음, 동일한 의도를 계획 또는 실행에 사용합니다:

bourne request validate bourne.json
bourne request show bourne.json

bourne discover
bourne plan --request bourne.json
bourne execute --request bourne.json

아무것도 실행하거나 발견하지 않고 최소 요청을 생성합니다:

bourne request init --output bourne.json -- python train.py
bourne request schema > execution-request-v2.schema.json

기존 플래그 기반 명령은 계속 지원됩니다. 병렬 구현이 아닌 동일한 ExecutionRequest → WorkloadSpec → ExecutionPlan 파이프라인으로 컴파일됩니다:

bourne execute --backend direct --cpus 2 --output result.txt -- python script.py

요청 파일의 경우 상대 working_directory는 요청 파일의 디렉터리에서 해석됩니다. 그런 다음 선언된 아티팩트는 해당 과학 작업 디렉터리에서 해석됩니다. Bourne은 어휘적 및 해석된 작업 디렉터리 값을 모두 보존하며, 파싱 또는 계획 중에 $HOME을 확장하거나, 셸 구문을 평가하거나, 프로젝트 코드를 가져오거나, 아무것도 실행하지 않습니다.

부모 참조는 동일한 의도 보존 규칙을 따릅니다. 요청은 latest, @N, 고유 접두사 또는 전체 ULID를 사용할 수 있습니다. Bourne은 요청된 값을 유지하면서 컴파일된 워크로드에 사용된 표준 부모 ULID를 별도로 기록합니다.

요약 원격 측정은 기본적으로 활성화되며 이미 캡처된 사실을 사용합니다: 벽시계 시간, UTF-8 stdout/stderr 바이트 수, 알려진 아티팩트 바이트 합계, 요청된 리소스, 관찰된 할당, 그리고 타임스탬프가 이를 확립하는 경우 스케줄러 큐 타이밍입니다. "telemetry": {"mode": "off"}는 요약을 비활성화합니다. 누락된 메트릭은 사용 불가능한 상태로 유지되며 결코 0이 되지 않습니다.

초기 결정적 검증 검사는 output_exists, output_min_bytes 및 output_sha256입니다. 캡처된 선언된 출력 Artifact 레코드만 평가합니다. 검증은 프로세스 상태와 별도로 유지됩니다: 실험은 completed일 수 있지만 검증은 failed 또는 unknown일 수 있습니다. 이러한 검사는 일반적인 과학적 타당성이 아닌 아티팩트 사실을 확립합니다. 정확한 계약 및 안전 한계는 실행 요청, 원격 측정 및 검증을 참조하세요.

계획 및 실행

Project Bourne v0.4.0은 v0.3 인벤토리 위에 영속적 계획 계층을 추가합니다:

bourne discover

bourne plan --backend direct -- python examples/demo.py
bourne execute --backend direct -- python examples/demo.py

bourne execution list
bourne execution show @1

bourne plan은 과학 명령을 실행하지 않으며 발견을 수행하지 않습니다. 프레임워크 독립적인 WorkloadSpec을 생성하고, 명시적 및 추론된 요구 사항을 기존 인벤토리와 비교하고, 모든 후보를 설명하며, 선택이 명확할 때만 불변 ExecutionPlan을 유지합니다. 필요할 때 명시적 리소스 및 배치 제약을 사용합니다:

bourne plan \
  --backend slurm \
  --target gpu \
  --cpus 16 \
  --gpus 4 \
  --nodes 1 \
  --memory 64G \
  --walltime 2h \
  -- ./solver case.yaml

선택된 Slurm 플랜을 실행한 다음 결과 실행 시도를 검사하거나 대기합니다:

bourne execute --plan @1
bourne execution show @1
bourne execution wait @1

기록된 작업이 여전히 활성 상태인 동안 bourne execution cancel @1은 해당 Bourne 관리 작업의 취소를 요청합니다. 동일한 계획 및 수명 주기 모델이 --backend pbs 및 --backend lsf를 지원합니다.

직접 실행은 Bourne의 기존 실시간 출력, 프로세스 그룹, 아티팩트, 계보 및 실험 출처 메커니즘을 재사용합니다. Slurm, PBS 및 LSF 플랜은 플랜과 함께 스테이징된 자체 포함 Bourne 워커를 사용합니다. 워커는 사전 점검(preflight)을 수행하고 실제 할당된 호스트와 과학 실험을 기록합니다. 액세스 측 컨트롤러는 제한된 JSON 결과를 트랜잭션 방식으로 가져옵니다. 계산 할당이 Python 3와 스테이징 및 작업 디렉터리에 대한 가시성을 제공해야 하지만, 계산 노드 SSH 또는 사전 설치된 bourneprov 패키지는 필요하지 않습니다.

제출은 실험이 아니며, 스케줄러 완료는 과학적 성공이 아니며, 요청된 리소스는 할당된 리소스가 아닙니다. Bourne은 이를 별도의 영속적 사실로 기록합니다. 취소는 Bourne 실행 참조—임의의 스케줄러 작업 ID가 아닌—를 수락하고 제출자 신원을 확인합니다. 정확한 모델, 안전 경계 및 현재 제한 사항은 워크로드 계획 및 스케줄러 실행을 참조하세요.

컴퓨트 사이트 발견 (v0.3.0)

Bourne은 현재 ID에 보이는 실행 표면의 불변 로컬 스냅샷을 생성할 수 있습니다:

bourne discover
bourne inventory
bourne inventory --find python
bourne inventory --json

발견은 현재 ID 및 액세스 대상, 허용 목록에 있는 사용자 관련 저장 경로, 직접 실행 컨텍스트, 일반 PATH 실행 파일, 선택적 Conda/virtualenv/컨테이너/모듈 컨텍스트, 안전한 시스템 기능, Bourne 기록 및 사용 가능한 경우 읽기 전용 Slurm/PBS/LSF 대상 클래스 요약을 포함합니다. 알 수 없는 실행 파일은 실행되지 않고 일반적으로 기록됩니다.

노트북, 데스크톱 및 GPU 워크스테이션, DGX급 개인 머신, 공유 실험실 시스템 및 스케줄러 기반 HPC 사이트는 모두 유효한 컴퓨트 사이트입니다. 스케줄러가 없는 머신도 그 자체로 완전합니다.

발견은 관찰적입니다: 실행 파일은 워크로드 호환성이 검증된 것이 아니며, 보이는 스케줄러 파티션은 제출 권한의 증거가 아니며, 저장 역할 힌트는 보존 또는 백업 정책이 아닙니다. 인벤토리는 로컬에 유지됩니다. 제공자는 다른 사용자의 홈 디렉터리를 탐색하지 않으며, 공유 저장소를 크롤링하지 않고, SSH 자격 증명이나 컨테이너 비밀을 검사하지 않고, 임의의 환경 변수를 덤프하지 않고, 계산 노드에 SSH로 접속하지 않고, 스케줄러 작업을 제출하거나 취소하지 않으며, 환경을 수정하지 않습니다. 정확한 토폴로지, 증거, 한계 및 보안 의미론은 컴퓨트 사이트 발견을 참조하세요.

출처, 아티팩트 및 계보

Project Bourne v0.2는 명시적 입력/출력 지문, 최소한의 derived_from 관계, 안전한 실행 컨텍스트 관찰 및 아티팩트 추적을 추가합니다. 격리된 디렉터리에서 결정적 예제를 실행합니다:

cp -R examples/provenance /tmp/bourne-provenance-demo
cd /tmp/bourne-provenance-demo
export BOURNE_DB="$PWD/bourne.sqlite3"

bourne run \
  --input config_A.json \
  --output result_A.csv \
  -- python demo_simulation.py config_A.json result_A.csv

bourne run \
  --derived-from @1 \
  --input config_B.json \
  --input result_A.csv \
  --output result_B.csv \
  -- python demo_simulation.py config_B.json result_B.csv

bourne show @2
bourne show @1
bourne trace result_B.csv

입력은 실행 전에 지문이 기록됩니다. 출력은 이후에 지문이 기록되며, 실패하거나 중단된 실행 후 누락된 예상 출력도 포함됩니다. SHA-256 읽기는 청크로 스트리밍됩니다. Bourne은 선언된 파일을 복사하거나 업로드하지 않습니다.

경로는 아티팩트 ID가 아닙니다. 각 캡처에는 안정적인 ULID가 있으며, SHA-256은 콘텐츠 버전을 구분합니다. 과거 경로가 여러 버전을 식별할 수 있고 현재 파일 콘텐츠로 이를 구분할 수 없는 경우, bourne trace는 후보를 나열하고 추측을 거부합니다.

Artifacts, lineage, and execution context 문서에서 정확한 캡처, 추적, 마이그레이션 및 보안 의미론을 확인하세요.

사람이 읽기 쉬운 실험 참조

정식 실험 식별자는 26자 ULID로 유지됩니다. 실험을 인자로 받는 명령어는 다음도 이해합니다:

01M02GDJEW...   case-insensitive unique ULID prefix
latest          most recent experiment
@1              most recent experiment
@2              second-most-recent experiment
@3              third-most-recent experiment

예를 들어:

bourne show latest
bourne show 01M02GDJEW
bourne compare @2 @1
bourne run --derived-from @1 -- ./solver case_B.yaml

Bourne은 접두사가 모호할 때 추측하지 않습니다. bourne list는 기본적으로 10자 접두사를 표시하며, bourne list --full-id는 정식 ID를 표시합니다.

셸 완성

완성 후보에는 정식 실험 ID, latest, 최근 @N 참조가 포함됩니다. 현재 셸 세션에 대한 완성을 활성화하려면:

# Bash
source <(bourne completion bash)

# Zsh
source <(bourne completion zsh)

# Fish
bourne completion fish | source

bourne show 및 bourne compare에 대한 완성은 현재 구성된 데이터베이스(포함 BOURNE\_DB)를 조회합니다.

Bourne이 기록하는 것

모든 실험은 다음을 기록합니다:

  • 실행 상태(완료, 실패 또는 중단), 정확한 인자 벡터, 작업 디렉터리, UTC 타임스탬프, 지속 시간 및 종료 코드;

  • 실시간 및 캡처된 stdout/stderr;

  • Git 저장소 루트, 커밋, 브랜치 및 가능한 경우 더티 상태;

  • 운영 체제, 아키텍처, 호스트 이름, CPU 및 선택적 NVIDIA 런타임 메타데이터;

  • 요청된 경로 및 확인된 실행 파일 경로와 엄격한 허용 목록에 포함된 virtualenv/Conda 컨텍스트 힌트;

  • 명시적으로 선언된 입력/출력 아티팩트 버전 및 직접 계보.

수집기는 우아하게 저하됩니다. Git, NVIDIA 도구, GPU, 환경 힌트 또는 실행 파일 확인이 없어도 워크로드는 중단되지 않습니다. 임의의 환경 변수는 유지되지 않으므로 자격 증명과 토큰은 기본적으로 캡처되지 않습니다.

실패하거나 중단된 명령어는 Bourne이 프로세스 의미론을 반환하기 전에 저장됩니다:

bourne run --output expected.csv -- python -c "raise RuntimeError('boom')"
bourne show @1

POSIX 시스템에서 Bourne은 전용 프로세스 그룹을 사용하므로 Ctrl+C는 일반적으로 관련 없는 프로세스를 대상으로 하지 않고 하위 프로세스를 종료합니다.

실행 성공은 검증이 아니며, 결정적 아티팩트 검증은 일반적인 과학적 타당성이 아닙니다. Bourne은 이러한 상태를 별도로 기록합니다.

로컬 저장 및 마이그레이션

기본 SQLite 경로는 다음과 같습니다:

~/.local/share/bourne/experiments.sqlite3

프로젝트별 데이터베이스를 사용하려면:

export BOURNE_DB=/path/to/experiments.sqlite3

v0.8.0으로 v0.1.1부터 v0.7.0까지의 릴리스된 데이터베이스를 포함한 이전 Bourne 데이터베이스를 열면 스키마 7까지 결정적 트랜잭션 마이그레이션이 수행됩니다. 기존 실험, 아티팩트, 계보, 인벤토리, 워크로드, 계획, 실행, 스케줄러 작업, 할당, 이벤트 및 실험 링크는 계속 읽을 수 있습니다. 마이그레이션은 v0.4 레코드에 대한 ExecutionRequest 기록을 만들어내지 않습니다. 알 수 없거나 더 새로운 스키마 버전은 명시적으로 실패합니다. Bourne은 기존 데이터베이스를 재설정하지 않습니다. 각각의 새로운 발견은 별도의 불변 스냅샷을 생성합니다.

라이선스

Project Bourne v0.5.0 이상은 Apache License 2.0에 따라 배포됩니다. v0.4.0까지의 릴리스는 배포 당시의 MIT 라이선스 조건에 따라 유지됩니다. 자세한 내용은 라이선스 이력을 참조하세요.

릴리스 검증

릴리스 버전은 0.8.0입니다. 기본 런타임에는 타사 종속성이 전혀 없으며, MCP 지원은 명시적 선택적 추가 기능으로 유지됩니다.

소스 트리 테스트를 실행하려면:

uv sync --locked --all-extras --dev
uv run --frozen --no-sync python -W error::ResourceWarning -m unittest discover -s tests -v
uv build --no-sources

컴퓨트 워커의 stdout과 stderr은 실시간으로 유지되며 결과 번들에서 캡처된 스트림당 8MiB로 제한됩니다. 잘림은 명시적 런타임 증거입니다. 일반적인 로컬 bourne run은 기존 캡처 동작을 유지합니다. 디스크 스풀 로그, 자동 아티팩트 발견/아카이빙, 과학적 의존성 설치 또는 소스 빌드, 일반 데이터 동기화, 제한 없는 원격 셸, 스케줄러 없는 연결 끊김 안전 원격 감독, 전체 할당 분산격 측정, 큐/성능 예측, 임의 검증 스크립트, 호스팅 HTTP MCP, 임베디드 LLM 및 광범위한 과학적 타당성 추론은 v0.8 범위 밖입니다. 런타임 증거 및 스케줄러 범위, 사이트 인식 아키텍처 및 VISION을 참조하세요.

라이브 LSF 및 라이브 Apptainer 검증은 아직 수행되지 않았습니다. 런타임 샘플링은 실행 범위로 제한되며 다중 노드 할당에 걸쳐 자동으로 집계되지 않습니다. Bourne은 MPI 런처를 주입하거나 컨테이너/MPI 순서를 자동으로 선택하지 않습니다. 이식 가능한 LSF 메모리/GPU 리소스 구문은 사이트별로 다르며 해결되지 않은 상태로 남아 있습니다.

Available Tools

17 tools
bourne_discoverA

Run bounded local compute-site discovery and persist a new immutable inventory snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A3.8/5.0
Behavior4/5

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

All annotation hints are false, so the description is the sole source of behavioral information. It adds useful context: the discovery is bounded/local, a new snapshot is persisted, and the snapshot is immutable, implying no destructive change to existing data. It does not mention auth or rate limits, but for a zero-parameter action this is reasonable.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler: it gives the action, scope, and result. Every word contributes to the meaning.

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

Completeness3/5

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

The output schema covers return values and there are no input parameters, which simplifies the context. However, the description leaves the boundary between bourne_discover and bourne_site_discover ambiguous, and the phrase 'bounded local' is not explained, so the agent may still struggle to know when this tool is the right choice.

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

Parameters4/5

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

The tool has zero parameters, so the schema already completely captures the input surface. The description therefore has no need to explain parameters, and the baseline of 4 applies.

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

Purpose4/5

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

The description names a concrete action ('Run ... compute-site discovery') and a concrete outcome ('persist a new immutable inventory snapshot'), so an agent can understand what the tool does. It does not explicitly distinguish itself from the closely named sibling bourne_site_discover, so it misses the top score.

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

Usage Guidelines3/5

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

The description implies the usage context: call it when you want bounded local compute-site discovery and a persisted inventory snapshot. However, it provides no explicit when-not guidance or comparison to alternatives such as bourne_site_discover or bourne_inventory, leaving the decision to inference.

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

bourne_execute_planA
Destructive

Execute one immutable persisted Bourne plan without changing its command, resources, placement, backend, or inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the agent knows this is a destructive, non-idempotent action. The description adds value by clarifying that the plan itself remains unchanged (immutable) and lists what is not altered (command, resources, placement, backend, inventory). This supplements the annotations without contradicting them.

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

Conciseness5/5

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

The description is a single, focused sentence that front-loads the primary action and qualifies it with the immutable scope. There is no fluff or redundant phrasing; every word 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?

Given the tool has a simple single-parameter interface and an output schema (which presumably describes the result), the description covers the core action well. However, it does not mention side effects or the need for the plan to already exist, which could be inferred from 'persisted'. The presence of sibling tools like bourne_execution_wait and bourne_execution_get partially compensates, but a note about the execution being asynchronous or the need for prior validation would make it more complete. Overall close to complete.

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 0% description coverage for plan_id, and the description does not explain its format, origin, or constraints. The baseline for a single parameter with no schema coverage is that the description must compensate, but it offers no additional meaning beyond 'plan_id' being an identifier. This is a significant gap for an agent trying to construct a valid request.

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 ('Execute') and a distinct resource type ('persisted Bourne plan'), clearly differentiating this tool from siblings like bourne_plan (which creates plans) and bourne_execution_get (which retrieves execution status). The scope is precise: it executes an existing plan without modifying its definition.

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 when you have an immutable plan_id and want to run it, but it does not explicitly contrast with alternatives or state when not to use it. There is no explicit guidance on prerequisites (e.g., plan must exist) or when to use related execution tools instead. The context is clear but not explicitly framed.

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

bourne_execution_cancelA
Destructive

Cancel only the exact scheduler job owned by an existing Bourne execution; arbitrary scheduler job IDs are not accepted.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and idempotentHint=false, so the description does not need to repeat those. It adds the important qualifier that only the exact job associated with an existing execution is cancelled, not any arbitrary job ID. This clarifies the scope of destructive behavior and distinguishes from potential misuse. It does not, however, describe side effects like irreversibility or downstream state changes, but the annotations already convey the destructive nature.

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 sentence that is entirely front-loaded with the action and scope. No filler words, and the critical constraint ('only the exact scheduler job') appears early. The sentence is compact and information-dense without being verbose.

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?

With one parameter, an output schema present, and annotations covering destructive and persistence behaviors, the description covers the essential aspects of what the tool does and the scope of its operation. It does not mention prerequisites beyond 'existing execution', but that is implied by 'owned by an existing Bourne execution'. Missing details like error behavior (e.g., what happens if the reference is invalid) are not critical given the output schema likely captures responses.

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 required parameter 'reference' with no description and 0% schema coverage. The description implies that 'reference' identifies an existing Bourne execution (since it says 'owned by an existing Bourne execution'), but it does not explicitly state that the parameter is that execution's reference, nor does it explain how to obtain it or its format. The description provides some semantic context but falls short of fully compensating for the missing schema documentation.

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

Purpose5/5

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

The description specifies a concrete verb ('Cancel'), identifies the exact resource ('scheduler job owned by an existing Bourne execution'), and explicitly contrasts with 'arbitrary scheduler job IDs'. This clearly distinguishes it from sibling execution tools like bourne_execution_get, bourne_execution_reconcile, and bourne_execution_wait, which handle retrieval, reconciliation, and waiting respectively.

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 provides the key constraint that only exact scheduler jobs owned by existing Bourne executions are accepted, which implies that cancellation is for executions that are currently active. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention conditions like 'use when you need to stop a running execution'. Such guidance is not present, so the usage context is implied but not explicit.

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

bourne_execution_getA
Read-onlyIdempotent

Read a Bourne execution, including request, plan, lifecycle, scheduler, allocation, experiment, telemetry, and verification state.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already establish read-only and idempotent behavior. The description adds meaningful context by listing the exact state categories returned (telemetry, verification, etc.), telling the agent what data to expect. It does not contradict annotations.

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

Conciseness5/5

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

A single, front-loaded sentence that efficiently communicates the core purpose and the scope of the returned data. No extraneous words or fluff.

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

Completeness3/5

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

The output schema covers return values, so that is not needed. However, the missing reference-format details and lack of guidance on when to use this over sibling read-ish tools leave minor gaps. Given the simplicity of a one-parameter read-only tool, this is adequate but not fully comprehensive.

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 no description for 'reference' and the tool description does not clarify its format or how to obtain it. With 0% schema coverage, the description should compensate but does not; it only implies an execution identifier through the tool name.

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?

Description clearly states the action ('Read') and the resource ('a Bourne execution'), and enumerates the specific state components included (request, plan, lifecycle, etc.), distinguishing it from sibling tools like cancel or wait. It is unambiguous about what the tool does.

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

Usage Guidelines2/5

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

The description does not indicate when to use this tool versus alternatives such as bourne_execution_reconcile, wait, or cancel. It only describes the function, leaving the agent to infer that this is the standard read operation. No exclusions or alternatives are mentioned.

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

bourne_execution_reconcileA

Reconnect and reconcile one exact Bourne-owned remote execution; never resubmit.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already communicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds useful behavioral constraints like targeting exactly one execution and never resubmitting, but it does not explain what 'reconcile' actually does, what side effects may occur, or whether permissions or prerequisites 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?

The description is a single front-loaded sentence with no filler. Every word contributes: the action, the scope, the ownership constraint, and the critical 'never resubmit' warning.

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

Completeness2/5

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

Although the tool has only one parameter and an output schema, the description leaves the meaning of 'reconcile' vague and gives no trigger conditions or behavioral detail beyond 'never resubmit.' An agent can avoid resubmission but cannot reliably know when or how to invoke this tool.

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

Parameters2/5

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

Schema description coverage is 0%, and the description never mentions the 'reference' parameter. The name implies it is an identifier, but the description does not connect it to the execution being reconciled or explain what form it should take.

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

Purpose5/5

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

The description states a specific action ('Reconnect and reconcile') and a precise resource ('one exact Bourne-owned remote execution'), then adds a clear negative constraint ('never resubmit'). This distinguishes it from resubmission-style siblings and makes the tool's scope obvious.

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 usage context is implied: use this when reconnecting a Bourne-owned execution to reconcile its state. However, there is no explicit when-to-use guidance, no mention of when not to use it, and no naming of alternative tools such as bourne_execution_get or bourne_execution_wait.

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

bourne_execution_waitA

Wait on one existing Bourne-managed scheduled execution with an optional bounded caller timeout; this creates no execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYes
timeout_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already convey non-read-only, non-idempotent, non-destructive. The description adds that waiting creates no execution, which is a useful behavioral note, but it does not disclose error behavior, timeout side effects, or what happens if execution is missing. It adds marginal value beyond annotations.

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

Conciseness5/5

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

Two clauses, concise, front-loaded with the primary action. Every word contributes meaning without repetition.

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 are covered. However, for a wait tool, the description lacks parameter explanations and usage context, leaving the agent to infer 'reference' and timeout semantics. It is adequate but has 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?

With 0% schema description coverage, the description carries the burden. It hints at the optional timeout via 'optional bounded caller timeout', but does not explain what 'reference' refers to or how to format it. The description does not fully compensate for the schema 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 clearly states the verb 'wait' and the resource 'existing Bourne-managed scheduled execution', and explicitly notes it creates no execution, distinguishing it from creation tools. It is specific and unambiguous, though it doesn't name sibling alternatives.

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

Usage Guidelines3/5

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

The description implies use when you need to block on an execution, but provides no explicit when-to-use vs alternatives like bourne_execution_get or bourne_execution_cancel. No mention of when not to use or prerequisites such as initiating an execution first.

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

bourne_inventoryA
Read-onlyIdempotent

Read an existing inventory by latest, full ID, unique prefix, or @N; this never performs discovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceNoExisting inventory reference: latest, canonical ID, unique ID prefix, or @N.latest

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the operation is read-only and idempotent, so the bar is lower. The description adds the key behavioral boundary that no discovery is triggered, which is meaningful because discovery could be a separate, potentially expensive operation and annotations alone do not convey this distinction. No contradiction exists.

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

Conciseness5/5

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

One focused sentence front-loads the action and the accepted reference identifiers, then appends the crucial 'never performs discovery' caveat. There is no filler, repetition, or additional context that would distract an agent.

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

Completeness5/5

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

Given one optional parameter, full schema coverage, an output schema, and annotations covering read-only/idempotent/non-destructive behavior, the description sufficiently conveys which reference to pass and demarks the operation's boundary. Return values do not need to be explained because an output schema exists.

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

Parameters3/5

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

The input schema has 100% description coverage, so the parameter already carries its meaning. The tool description mostly restates the same reference forms found in the schema and adds little new semantic detail, making the baseline of 3 appropriate.

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

Purpose5/5

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

The description opens with a concrete action and resource ('read an existing inventory') and lists the accepted reference forms (latest, full ID, unique prefix, @N). It further separates the tool from discovery-oriented siblings by stating it never performs discovery, leaving no ambiguity about what this tool does.

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

Usage Guidelines4/5

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

The description makes the intended use clear: retrieve an already-existing inventory by one of several reference types. The explicit 'this never performs discovery' also gives a useful when-not signal against discovery-family tools, though it does not explicitly name those alternatives as replacements.

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

bourne_planA

Persist and resolve an ExecutionRequest v2 against an existing inventory. Planning never executes the workload and preserves ambiguity.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYesFramework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends.
inventory_referenceNoExisting inventory reference: latest, canonical ID, unique ID prefix, or @N.latest

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A3.9/5.0
Behavior3/5

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

The 'never executes the workload' disclosure is genuinely useful behavioral context, and prior hints are absent. However, the description stops short of explaining what 'persist' actually creates or changes, whether repeated calls are safe, and what resolution fulfillment means in terms of lifecycle or side effects.

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 written sentences that front-load the core action and then add the key non-execution caveat. Every clause contributes meaningful information and no space is wasted.

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?

Given the complexity of the nested ExecutionRequest schema and the breadth of sibling tools, the description provides the essential planning-vs-execution distinction but lacks workflow positioning. It does not explain how this tool fits after validation/discovery or before execution, or what the resolved result is used for.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameter schemas already document the request and the inventory reference. The tool description adds no additional details about the request structure, inventory_reference semantics, or how properties like 'latest' or '@N' behave.

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?

Uses a specific verb+resource ('Persist and resolve an ExecutionRequest v2') and explicitly contrasts planning with execution by saying 'Planning never executes the workload.' This distinguishes it from execution-related siblings without needing to inspect their schemas.

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?

Provides clear context for when to use the tool: against an existing inventory, to resolve a request, and specifically without executing the workload. It does not name or explicitly exclude alternatives such as bourne_validate_request, bourne_discover, or bourne_execute_plan.

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

bourne_request_schemaA
Read-onlyIdempotent

Return Bourne's canonical ExecutionRequest version-2 JSON Schema.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful contextual value by identifying the specific artifact returned—'canonical ExecutionRequest version-2 JSON Schema'—and contains no contradictions.

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

Conciseness5/5

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

The entire description is one efficient, front-loaded sentence. Every word contributes to the tool's purpose, and there is no redundant phrasing.

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 simple schema-retrieval tool with no parameters and an existing output schema, the description is complete. An agent knows exactly what it will receive and can invoke the tool without needing additional context.

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

Parameters4/5

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

The tool has zero parameters and the input schema has 100% description coverage vacuously, so there are no hidden or undocumented arguments to explain. The description is not required to compensate for missing 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?

The description uses a specific verb ('Return') with a concrete resource: Bourne's canonical ExecutionRequest version-2 JSON Schema. It is clearly distinct from siblings like bourne_validate_request or bourne_discover because it identifies the exact artifact and version being retrieved.

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

Usage Guidelines4/5

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

The intended use is clear from the description: fetch Bourne's canonical ExecutionRequest v2 schema. It does not explicitly name alternatives or exclusions, but for a zero-parameter schema-retrieval tool this ambiguity is minimal and the context is strong enough.

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

bourne_site_candidatesA

Generate at most 64 candidate plans for one configured site from an ExecutionRequest, an existing inventory, and optional declarative provider constraints. Use after site discovery and before bourne_site_select; use bourne_plan when site-aware candidate comparison is unnecessary. This does not execute or durably persist a request or plan, but stores an ephemeral candidate session in this MCP process; a restart loses that session.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYesFramework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends.
providerNoOptional bounded declarative constraints used to generate candidates; the document cannot execute code or grant itself trust.
referenceYesExact configured site name or canonical site ID.
inventory_referenceNoExisting inventory reference: latest, canonical ID, unique ID prefix, or @N.latest

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only mark readOnly/openWorld/idempotent/destructive hints as false, which is minimal. The description adds important behavior beyond them: the tool does not execute or durably persist a request/plan, stores an ephemeral candidate session in the MCP process, and loses that session on restart. That is valuable context the annotations alone do not provide.

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

Conciseness5/5

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

Three dense sentences: the first states the tool's purpose and inputs, the second gives pipeline placement and the sibling alternative, and the third discloses persistence/restart effects. Everything earns its place with no filler.

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

Completeness5/5

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

The description covers what the tool does, when to use it, when not to use it, and the key side-effect of ephemerality. An output schema exists, so return-value explanation is not required. The only conceptually risky areas (durable persistence, execution) are explicitly addressed.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters already have documented meaning in the input schema: reference, request, inventory_reference, and provider. The tool description does not add new per-parameter semantics, but it does clarify the overall role of provider constraints and the default inventory flow, which is reasonable given the schema already carries the detail.

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 ('Generate'), an explicit resource ('candidate plans for one configured site'), a bound ('at most 64'), and the key inputs. It also distinguishes itself from bourne_plan by calling out site-aware candidate comparison, so an agent can tell sibling tools apart.

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

Usage Guidelines5/5

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

Explicitly says when to use it ('after site discovery and before bourne_site_select') and names the alternative ('use bourne_plan when site-aware candidate comparison is unnecessary'). This gives clear selection logic relative to siblings.

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

bourne_site_discoverA

Discover one configured site and persist a new immutable inventory snapshot linked to it. reference is the site's exact name or canonical ID. Use this for a named local or SSH site; use bourne_discover for Bourne's current local context and bourne_site_inspect to read existing state. SSH discovery may require existing user authorization, uses only bounded typed probes, never accepts arbitrary commands, and never executes a scientific workload.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesExact configured site name or canonical site ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A4.9/5.0
Behavior5/5

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

The description adds substantial behavior beyond annotations: it persists a new immutable snapshot, may require existing SSH user authorization, uses only bounded typed probes, never accepts arbitrary commands, and never executes a scientific workload. These safety and side-effect details are genuinely useful and not present in the annotations.

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

Conciseness5/5

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

Three sentences compactly cover action, output behavior, parameter meaning, alternative selection, and security constraints. Every sentence adds value, and the core purpose is front-loaded before the comparison with siblings.

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?

With one well-documented parameter, an output schema, and strong annotation coverage, the description still covers authorization caveats, behavioral limits, and alternative tool routing. Nothing essential for an agent to decide whether and how to invoke this tool is missing.

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

Parameters4/5

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

The schema already fully documents the single 'reference' parameter at 100% coverage, so baseline is 3. The description adds meaningful context by clarifying that reference selects a named local or SSH site and by repeating the exact-name-or-canonical-ID constraint, giving agents better disambiguation than the schema alone.

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 plus object ('Discover one configured site and persist a new immutable inventory snapshot linked to it') and explicitly differentiates itself from siblings by naming bourne_discover and bourne_site_inspect. An agent can immediately tell this is the named-site discovery tool rather than the context-based or inspection tool.

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

Usage Guidelines5/5

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

Gives explicit direction: use for a named local or SSH site, use bourne_discover for Bourne's current local context, and use bourne_site_inspect to read existing state. It also warns that SSH discovery may require existing user authorization, giving concrete selection and prerequisite guidance.

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

bourne_site_inspectA
Read-onlyIdempotent

Inspect one configured site, its policy claims, and inventory identities.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesExact configured site name or canonical site ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations clearly mark the operation as read-only and idempotent, so the description does not need to disclose safety traits. The description adds useful context about the inspected entities (policy claims, inventory identities) but does not reveal behaviors such as error handling, result shape specifics, or any authoritative constraints that go beyond the annotations.

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

Conciseness5/5

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

A single, tight sentence that captures the essential purpose. It is front-loaded, easy to parse, and contains no extraneous details.

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

Completeness4/5

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

The description adequately summarizes the tool's behavior given the single parameter and read-only annotations. An output schema exists, so omitting return details is acceptable; the only notable absence is explicit routing guidance among the many sibling site tools.

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

Parameters3/5

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

Schema coverage is 100%, with an explicit description for 'reference': 'Exact configured site name or canonical site ID.' The tool description does not add details on how that reference is resolved or provide examples, so the value matches the schema baseline rather than exceeding it.

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

Purpose4/5

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

The description states a specific action and object: 'Inspect one configured site' plus what will be inspected, 'policy claims, and inventory identities.' This clearly distinguishes it from siblings like bourne_site_list or bourne_site_discover, although it doesn't explicitly name the 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 purpose statement implies when to use this tool: to inspect a single configured site by reference. However, it does not explicitly state when to use this over related tools such as bourne_site_discover or bourne_site_policy_claim, leaving the choices up to the model.

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

bourne_site_listA
Read-onlyIdempotent

List configured non-secret local and SSH site contexts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds the value 'non-secret' and 'configured' which clarifies what is included and what is deliberately omitted. It does not describe the return format or error handling, but the output schema likely covers that, and no surprising side effects exist given the read-only annotation.

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, focused sentence that front-loads the action and scope. Every word contributes: 'List', 'configured', 'non-secret', 'local and SSH site contexts'. No filler or redundant information.

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-parameter listing tool with a read-only annotation and an output schema, the description provides the essential semantics: it enumerates configured sites, excluding secrets, and distinguishes local vs SSH. The output schema can define the exact structure, so nothing critical is missing. The description is complete for the tool's low complexity.

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?

There are zero parameters, so the schema fully covers them vacuously. The description correctly implies no input is needed. It adds the domain-specific constraint about non-secret and SSH contexts, which is useful but not about parameters directly. With no parameters, the description is adequate.

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 explicitly states the action 'List' and the resource 'configured non-secret local and SSH site contexts'. It clearly distinguishes this from siblings like bourne_site_inspect or bourne_site_discover by specifying the listing scope and the exclusion of secrets. The phrasing is precise and not a tautology.

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 does not mention when to use this tool over alternatives, nor does it provide exclusion criteria. The intended use as a listing operation is implied by the verb, but no explicit guidance on selecting it among the many sibling tools is given. An agent could infer it is the default for enumerating sites, but that is not stated.

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

bourne_site_policy_claimA

Append one durable structured policy claim and provenance record to an existing configured site. reference is the exact site name or canonical ID; claim contains the asserted fact, evidence classification, source identity, and applicability. Use this for reviewed site constraints or advice before candidate generation; use bourne_site_discover to observe infrastructure. This stores no source document, fetches no URL, runs no command, and does not modify previous claims.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimYesBounded typed policy fact and provenance metadata to append to the configured site.
referenceYesExact configured site name or canonical site ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish this is not read-only and not destructive. The description goes further by disclosing that it appends, stores no source document, fetches no URL, runs no command, and does not modify previous claims. This adds genuinely useful behavioral context beyond the annotation flags.

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

Conciseness5/5

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

The description is compact, front-loaded with the core action, and every sentence contributes: what it does, what the parameters mean, when to use it, which sibling to use instead, and what side effects it does not have. No wasted words.

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 policy-writing tool with a rich input schema and output schema, the description supplies the missing strategic context: durable append semantics, placement before candidate generation, and the distinction from discovery. An agent has enough information to choose and call the tool correctly at a high level.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema carries the full semantic weight for both `reference` and `claim`. The description adds a concise restatement of what each parameter contains, but no significant meaning beyond the schema.

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

Purpose5/5

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

The description states a specific verb ('Append') and a specific resource ('one durable structured policy claim and provenance record to an existing configured site'). It also names the sibling tool `bourne_site_discover` to make the boundary explicit, so an agent can distinguish this from the discovery workflow.

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

Usage Guidelines5/5

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

The description explicitly says to use this tool for 'reviewed site constraints or advice before candidate generation' and directs observation of live infrastructure to `bourne_site_discover` instead. This gives clear when-to-use and alternative routing.

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

bourne_site_selectA

Choose one candidate returned by bourne_site_candidates, persist selection evidence, and create a new immutable execution plan without executing it. request_id and candidate_id must come from the same live candidate session; regenerate candidates after a server restart. This writes a new plan without editing existing plans. Review the returned plan before calling bourne_execute_plan; selection fails when required approvals, declarations, or provider trust are missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
containerNoOptional existing Apptainer or Singularity image and explicit mounts to freeze into the plan; Bourne never builds or pulls it.
rationaleNoOptional explanation stored with the selection; Bourne does not treat the rationale itself as verification evidence.
request_idYesRequest ID returned by bourne_site_candidates in the current live MCP server session.
candidate_idYesViable candidate ID returned for request_id by bourne_site_candidates.
selection_sourceYesProvenance label identifying the human, agent, or deterministic rule that made the selection; this label does not grant authority.
variant_approvalsNoProvider-bound parameter names whose candidate value changes the user explicitly approved.
trusted_provider_contractNoExplicitly trust the declarative provider's semantic classifications; the provider cannot set this decision for itself.
explicit_user_declarationsNoParameter names the user explicitly declared to affect execution only, rather than scientific meaning.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only state readOnlyHint=false, idempotentHint=false, and destructiveHint=false; the description carries substantial behavioral context beyond those flags. It discloses that the tool creates a new plan without editing existing plans, that `request_id` and `candidate_id` live in a single session that breaks across server restarts, and that selection fails when required approvals, declarations, or provider trust are missing. There is no contradiction with the annotations—'writes a new plan' is consistent with non-read-only, and 'without editing existing plans' is consistent with destructiveHint=false.

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

Conciseness5/5

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

The description is compact and satisfies tasks: a purpose statement, a session prerequisite, write-semantics, a follow-up workflow hint, and failure conditions — all in roughly 70 words. The sentences are front-loaded with purpose, and each sentence provides distinct, non-redundant information. No filler or placeholder text.

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 tool with 8 schema parameters, an output schema, and a complex workflow position (candidates → select → execute), the description covers a caller's critical needs: where the identifiers come from, how to recover after restart, that no existing plan is modified, the immediate next step to review the plan, and the reasons a selection can fail. The output schema exists, so return-value documentation is not needed in the description. The description is sufficiently complete that an agent can correctly invoke the tool within the sibling chain.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value above the schema by tying `request_id` and `candidate_id` to the same live candidate session in a way the individual field descriptions only implicitly cover, and by explaining the gating conditions for `variant_approvals`, `explicit_user_declarations`, and `trusted_provider_contract` in the degenerate 'selection fails' clause. Since each parameter still has strong schema documentation, the description supplements rather than compensates, moving it to a 4.

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-plus-resource structure: 'Choose one candidate returned by `bourne_site_candidates`, persist selection evidence, and create a new immutable execution plan without executing it.' It names the exact input source, the action, and the output artifact. It also implicitly distinguishes itself from `bourne_execute_plan` by explicitly stating the plan is not executed, and from `bourne_site_candidates` by stating the candidate is already returned. This is unambiguous about what the tool does.

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

Usage Guidelines4/5

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

The description gives strong usage context: candidates must come from a live `bourne_site_candidates` session, and the plan should be reviewed before calling `bourne_execute_plan`. It also warns to regenerate after a server restart. However, it does not explicitly state when NOT to use this tool or contrast with `bourne_plan`, so the when-to-use framing is strong but lacks an explicit exclusion for alternative planning paths.

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

bourne_trace_artifactA
Read-onlyIdempotent

Trace a recorded output artifact to its producer, inputs, and experiment ancestry without guessing across ambiguous matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already establish the read-only, idempotent, and non-destructive nature of the tool. The description adds a useful behavioral trait — 'without guessing across ambiguous matches' — but it does not explain what happens on ambiguity (returned matches, an error, or a disambiguation prompt). This keeps it slightly above the baseline but not fully transparent.

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

Conciseness5/5

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

A single, front-loaded sentence states the primary action, the target resource, and the expected output, ending with a caveat that carries meaningful behavioral value. There is no filler, repetition, or unnecessary 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?

For a one-parameter, read-only tool with annotations and an output schema already provided, the description covers the essential scope and behavioral guarantee. The main gap is path-format documentation, but the risk is moderate given the low complexity and the supporting structured metadata.

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, 'path', with 0% description coverage, so the description must compensate. It only says the tool traces 'a recorded output artifact' and does not clarify whether path is a filesystem path, an artifact ID, a URI, or where the path comes from. This is insufficient for reliable invocation.

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 names a specific verb ('trace') applied to a specific resource ('a recorded output artifact') and specifies the expected results: producer, inputs, and experiment ancestry. This clearly differentiates it from sibling tools like execution_get and inventory, which address different concerns.

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

Usage Guidelines2/5

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

No guidance is given about when to prefer this tool over alternatives, nor are any exclusions or prerequisites mentioned. The description tells the agent what the tool does but not how to decide between this and related discovery/tracing tools, leaving the selection to inference.

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

bourne_validate_requestA
Read-onlyIdempotent

Validate and normalize an ExecutionRequest v2 without discovery, planning, persistence, or execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYesFramework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
errorNo

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already convey readOnly, idempotent, and non-destructive behavior, but the description adds useful scope context that the annotations to capture: the tool explicitly does not perform discovery, planning, persistence, or execution. It also implies that normalization is a pure transform rather than a stateful pipeline action. The output schema covers the return behavior without needing description repetition.

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

Conciseness5/5

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

One sentence with a clear verb and object, followed by a compact list of excluded behaviors. There is no filler, no repeated schema information, and the most decision-relevant scope information appears early.

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 single-parameter validation tool with a full nested schema and output schema, there is enough information for an agent to call it correctly. The description cleanly separates it from the sibling plan, discover, execute, and reconcile tools, and the missing return-format details are unnecessary because an output schema is present.

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

Parameters3/5

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

The schema covers the single request parameter very thoroughly, including all nested ExecutionRequest fields plus its own descriptive string. The description adds little parameter-specific meaning beyond identifying the request type and the action to apply to it. A 100% schema description coverage gives a baseline of 3, and the description does not significantly exceed it or need to.

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 concrete action, Validate and normalize, and names a specific resource, ExecutionRequest v2. It also distinguishes itself from pipeline steps by explicitly excluding discovery, planning, persistence, and execution, which maps cleanly to sibling tools like bourne_discover, bourne_plan, and bourne_execute_plan.

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

Usage Guidelines4/5

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

The tool clearly signals when it should be used: whenever an ExecutionRequest needs pre-flight validation or normalization, and it explicitly rules out other pipeline stages. It does not name alternatives explicitly such as use bourne_plan instead when you need planning, but the exclusion list is strong enough not to require much inference.

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. 7 tool updatesv0.8.1
    • Changedbourne_inventory1 field changed
      • addedInput schema / properties / reference / description
        Added value: +"Existing inventory reference: latest, canonical ID, unique ID prefix, or @N."
    • Changedbourne_plan1 field changed
      • addedInput schema / properties / inventory_reference / description
        Added value: +"Existing inventory reference: latest, canonical ID, unique ID prefix, or @N."
    • Changedbourne_site_candidates3 fields changed
      • addedInput schema / properties / inventory_reference / description
        Added value: +"Existing inventory reference: latest, canonical ID, unique ID prefix, or @N."
      • addedInput schema / properties / provider / description
        Added value: +"Optional bounded declarative constraints used to generate candidates; the document cannot execute code or grant itself trust."
      • addedInput schema / properties / reference / description
        Added value: +"Exact configured site name or canonical site ID."
    • Changedbourne_site_discover1 field changed
      • addedInput schema / properties / reference / description
        Added value: +"Exact configured site name or canonical site ID."
    • Changedbourne_site_inspect1 field changed
      • addedInput schema / properties / reference / description
        Added value: +"Exact configured site name or canonical site ID."
    • Changedbourne_site_policy_claim16 fields changed
      • addedInput schema / $defs / PolicyApplicabilityDocument / properties / scope / description
        Added value: +"Site-policy scope. Global applies everywhere; other values restrict the claim to one scheduler, queue, partition, node class, or account."
      • addedInput schema / $defs / PolicyApplicabilityDocument / properties / value / description
        Added value: +"Exact scope value when scope is not global; omit it for global claims."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / applicability / description
        Added value: +"Scope that determines which candidate resource shapes use the claim."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / content_digest / description
        Added value: +"Optional sha256:<hex> digest of source content that remains outside Bourne."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / document_date / description
        Added value: +"Optional date stated by the provenance source."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / evidence_kind / description
        Added value: +"Provenance classification for how the claim was obtained."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / interpretation_status / description
        Added value: +"Whether planning must enforce the claim, may use it as advice, or must preserve it as unresolved."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / property / description
        Added value: +"Bounded property asserted about the subject."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / retrieved_at / description
        Added value: +"Optional source-retrieval timestamp supplied by the caller."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / source_identifier / description
        Added value: +"Optional stable identifier for the provenance source."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / source_identity / description
        Added value: +"Non-secret identity of the person, system, or document that supplied the claim."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / source_url / description
        Added value: +"Optional provenance URL stored as text only; Bourne does not fetch it."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / subject / description
        Added value: +"Entity or site capability that the policy claim describes."
      • addedInput schema / $defs / SitePolicyClaimDocument / properties / value / description
        Added value: +"Boolean, numeric, or bounded string value being asserted."
      • addedInput schema / properties / claim / description
        Added value: +"Bounded typed policy fact and provenance metadata to append to the configured site."
      • addedInput schema / properties / reference / description
        Added value: +"Exact configured site name or canonical site ID."
    • Changedbourne_site_select16 fields changed
      • addedInput schema / $defs / ContainerExecutionDocument / properties / clean_environment / description
        Added value: +"Request a clean container environment when the runtime supports it."
      • addedInput schema / $defs / ContainerExecutionDocument / properties / image / description
        Added value: +"Existing image path; Bourne verifies it but never builds or pulls it."
      • addedInput schema / $defs / ContainerExecutionDocument / properties / image_digest / description
        Added value: +"Optional expected sha256:<hex> digest for the existing image."
      • addedInput schema / $defs / ContainerExecutionDocument / properties / mounts / description
        Added value: +"Explicit bind mounts applied when the immutable plan executes."
      • addedInput schema / $defs / ContainerExecutionDocument / properties / runtime / description
        Added value: +"Existing container runtime that the selected site will use."
      • addedInput schema / $defs / ContainerMountDocument / properties / destination / description
        Added value: +"Absolute path where the source is mounted in the container."
      • addedInput schema / $defs / ContainerMountDocument / properties / read_only / description
        Added value: +"Whether the bind mount must be read-only; defaults to true."
      • addedInput schema / $defs / ContainerMountDocument / properties / source / description
        Added value: +"Existing host path to bind into the scientific container."
      • addedInput schema / properties / candidate_id / description
        Added value: +"Viable candidate ID returned for request_id by bourne_site_candidates."
      • addedInput schema / properties / container / description
        Added value: +"Optional existing Apptainer or Singularity image and explicit mounts to freeze into the plan; Bourne never builds or pulls it."
      • addedInput schema / properties / explicit_user_declarations / description
        Added value: +"Parameter names the user explicitly declared to affect execution only, rather than scientific meaning."
      • addedInput schema / properties / rationale / description
        Added value: +"Optional explanation stored with the selection; Bourne does not treat the rationale itself as verification evidence."
      • addedInput schema / properties / request_id / description
        Added value: +"Request ID returned by bourne_site_candidates in the current live MCP server session."
      • addedInput schema / properties / selection_source / description
        Added value: +"Provenance label identifying the human, agent, or deterministic rule that made the selection; this label does not grant authority."
      • addedInput schema / properties / trusted_provider_contract / description
        Added value: +"Explicitly trust the declarative provider's semantic classifications; the provider cannot set this decision for itself."
      • addedInput schema / properties / variant_approvals / description
        Added value: +"Provider-bound parameter names whose candidate value changes the user explicitly approved."
  2. 4 tool updatesv0.8.0
    • Changedbourne_plan4 fields changed
      • changedInput schema / properties / request / description
        Previous value: -"Framework- and scheduler-independent execution intent for Project Bourne."New value: +"Framework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends."
      • changedInput schema / properties / request / properties / execution / properties / backend / enum
        Previous value: -[
        -  "auto",
        -  "direct",
        -  "slurm",
        -  "pbs"
        -]New value: +[
        +  "auto",
        +  "direct",
        +  "slurm",
        +  "pbs",
        +  "lsf"
        +]
      • changedInput schema / properties / request / properties / version / const
        Previous value: -1New value: +2
      • changedInput schema / properties / request / title
        Previous value: -"Project Bourne ExecutionRequest"New value: +"Project Bourne ExecutionRequest v2"
    • Changedbourne_site_candidates4 fields changed
      • changedInput schema / properties / request / description
        Previous value: -"Framework- and scheduler-independent execution intent for Project Bourne."New value: +"Framework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends."
      • changedInput schema / properties / request / properties / execution / properties / backend / enum
        Previous value: -[
        -  "auto",
        -  "direct",
        -  "slurm",
        -  "pbs"
        -]New value: +[
        +  "auto",
        +  "direct",
        +  "slurm",
        +  "pbs",
        +  "lsf"
        +]
      • changedInput schema / properties / request / properties / version / const
        Previous value: -1New value: +2
      • changedInput schema / properties / request / title
        Previous value: -"Project Bourne ExecutionRequest"New value: +"Project Bourne ExecutionRequest v2"
    • Changedbourne_site_select2 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "ContainerExecutionDocument": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "clean_environment": {
        +        "default": true,
        +        "title": "Clean Environment",
        +        "type": "boolean"
        +      },
        +      "image": {
        +        "maxLength": 16384,
        +        "minLength": 1,
        +        "title": "Image",
        +        "type": "string"
        +      },
        +      "image_digest": {
        +        "anyOf": [
        +          {
        +            "pattern": "^sha256:[0-9a-f]{64}$",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Image Digest"
        +      },
        +      "mounts": {
        +        "items": {
        +          "$ref": "#/$defs/ContainerMountDocument"
        +        },
        +        "maxItems": 128,
        +        "title": "Mounts",
        +        "type": "array"
        +      },
        +      "runtime": {
        +        "enum": [
        +          "apptainer",
        +          "singularity"
        +        ],
        +        "title": "Runtime",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "runtime",
        +      "image"
        +    ],
        +    "title": "ContainerExecutionDocument",
        +    "type": "object"
        +  },
        +  "ContainerMountDocument": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "destination": {
        +        "maxLength": 16384,
        +        "minLength": 1,
        +        "title": "Destination",
        +        "type": "string"
        +      },
        +      "read_only": {
        +        "default": true,
        +        "title": "Read Only",
        +        "type": "boolean"
        +      },
        +      "source": {
        +        "maxLength": 16384,
        +        "minLength": 1,
        +        "title": "Source",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "destination"
        +    ],
        +    "title": "ContainerMountDocument",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / container
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/ContainerExecutionDocument"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Changedbourne_validate_request4 fields changed
      • changedInput schema / properties / request / description
        Previous value: -"Framework- and scheduler-independent execution intent for Project Bourne."New value: +"Framework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends."
      • changedInput schema / properties / request / properties / execution / properties / backend / enum
        Previous value: -[
        -  "auto",
        -  "direct",
        -  "slurm",
        -  "pbs"
        -]New value: +[
        +  "auto",
        +  "direct",
        +  "slurm",
        +  "pbs",
        +  "lsf"
        +]
      • changedInput schema / properties / request / properties / version / const
        Previous value: -1New value: +2
      • changedInput schema / properties / request / title
        Previous value: -"Project Bourne ExecutionRequest"New value: +"Project Bourne ExecutionRequest v2"
  3. 17 tool updatesv0.1.0
    • First observedbourne_discover
    • First observedbourne_execute_plan
    • First observedbourne_execution_cancel
    • First observedbourne_execution_get
    • First observedbourne_execution_reconcile
    • First observedbourne_execution_wait
    • First observedbourne_inventory
    • First observedbourne_plan
    • First observedbourne_request_schema
    • First observedbourne_site_candidates
    • First observedbourne_site_discover
    • First observedbourne_site_inspect
    • First observedbourne_site_list
    • First observedbourne_site_policy_claim
    • First observedbourne_site_select
    • First observedbourne_trace_artifact
    • First observedbourne_validate_request

TDQS

A3.9/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have clearly separated lifecycle roles: schema/validate/plan/execute/get/wait/cancel/trace are distinct. A few phrases overlap, notably bourne_plan versus bourne_site_candidates/bourne_site_select and bourne_discover versus bourne_site_discover, but the descriptions actively explain when to use each.

Naming Consistency3/5

Every tool is prefixed with bourne, but the underlying pattern is inconsistent: validate_request and execute_plan are verb+object, site_list and execution_get are object+verb, while discover, inventory, and request_schema are bare or noun-only. Names remain readable, but the convention is not uniform.

Tool Count3/5

17 tools is just above the ideal range and feels somewhat heavy for a single server. The planning workflow is split across plan, site_candidates, and site_select, which inflates the tool count even though the overall domain is coherent.

Completeness5/5

The tool set covers the stated execution lifecycle well: schema validation, request normalization, discovery, inventory, site policy, candidate planning, selection, immutable plan creation, execution, monitoring, wait, cancellation, reconciliation, and artifact tracing. No obvious operation needed by the domain seems missing.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables agents to submit and manage persistent, dependency-aware task graphs with immutable artifacts, resource reservations, durable event streaming, and retryable process execution over MCP.
    12
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables users to run bounded, evidence-producing Ansys research workflows on qualified local products through STDIO, using fixed MCP tools and reviewed tutorial IDs with job tracking, provenance, and artifact retrieval.
    10
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to run declarative agents and DAG workflows as plain tools, with parallel nodes, review loops, and per-run least-privilege sandboxing.
    11 npm
    MIT