bourne mcp
Project Bourne
Project Bourne は、再現可能な科学・工学ワークロードのためのオープンソースの実行・来歴(プロベナンス)インフラストラクチャです。
これは次の問いに答えます:この科学的結果は、一体どのようにして生まれたのか。
クラスターに 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 databaseRemote Worker と Compute Worker は、エージェントでも常驻サービスでもありません。どちらも短命で、バージョン付きのBourneワーカーです。Bourne が計算ノードに直接 SSH することはありません。Slurm/PBS/LSF は Compute Worker を割り当て(allocation)の中に配置し、提出を受けた後はジョブの生涯期間を管理します。研究者のワークステーション/コントロールプレーンは切断しても、後で同じ実行に再接続して照合(reconcile)できます。
HPC の経路では、AI、MCP サーバー、AI の資格情報、受信ポート、root アクセス、常驻デーモン、クラスター上のパブリックインターネットへのアクセスは一切必要ありません。研究者の既存の OpenSSH 設定とスケジューラーへのアクセスを使用します。エージェントが受けるのは、型付きの Bourne 操作であり、無制限のリモートシェルではありません。
Bourne のコントロールプレーンは Linux と macOS でサポート・検証されています。ネイティブ Windows はまだ検証もサポートもされていません。
Bourne はエージェントネイティブであり続けますが、エージェントに依存しません。CLI と Python サービスは、エージェントや MCP なしでも動作します。
Related MCP server: LinkedRun
クイックスタート
人間向け
PyPI から Project Bourne v0.8.1 をインストールします:
python -m pip install "bourneprov==0.8.1"
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 フラグは、その宣言型プラン内の意味、分類に対する明示的なレビュー判断であり、プラグイン自体に権限を付与するものではありません。より狭いユーザー判断には、--approve-variant-change PARAMETER または --declare-execution-only PARAMETER を使用してください。選択した候補が依存先の JSON 入力を変更する場合、Bourne は元の入力を保持し、別途ハッシュ化された WorkloadVariant をプランに自動的にバインドします。
Slurm/PBS/LSF は受け入れ後もジョブを所有します。研究者のワークスション/コントロールプレーン、VPN、SSH 接続、MCP ホスト、エージェントは切断しても、Bourne は後で再接続して正確な実行を解決します。あいまいな接続の失敗は、絶対にブラインド再送信を引き起こしません。
エージェント/MCP
v0.8.1 のエージェントと MCP のエントリポイントは、引き続きローカルの stdio です:
python -m pip install "bourneprov[mcp]==0.8.1"
bourne mcp
# Or use the public transparent launcher:
npx -y @project-bourne/mcp@0.8.1開発
Project Bourne は、開発・依存関係のロック・テスト・ビルドのフロントエンドとして uv を使用しています。uv をインストールした後、コミットされたロックファイルを同期し、テストスイートを実行します:
uv sync --locked --all-extras --dev
uv run --frozen --no-sync python -W error::ResourceWarning -m unittest discover -s tests -v
uv build --no-sourcesCI では、これらのコマンドの locked/frozen バリアントを使用するので、古くなった uv.lock は漂流するのではなく失敗します。uv は開発ツールにすぎず、bourneprov の実行時依存関係にはないため、pip install にも不要です。npm ランチャーにも使用されず、HPC のログインノードや計算ノードでも一切不要です。完全なコントリビューターワークフローについては、CONTRIBUTIONG.md を参照してください。
Original text uses CONTRIBUTING.md (spelled with RIB? Actually the original: CONTRIBUTIONG.md - Wait, the user gave "CONTRIBUTING.md"? Let me check the user text: "See CONTRIBUTING.md". Actually earlier user wrote: "CONTRIBUTING.md" using CONTRIBUTIONG? Let me scroll: The user message: "See CONTRIBUTING.md". I need to extract exactly. From the user: "See CONTRIBUTING.md". Hmm no. The user message I a copy: "See CONTRIBUTIONG.md". Let me re-read user initial:
"See
CONTRIBUTING.md"
Yes. As part of source, it probably is "CONTRIBUTIONG"? The actual file is "CONTRIBUTING.md" standard. The user typed "CONTRIBUTING.md" I think. My reading in the large text: "See CONTRIBUTIONG.md." Let me check: "CONTRIBUTING.md" in the user text: The browser in the initial statement: "(See CONTRIBUTING.md". Yes "CONTRIBUTING.md"! Good. My raw output earlier used "CONTRIBUTING.md" properly.
Ok.
Why Bourne
Bourne は、科学プログラムを変更することなく、任意の実行可能ファイルをラップします。ローカル優先で、フレームワーク非依存です。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 は、バーションノードが各優先るプロセス、割り当て、CPU、メモリ、I/O、GPU、環境のエビデンスを、明示的な observed、partially_observed、unavailable、unsupported、unktrim のカーバレッジとして記録します。テレメトリーの欠損は、有効な可変、するロードを失敗させず、偽りのゼロにすることもありません。
IBM LSF は Slurm と PBS に加えて、制限されたキュー探索、subsc、実行中ジョブを明示する bjobs、最近完了したジョブの bjobs -a、永続的な ``bhist 照合、bkill`、を提供します。既存の Apptainer/Singularity イメージは、選択したサイト対応プランに凍結できます。Bourne は計算側で既存のランタイム/イメージを検証し、その科学コマンドを正確な argv として渡します。イメージのビルド、ブル、インストール、今回は管理は行いません。v0.8 はマルチノードコンテナの起動を編成せず、MPI ランチャーとコンテナの順序を選択せず、またはMPI ランチャーを注入しません。詳細は実行時エビデンスと、スケジューラーのカバレッジを参照してください。
コアアーキテクチャ
Bourne Core は、決定性のある実行、エビデンス、プランニング、ストレージ、プロベナスの責任を負います。CLI、SDK、MCP は、同じサービスに対するアダプタです:
Project Bourne Core
│
┌────────────┼────────────┐
│ │ │
CLI SDK MCP
humans agentsリモートワーカーは、ワンショットで、ユーザースペース、非 AI、非デーモンです。ディスカバリ、プランの検証、ステージング、スケジューラーサブ化、調停のためのバージョン操作のみを受け付ます。科学コマンドはイミュタブルなプラン内でそのままの argv です。科学的 argv がリモートシェル文に埋め込まれることはありません。リモートワーカーのプロトコルは依然として v1 です。リリース済みの worker-result v1/v2 と、staged-plan v1/v2/v3 の payload を読み取る機能を維持しながら worker-result v3 と、staged-plan v4 を追加します。にはまだ
エージェントと MCP の統合
正規のローカル stdio サーバーは、bourne mcp です。安定版の公式 MCP Registry ID は io.github.KozakHou/project-bourne, ポータブルなエージェントスキルは skills/project-bourne にあります。v0.8.1 npm パッケージと対応する Registry です。
MCP 対応のエージェントは、「このシミュレーションを 4 つの GPU で実行し、プロベナンスを保持して」という明示的な要求を Exec当前。
「本ステム内」という要求を 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.jsonExecute or discoverを一切行わない最小リクエストを作成します:
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 のバイト数、既知のアーティファクトのバイト数、要求されたリソース、観測された get、並びにタイムスタンプが存在する場合にはスケジューラーの待ち時間)を使います。"telemetry": {"mode": "off"} でサマリを無効にできます。欠損メトリクスは、利用不能のままゼロにはなりません。
初期決定的検証チェックは output_exists、output_min_bytes、output_sha256 です。これらは、キャプチャされた Artifact レコードのみを評価します。検証はプロセスのステータスとは分離して行われます:実験は、completed でも検証が failed または unkown でもかまわない。これらのチェックはアーティファクトの事実を、確立するもので、一般的な科学的妥当性ではありません。正確な契約と安全制限は実行リクエスト・テレメトリー・検証を参照してください。
プラニングと実行
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 @1bourne plan は科学コマンドを実行せず、ディスポカバリも実行しません。フレームワーク非依存な Work計算 を作成し、明示られた・または客ヶンロードされた要求を既存のインベントリと比較し、すべての候補を説明し、選択が一意である場合にのみ、不変の 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 @1GXP後、実行中ジョブが Bourne の権威である間に、アクティブな記録ジョブ bourne execution cancel @1 でそれのキャンセを要求します。同じプランニングとライフサイクルのモデルが、--backend pbs と --backend lsf をサポートします。
直接実行は、Bourne の既存のライブ出力、プロセスグループ、アーティファクト、リネッジ、および実験来歴の仕組みを再利用します。Slurm、PBS、LSF のプランは、プランとステージングされた自己完結型Bourneワーカーを使います。ワーカーはプリフライトを実行し、実際に割り当てられたホストと科学実験を記録します。アクセス側のコントローラは、そのぶせきHと呼ばれる JSON どうかをトランザクションで取り込みます。計算ノードへの SSH や、ぷre-search の bourneprov にパッケージは不要ですが、計算の割preliminatedで Python 3 と、ステージングおよび作業ディレクトリが可視であることが必要です。
提出は実験ではなく、スケジューラーの完了は科学の成功ではありません。要求したリソースは、割り当てたリソースではありません。Bourne はこれらを別個の永続宝事実として載録します。キャンセルは、任意のスケジューラー・ジョブIDではなく、Bourne の実行参照を受け取り、提出者の身元をチェックします。詳細なモデル、安全な境界、現時点での制限は ワークロードプランニングとスケジューラー実行 をご覧ください。
計算 - サイト探索 Gv0.3.0
Bourne は、現在のアイデンティティから見える実行サーフェスの、不変のローカルスナップショットを作成できます.
bourne discover
bourne inventory
bourne inventory --find python
bourne inventory --json探索は、現在のアイデンティティとアクセスターゲット、許可されたユーザー関連ストレージパス、直接実行コンテキスト、一般 PATH 実行プログラム、任意の Conda/virtualenv/container/module コンテキスト、安全機能の機能、Bourne の履歴、および利用可能なときの読み取り専用の Slurm/PBS/LSF 対象クラス要約を対象とします。未知の実行プログラムは、実行せずに一般的な記録として残されます。ノード型は、GPU ワークステーション、DGX クラスの個人マシン、共有ラボシステム、および骨組み付きの HPC サイトがすべての有効な計算/右です。スケジューラのないマシンもそれだけ単体で完成しています。
探索は観測的なもの:実行プログラムは検証されたワークロードと互換性がなはく、表示されるスケジューラーパーティションは提出権限の証明ではありません。ストレージの役割のヒントは、保持やバックアップポリシーではありません。インベントリはローカルにとどまです。プロバイダは、他のユーザーのホームを横断せず、共有ストレージをクロールも、SSH クレデンシャルやコンテナのシークレットを調べたり、任意の環境変数をダンプしたり、計算ノードへの SSH、スケジュラジョブの提出・キャンセル、環境の変更などは一切行いません。正確なトポロジー、エビデンス、限界、セキュリティセマンスティックは、計算サイト探索 を参照してください。
##プロベナンス、アーティファクトとリネエジ
Project Bourne v0.2 は、明示的な入力/出力フィンガプリント、最小の derived と、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 読みはチャンクでストリーミングされ,宣言されたファイルはコピーやアップロードは行いません。
パスはアーティファクトの同一性ではありません。各キャプチャには ULID があり、SHA-256 でコンテンツバージョンを区別します。過去のあるパスが複数のバーションを指させ、現在のファイル内容からそれらを区別できない場合、broken れが候補を列挙し、言及を猜測しません。
正確なキャプチャ、トレース、マイグレーション、およびセキュリティのセマンティクスについては、アーティファクト、リネージュ、実行コンテキスト を参照してださい。
人間にわかりやすい実験参照
正規の実験IDは引き続き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.yamlBourne はプレフィックスが曖昧な場合に推測しません。bourne list はデフォルトで10文字のプレフィックスを表示し、bourn list --full-id で正規IDを表示します。
シェル補完
補完候補には、正規の実験ID、latest、最近の @N 参照が含まれます。現在のシェル・セッションで補完を有効にするには:
# Bash
source <(bourne completion bash)
# Zsh
source <(bourne completion zsh)
# Fish
bourne completion fish | sourcebourne 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 @1POSIX システムでは、Bourne は専用のプロセスグを使うため、Ctrl+C は通常、無関係なプロセスに影響を与えず、子プロセスを終了します。
実行の成功は検証ではありません。また、決定的なアーティファクト検証は一般の科学の有効性を指し示すものでもありません。Bourne はこれらを別々の状態として記録します。
ローカル・ストレージとマイグレーション
~/.local/share/bourne/experiments.sqlite3export BOURNE_DB=/path/to/experiments.sqlite3v0.1.1 から v0.7.0 までの古い Bourne データベースを v0.8.0 で開くと、スキーマ7 までの決定的なトランザクション・マイグレーションが実行されます。既存の実験、アーティファクト、リネージュ、インベントリー、ワ=ロード、プラン、実行結、スケジューラジョブ、アロケーション、イベント、実験リンクは、引き続き読み取り可能です。マイグレーションは v0.4 レコードの ExecutionRequest 履歴を追加しません。未知または新しいスキーマ・バージョンは明示的に失効し、Bourne は既存データベースをリセットしません。新しい発見たびに、別々の不変なスナプショットが作られます。
ライセンス
Project Bourne v0.5.0 以降は、Apache License 2.0 の下で配布されます。v0.4.0 までのリリースは、リリース時点の MIT License 条の下で続します。 詳細は ライセンスの履歴 を参照してください。
リリース検証
リリース・バージョンは 0.8.1 です。ベース・ランタイムはサードパーティー依存がゼロで、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-sourcesCompute ワーカー の stdout と stderr はライブのままで、結果バンドル内でストリームあたり8 MiB に制限されます。トランカートが生じた場合は明示的なランタイム証拠です。通常のローカル bourn run は、既存のキャプチャ動作を維持します。ディスク・スプール・ログ、自動アーティファクト発見・アーカイブ、科学技術に基づく依存のインストールやソース・ビルド、一般的なデータ同期、制約なしリモート、シェルフリー・モート、切断耐性リモート監視、アロケーション全体の分散テレメトリ、キュー/パフォーマンス予測、任意の検証スクリプト、ホストさたれたHTTP MCP、組込みLLM、幅広い科学検証の推定は、v0.8 の範囲外です。詳 ランタイム検証とスケジューラ・カバー、サウト対応アーキテクチャ、VISION を参照してください。
LSF と Apptainer のライブ検証はまだ実行されていません。冒頭のサンプリングは、実行スコープのみであり、複数ノードのアロール全体には自動統計されません。また、Bourne は MPI ランチャを挿入したり、コンテナ/MPI の順序を自動選択することはありません。ポータブルな LSF メモリ/GPU リソース構文は、サウト固有の未解決の項目として残ります。
Available Tools
17 toolsbourne_discoverA
Run bounded local compute-site discovery and persist a new immutable inventory snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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_planADestructive
Execute one immutable persisted Bourne plan without changing its command, resources, placement, backend, or inventory.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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_cancelADestructive
Cancel only the exact scheduler job owned by an existing Bourne execution; arbitrary scheduler job IDs are not accepted.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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_getARead-onlyIdempotent
Read a Bourne execution, including request, plan, lifecycle, scheduler, allocation, experiment, telemetry, and verification state.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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_inventoryARead-onlyIdempotent
Read an existing inventory by latest, full ID, unique prefix, or @N; this never performs discovery.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | No | Existing inventory reference: latest, canonical ID, unique ID prefix, or @N. | latest |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Framework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends. | |
| inventory_reference | No | Existing inventory reference: latest, canonical ID, unique ID prefix, or @N. | latest |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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_schemaARead-onlyIdempotent
Return Bourne's canonical ExecutionRequest version-2 JSON Schema.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Framework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends. | |
| provider | No | Optional bounded declarative constraints used to generate candidates; the document cannot execute code or grant itself trust. | |
| reference | Yes | Exact configured site name or canonical site ID. | |
| inventory_reference | No | Existing inventory reference: latest, canonical ID, unique ID prefix, or @N. | latest |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | Exact configured site name or canonical site ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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_inspectARead-onlyIdempotent
Inspect one configured site, its policy claims, and inventory identities.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | Exact configured site name or canonical site ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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_listARead-onlyIdempotent
List configured non-secret local and SSH site contexts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | Bounded typed policy fact and provenance metadata to append to the configured site. | |
| reference | Yes | Exact configured site name or canonical site ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| container | No | Optional existing Apptainer or Singularity image and explicit mounts to freeze into the plan; Bourne never builds or pulls it. | |
| rationale | No | Optional explanation stored with the selection; Bourne does not treat the rationale itself as verification evidence. | |
| request_id | Yes | Request ID returned by bourne_site_candidates in the current live MCP server session. | |
| candidate_id | Yes | Viable candidate ID returned for request_id by bourne_site_candidates. | |
| selection_source | Yes | Provenance label identifying the human, agent, or deterministic rule that made the selection; this label does not grant authority. | |
| variant_approvals | No | Provider-bound parameter names whose candidate value changes the user explicitly approved. | |
| trusted_provider_contract | No | Explicitly trust the declarative provider's semantic classifications; the provider cannot set this decision for itself. | |
| explicit_user_declarations | No | Parameter names the user explicitly declared to affect execution only, rather than scientific meaning. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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_artifactARead-onlyIdempotent
Trace a recorded output artifact to its producer, inputs, and experiment ancestry without guessing across ambiguous matches.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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_requestARead-onlyIdempotent
Validate and normalize an ExecutionRequest v2 without discovery, planning, persistence, or execution.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Framework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No |
TDQS
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.
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.
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.
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.
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.
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.
7 tool updates
v0.8.1- Changed
bourne_inventory1 field changed- added
Input schema / properties / reference / descriptionAdded value: +"Existing inventory reference: latest, canonical ID, unique ID prefix, or @N."
- Changed
bourne_plan1 field changed- added
Input schema / properties / inventory_reference / descriptionAdded value: +"Existing inventory reference: latest, canonical ID, unique ID prefix, or @N."
- Changed
bourne_site_candidates3 fields changed- added
Input schema / properties / inventory_reference / descriptionAdded value: +"Existing inventory reference: latest, canonical ID, unique ID prefix, or @N." - added
Input schema / properties / provider / descriptionAdded value: +"Optional bounded declarative constraints used to generate candidates; the document cannot execute code or grant itself trust." - added
Input schema / properties / reference / descriptionAdded value: +"Exact configured site name or canonical site ID."
- Changed
bourne_site_discover1 field changed- added
Input schema / properties / reference / descriptionAdded value: +"Exact configured site name or canonical site ID."
- Changed
bourne_site_inspect1 field changed- added
Input schema / properties / reference / descriptionAdded value: +"Exact configured site name or canonical site ID."
- Changed
bourne_site_policy_claim16 fields changed- added
Input schema / $defs / PolicyApplicabilityDocument / properties / scope / descriptionAdded value: +"Site-policy scope. Global applies everywhere; other values restrict the claim to one scheduler, queue, partition, node class, or account." - added
Input schema / $defs / PolicyApplicabilityDocument / properties / value / descriptionAdded value: +"Exact scope value when scope is not global; omit it for global claims." - added
Input schema / $defs / SitePolicyClaimDocument / properties / applicability / descriptionAdded value: +"Scope that determines which candidate resource shapes use the claim." - added
Input schema / $defs / SitePolicyClaimDocument / properties / content_digest / descriptionAdded value: +"Optional sha256:<hex> digest of source content that remains outside Bourne." - added
Input schema / $defs / SitePolicyClaimDocument / properties / document_date / descriptionAdded value: +"Optional date stated by the provenance source." - added
Input schema / $defs / SitePolicyClaimDocument / properties / evidence_kind / descriptionAdded value: +"Provenance classification for how the claim was obtained." - added
Input schema / $defs / SitePolicyClaimDocument / properties / interpretation_status / descriptionAdded value: +"Whether planning must enforce the claim, may use it as advice, or must preserve it as unresolved." - added
Input schema / $defs / SitePolicyClaimDocument / properties / property / descriptionAdded value: +"Bounded property asserted about the subject." - added
Input schema / $defs / SitePolicyClaimDocument / properties / retrieved_at / descriptionAdded value: +"Optional source-retrieval timestamp supplied by the caller." - added
Input schema / $defs / SitePolicyClaimDocument / properties / source_identifier / descriptionAdded value: +"Optional stable identifier for the provenance source." - added
Input schema / $defs / SitePolicyClaimDocument / properties / source_identity / descriptionAdded value: +"Non-secret identity of the person, system, or document that supplied the claim." - added
Input schema / $defs / SitePolicyClaimDocument / properties / source_url / descriptionAdded value: +"Optional provenance URL stored as text only; Bourne does not fetch it." - added
Input schema / $defs / SitePolicyClaimDocument / properties / subject / descriptionAdded value: +"Entity or site capability that the policy claim describes." - added
Input schema / $defs / SitePolicyClaimDocument / properties / value / descriptionAdded value: +"Boolean, numeric, or bounded string value being asserted." - added
Input schema / properties / claim / descriptionAdded value: +"Bounded typed policy fact and provenance metadata to append to the configured site." - added
Input schema / properties / reference / descriptionAdded value: +"Exact configured site name or canonical site ID."
- Changed
bourne_site_select16 fields changed- added
Input schema / $defs / ContainerExecutionDocument / properties / clean_environment / descriptionAdded value: +"Request a clean container environment when the runtime supports it." - added
Input schema / $defs / ContainerExecutionDocument / properties / image / descriptionAdded value: +"Existing image path; Bourne verifies it but never builds or pulls it." - added
Input schema / $defs / ContainerExecutionDocument / properties / image_digest / descriptionAdded value: +"Optional expected sha256:<hex> digest for the existing image." - added
Input schema / $defs / ContainerExecutionDocument / properties / mounts / descriptionAdded value: +"Explicit bind mounts applied when the immutable plan executes." - added
Input schema / $defs / ContainerExecutionDocument / properties / runtime / descriptionAdded value: +"Existing container runtime that the selected site will use." - added
Input schema / $defs / ContainerMountDocument / properties / destination / descriptionAdded value: +"Absolute path where the source is mounted in the container." - added
Input schema / $defs / ContainerMountDocument / properties / read_only / descriptionAdded value: +"Whether the bind mount must be read-only; defaults to true." - added
Input schema / $defs / ContainerMountDocument / properties / source / descriptionAdded value: +"Existing host path to bind into the scientific container." - added
Input schema / properties / candidate_id / descriptionAdded value: +"Viable candidate ID returned for request_id by bourne_site_candidates." - added
Input schema / properties / container / descriptionAdded value: +"Optional existing Apptainer or Singularity image and explicit mounts to freeze into the plan; Bourne never builds or pulls it." - added
Input schema / properties / explicit_user_declarations / descriptionAdded value: +"Parameter names the user explicitly declared to affect execution only, rather than scientific meaning." - added
Input schema / properties / rationale / descriptionAdded value: +"Optional explanation stored with the selection; Bourne does not treat the rationale itself as verification evidence." - added
Input schema / properties / request_id / descriptionAdded value: +"Request ID returned by bourne_site_candidates in the current live MCP server session." - added
Input schema / properties / selection_source / descriptionAdded value: +"Provenance label identifying the human, agent, or deterministic rule that made the selection; this label does not grant authority." - added
Input schema / properties / trusted_provider_contract / descriptionAdded value: +"Explicitly trust the declarative provider's semantic classifications; the provider cannot set this decision for itself." - added
Input schema / properties / variant_approvals / descriptionAdded value: +"Provider-bound parameter names whose candidate value changes the user explicitly approved."
4 tool updates
v0.8.0- Changed
bourne_plan4 fields changed- changed
Input schema / properties / request / descriptionPrevious value: -"Framework- and scheduler-independent execution intent for Project Bourne."New value: +"Framework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends." - changed
Input schema / properties / request / properties / execution / properties / backend / enumPrevious value: -[ - "auto", - "direct", - "slurm", - "pbs" -]New value: +[ + "auto", + "direct", + "slurm", + "pbs", + "lsf" +] - changed
Input schema / properties / request / properties / version / constPrevious value: -1New value: +2 - changed
Input schema / properties / request / titlePrevious value: -"Project Bourne ExecutionRequest"New value: +"Project Bourne ExecutionRequest v2"
- Changed
bourne_site_candidates4 fields changed- changed
Input schema / properties / request / descriptionPrevious value: -"Framework- and scheduler-independent execution intent for Project Bourne."New value: +"Framework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends." - changed
Input schema / properties / request / properties / execution / properties / backend / enumPrevious value: -[ - "auto", - "direct", - "slurm", - "pbs" -]New value: +[ + "auto", + "direct", + "slurm", + "pbs", + "lsf" +] - changed
Input schema / properties / request / properties / version / constPrevious value: -1New value: +2 - changed
Input schema / properties / request / titlePrevious value: -"Project Bourne ExecutionRequest"New value: +"Project Bourne ExecutionRequest v2"
- Changed
bourne_site_select2 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / containerAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/ContainerExecutionDocument" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
bourne_validate_request4 fields changed- changed
Input schema / properties / request / descriptionPrevious value: -"Framework- and scheduler-independent execution intent for Project Bourne."New value: +"Framework-independent execution intent with direct, Slurm, PBS, and IBM LSF backends." - changed
Input schema / properties / request / properties / execution / properties / backend / enumPrevious value: -[ - "auto", - "direct", - "slurm", - "pbs" -]New value: +[ + "auto", + "direct", + "slurm", + "pbs", + "lsf" +] - changed
Input schema / properties / request / properties / version / constPrevious value: -1New value: +2 - changed
Input schema / properties / request / titlePrevious value: -"Project Bourne ExecutionRequest"New value: +"Project Bourne ExecutionRequest v2"
17 tool updates
v0.1.0- First observed
bourne_discover - First observed
bourne_execute_plan - First observed
bourne_execution_cancel - First observed
bourne_execution_get - First observed
bourne_execution_reconcile - First observed
bourne_execution_wait - First observed
bourne_inventory - First observed
bourne_plan - First observed
bourne_request_schema - First observed
bourne_site_candidates - First observed
bourne_site_discover - First observed
bourne_site_inspect - First observed
bourne_site_list - First observed
bourne_site_policy_claim - First observed
bourne_site_select - First observed
bourne_trace_artifact - First observed
bourne_validate_request
TDQS
Scored across 17 tools
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.
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.
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.
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
Related MCP Connectors
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Create, browse, remix, collaborate on, and run durable AI workflow nodes from MCP hosts.
Project management shared by people and AI agents, with persistent project state through MCP.
AI workflow/MCP implementation package planner.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceEnables running LLM evaluations, experiments, and custom evaluators through a standardized MCP interface.16Apache 2.0- AlicenseAqualityCmaintenanceEnables agents to submit and manage persistent, dependency-aware task graphs with immutable artifacts, resource reservations, durable event streaming, and retryable process execution over MCP.12MIT
- AlicenseBqualityAmaintenanceEnables 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.101MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to run declarative agents and DAG workflows as plain tools, with parallel nodes, review loops, and per-run least-privilege sandboxing.11 npmMIT