Skip to main content
Glama

Chimeraforge

PyPI version Python CI License: MIT

ローカルファーストでモデル非依存のLLMデプロイメントプランナー。 「どのモデル、量子化、GPU、バックエンドか——何台必要か、収まるか、SLOを満たせるか、コストはいくらか」という問いを、シェル、Python、またはAIアシスタントから、高速で正直で測定された答えに変えます。

uvx chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB"

信頼の原則

すべての数値は measured、estimated、unknown のいずれかのラベルが付けられ、ツールは裏付けの取れない数値を偽装することを拒否します。 VRAMとKVキャッシュはモデルの実際のアーキテクチャから計算されます(正確)。スループットは利用可能な場合は測定値、それ以外の場合は明示的な帯域幅ローフライン推定値であり、実際のデータとして提示されることはありません。バンドルされたコーパス未満の品質は、捏造されたスコアではなく unknown と報告されます。0件のプランは、汎用的な「何も見つかりません」ではなく、すべての候補を拒否した正確なゲートを指名します。テレメトリなし、ホームコールなし、エアギャップ環境でも動作します。

モデルを指定します——サイズクラス、Hugging Faceリポジトリ、Ollamaタグ、または未公開モデル用の手動オーバーライド——すると、(モデル x 量子化 x バックエンド x GPU数 x テンソル/パイプライン並列) 空間をVRAM、品質、レイテンシ、コスト、エネルギー、オプトインのセーフティゲートに対して検索し、SLOを満たす最も安価な構成を返します。

1つのツールに12のコマンド: plan - suggest - measure - validate - catalog - safety - bench - eval - compare - refit - report - mcp。

経験的コーパスはテクニカルレポートTR108-TR137(コンシューマーGPUでの約204,000件の実測定)に由来します。完全な機能履歴についてはCHANGELOGを参照してください。


Related MCP server: llm-cost

インストール

インストールなしで試す:

uvx chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB"
pipx run chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB"

実際にインストール:

pip install chimeraforge            # planner + model resolution (HF/Ollama) + suggest/measure/safety/bench
pip install chimeraforge[bench]     # + GPU environment metadata for benchmarks (pynvml)
pip install chimeraforge[mcp]       # + MCP server so Claude/GPT/Cursor can call the planner
pip install chimeraforge[eval]      # + quality evaluation (BERTScore, ROUGE-L)
pip install chimeraforge[refit]     # + coefficient refitting (numpy, scipy)
pip install chimeraforge[all]       # everything

Python 3.10以上。コアインストールはプランナーとネットワーク関連コマンドをカバーします(httpx はコア依存)。plan / suggest / catalog は完全にオフラインで動作します。bench / measure / safety は実行中のバックエンド(Ollama、vLLM、またはTGI)が必要です。Windows / macOS / Linux。

クイックスタート

# Plan a registry size class on your GPU
chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB" --request-rate 2.0

# Plan ANY model -- a Hugging Face repo or an Ollama tag
chimeraforge plan --model Qwen/Qwen2.5-7B-Instruct --hardware "RTX 4090 24GB"
chimeraforge plan --model ollama:qwen3:14b --ollama-url http://localhost:11434

# Split a model too big for one GPU across several (tensor parallelism)
chimeraforge plan --model meta-llama/Llama-3.3-70B-Instruct --hardware "H100 80GB" --tp 4

# Shrink the KV-cache, print the cost/latency/quality trade-off menu
chimeraforge plan --model-size 8b --hardware "RTX 4080 12GB" --kv-quant q8 --pareto

# Benchmark a live model and plan on the MEASURED numbers
chimeraforge plan --model qwen3:14b --measure

# Discover + rank what fits your GPU and budget
chimeraforge suggest --source ollama --hardware "RTX 4090 24GB" --budget 500

MCPサーバー——Claude / GPT / Cursor に同じ数値を提供

GPUサイジングはまさにアシスタントが失敗する場所です:トレーニングカットオフのハードウェア価格と仕様、さらにメモリからの誤りやすいKVキャッシュ/バッチ演算。chimeraforge mcp はstdio MCPサーバーを実行し、アシスタントが推測する代わりに測定データに対して実際のプランナーを呼び出します。

pip install "chimeraforge[mcp]"

Claude Code:

claude mcp add --transport stdio chimeraforge -- uvx --from "chimeraforge[mcp]" chimeraforge mcp

Claude Desktop / Cursor(MCP設定ファイルに追加):

{
  "mcpServers": {
    "chimeraforge": {
      "command": "uvx",
      "args": ["--from", "chimeraforge[mcp]", "chimeraforge", "mcp"]
    }
  }
}

--from "chimeraforge[mcp]" はMCP SDKを取得します。uvx は自己完結環境でサーバーを実行します。クライアントが起動する環境にすでに pip install "chimeraforge[mcp]" している場合は、代わりに "command": "chimeraforge", "args": ["mcp"] を使用できます。

3つのツールを公開します:chimeraforge_plan(完全なゲート検索)、chimeraforge_resolve_model(モデルIDを実際のパラメータ/アーキテクチャに基づかせる)、chimeraforge_list_hardware。すべての結果はCLIと同じ measured / estimated / unknown の出所を持ち、ツールの説明はモデルに自身の知識よりもこれらを優先するよう指示します。chimeraforge_plan は推奨構成のサーブコマンドである launch フィールドも返すため、アシスタントは「どう実行するか」という質問にフラグを捏造せずに答えることができます。


コマンド

plan — 予測キャパシティプランナー

chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB" --request-rate 2.0
chimeraforge plan --model Qwen/Qwen2.5-7B-Instruct --hardware "RTX 4090 24GB"   # any HF repo
chimeraforge plan --model ollama:qwen3:14b --ollama-url http://localhost:11434  # any Ollama tag
chimeraforge plan --model meta-llama/Llama-3.3-70B-Instruct --hardware "H100 80GB" --tp 4   # multi-GPU
chimeraforge plan --model-size 3b --kv-quant q4 --pareto                       # smaller KV cache, trade-off menu
chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB" --launch          # + the serve command to actually run it
chimeraforge plan --model-size 3b --workload agent --safety-target 0.85 --json
  • あらゆるモデルを計画:レジストリサイズクラス、HFリポジトリ(org/name)、Ollamaタグ、または手動オーバーライド(--params-b/--n-layers/...)。

  • (モデル x 量子化 x バックエンド x Nレプリカ x バッチ/GPU) を5ゲートパイプラインで検索:VRAM -> 品質 -> セーフティ(オプトイン) -> レイテンシ -> 予算。

  • 実際のサーブ物理をモデル化:連続バッチング(vLLM/TGI)、プリフィル/デコード分割(TTFT + TPOT)、KVキャッシュ制約の並行性、分散を考慮したキューイング(--workload)。

  • 1つのGPUに収まらない大きなモデルにも対応: --tensor-parallel/--tp {N|auto} は重みとKVをN個のGPUにシャード化(Megatronスタイル、通信モデル化)。--pipeline-parallel/--pp {N|auto} は代わりにレイヤーをNステージに分割(遅いインターコネクトで安価、パイプラインを満たすにはバッチングが必要)。まだ組み合わせ不可。

  • バックエンドが提供するものをサーブ: GGUF量子化はOllamaで提供。vLLM/TGIはFP16とFP8(FP8テンソルコアを持つGPUのみ——Ada/Hopper/Blackwell/CDNA3)。プランナーはもはやllama.cppのスピードアップで価格設定されたvLLMにGGUFチェックポイントを提案しません。

  • KVキャッシュ量子化(--kv-quant {fp16,q8,q4})はキャッシュを縮小し最大並行性を向上——長いコンテキストで最大の効果。

  • コストの現実性(--duty-cycle、--gpu-price-multiplier):見出しの$/1Mトークは飽和したフリートの価格です。プロビジョニングされたヘッドルームとアイドル時間のコストも支払うため、2 req/sの8Bモデルの実効数値は、フルデューティで**$2.71/1M、30%で$9.04/1M**、キャパシティ時は$0.92です。スポット/リザーブド価格はあなたの入力であり、バンドルされた推測ではありません。

  • セルフホスト vs API損益分岐点(--compare-api):ワークロードをホスト型APIと価格比較し、セルフホストが勝ち始める月間ボリュームを報告。価格はプロバイダーごとのソースURL付きの日付入りスナップショットで、90日を超えると古いとフラグ付けされます——決してライブ見積もりとして提示されません——またフロンティアAPIは同等ではなく異なる品質層としてラベル付けされます。

  • プレフィックスキャッシュ(--prefix-cache-hit-rate):チャットボットとエージェントのトラフィックは長いシステムプロンプトを再利用するため、プリフィルの大部分はすでにキャッシュされています。4kプロンプトで90%のヒット率の場合、8BはTTFTが166msから17msになります。デフォルトは0で、決して推測されません。共有プレフィックスが節約するKVは意図的に差し引かれません——KVを過小評価することが「収まる」をOOMに変えるからです。

  • 推論モデル(--reasoning-tokens N):隠れた思考トークンはGPUによってデコードされ、呼び出し元には見えなくてもKVに保持されます。可視出力のみを数えると、推論比だけデコードを過小評価します——1000の隠れトークンは、私たち自身のチェックで8Bプランのp95を363msから6128msにしました。デフォルトは0で、決して推測されません:比率はワークロードの特性であり、重みの特性ではありません。

  • アテンション形状を考慮したKV: MLA(DeepSeek-V2/V3)はヘッドごとのK/Vではなく圧縮された潜在変数をキャッシュします——GQAとしてサイズ設定するとDeepSeek-V3のキャッシュを57倍過大評価します——またスライディングウィンドウモデルはウィンドウを超えてキャッシュを成長させません。レイヤーパターンが宣言されていないウィンドウは適用されません。なぜならKVの過小評価が「収まる」をOOMに変えるからです。

  • Mixture-of-Experts対応: VRAMは総パラメータでサイズ設定(すべてのエキスパートが常駐)され、スループットとTTFTはアクティブパラメータを使用(トークンはルーティング先のエキスパートのみを読み取る)。MoEモデルを高密度として扱うと、Mixtral-8x7Bでスループットを3.6倍、DeepSeek-V3で約18倍過小予測します。アクティブ数はモデルの実際のエキスパート形状から導出され、公開された数値と一致します。

  • エネルギー(--electricity-rate):月間kWhコスト、$/1Mトーク(+エネルギー)、およびトーク/秒/ワットを、予算ゲートに(組み込むのではなく)並べて報告。

  • 起動コマンドのエクスポート(--launch):勝者構成の vllm serve / ollama run / TGI docker run コマンドを、プラン自身のコンテキスト長、TP/PP次数、バッチサイズ、KV dtypeを埋め込んで出力——手計算でエラーを起こしやすいフラグ。導出できないものを捏造しません:GGUF量子化レベルは、発明された --quantization フラグではなく、ネイティブ相当のチェックポイントをサーブするためのメモになります。

  • 予測ごとの出所(measured / estimated / unknown);何も収まらない場合の制約ゲートを説明。

  • レジストリデータで検証済み:VRAM R^2=0.968、スループット R^2=0.859、品質 RMSE=0.062、レイテンシ MAPE=1.05%(解析的M/D/1を20.4倍上回る、TR133)。MLなし——経験的ルックアップテーブルと第一原理補間(レジストリ外モデルはローフライン)。

suggest — モデルの発見とランキング

chimeraforge suggest --source ollama --hardware "RTX 4090 24GB" --budget 500
chimeraforge suggest --source hf --hf-limit 8 --hardware "RTX 4080 12GB"
chimeraforge suggest --source catalog --hardware "RTX 4080 12GB"   # offline, after `catalog --build`

ライブOllama(/api/tags)、HF Hub(トップテキスト生成)、および/またはローカルカタログから候補を取得し、それぞれを実際のパラメータ/アーキテクチャに解決し、同じゲート検索を実行し、モデルごとに最適な構成を表示します。

measure — ライブでベンチマークし、実数で計画

chimeraforge measure --model qwen3:14b --ollama-url http://localhost:11434
chimeraforge plan --model qwen3:14b --measure   # measure then plan in one step

ライブモデルをベンチマークし(実際のN=1スループット、サービス時間、並行性スケーリング)、ローカルコーパスに組み込みます。plan / suggest は自動的に測定値を優先します(出所は measured に変わります)。

catalog — ローカルモデルカタログ

chimeraforge catalog --build         # resolve a curated seed (+ --with-ollama) and cache specs
chimeraforge catalog                 # list the cached catalog

解決された仕様を永続化し、suggest --source catalog が既知の良好なセットを完全にオフラインでランキングできるようにします。

safety — ライブ拒否スクリーニング

chimeraforge safety --model llama3.2-3b --prompts harmful.txt --quant Q4_K_M --safety-target 0.85

plan --safety-target がバンドルされたTR134/TR142データから決定するのに対し、safety は測定します:ライブモデルに対してプローブプロンプトを実行し、拒否を分類し(ルールベース——TR134正規表現ベースライン)、測定された拒否率をバンドルされたゲートデータ(期待値、ドリフト、RTSIリスク層)と比較し、--safety-target を下回ると終了コード1で終了します。プロンプトはあなたが提供します(--prompts、1行に1つ)——攻撃コーパスはパッケージに同梱されていません。HarmBench / AdvBench / 独自のセットを指定してください。実行中のOllamaが必要です。

bench — ライブ推論ベンチマーク

chimeraforge bench --model llama3.2-3b --runs 5
chimeraforge bench --model llama3.2-3b --all-quants --context 512,1024,2048,4096 --json
chimeraforge bench --model llama3.2-3b --backend vllm --base-url http://localhost:8000

3つのワークロードプロファイル(単一 / バッチ / サーバーPoisson);スループット、TTFT、レイテンシをp50/p90/p95/p99で測定;CVベースの安定性警告;JSON出力。

eval — 品質評価

chimeraforge eval --task general_knowledge --json
chimeraforge eval --predictions preds.txt --references refs.txt --model llama3.2-3b

メトリクス:完全一致、ROUGE-L(LCSフォールバック)、BERTScore、コヒーレンス -> 複合(0.2*EM + 0.3*ROUGE + 0.3*BERT + 0.2*コヒーレンス)。品質層はTR125から;3つの組み込みタスク(general_knowledge、summarization、code)。--fp16-baseline を渡すと低下層を分類します。

compare — ベンチマーク実行の差分

chimeraforge compare --baseline run1.json --candidate run2.json,run3.json --json

構成を(モデル、バックエンド、量子化、ワークロード、コンテキスト長)でマッチングし、スループット/TTFT/期間のデルタを集計的な改善/回帰サマリーとともに計算します。

refit — プランナー係数の更新

chimeraforge refit --bench-dir ./results/ --output fitted_models.json --validate

ベイズブレンディング(キーごとの信頼重み付け)、ハードウェアオフセット、べき乗則再フィッティング、および書き込みをゲートする10チェックの検証スイート(--validate)。

report — レポート生成

chimeraforge report --results-dir ./results/ --format markdown --output report.md

Markdown(GitHub互換)と自己完結型のXSS安全なHTML;統計分析(RMSE、MAE、MAPE、R^2)と構成ごとのパーセンタイルテーブル。

mcp — プランナーをAIアシスタントに提供

chimeraforge mcp

上記のstdio MCPサーバーを実行します。pip install "chimeraforge[mcp]" が必要です。


モデル化されているもの

次元

計算方法

由来

VRAM / KVキャッシュ

実際のモデルアーキテクチャからの第一原理計算。KV量子化とTP/PP対応シャーディング

正確

最大同時実行数

GPUあたりのKVキャッシュ制約シーケンス数

正確

スループット(デコード)

測定ルックアップ、それ以外は帯域幅ルーフライン。継続的バッチング曲線。TP通信 / PPバブル

測定 / 推定

TTFT(プリフィル)

計算バウンド、GPU FP16 TFLOPS x MFU

推定

品質

測定された複合ルックアップ、ファミリー事前推定、または不明

測定 / 推定 / 不明

コスト

GPU $/時 x フリート規模(レプリカ数で不変の$/100万トークン)

正確

エネルギー

TDPベースの月間kWh、$/100万トークン(+エネルギー)、トークン/秒/ワット

推定

安全性

TR134/TR142拒否率ルックアップ(オプトインゲート)

測定 / 不明

ハードウェア: 22 GPU -- コンシューマー向けAda + Blackwell(RTX 30/40/50シリーズ)、データセンター向け(A100 40/80GB、H100、H200、B200、L4、T4)、およびAMD MI300X -- それぞれVRAM、帯域幅、FP16 TFLOPS、TDP、インターコネクト(NVLink/Infinity Fabric/PCIe)を備える。

既知の制限(正直なところ): 投機的デコードはまだモデル化されていません。プレフィックスキャッシュはプリフィルの節約をモデル化しますが、KVの節約はモデル化しません(意図的に保守的)。推論トークンはモデル化されますが、比率はあなたの入力(--reasoning-tokens)であり、推測されることはありません。MoEの場合、アクティブ対総パラメータはモデル化されますが、エキスパート並列とルーティング負荷不均衡はモデル化されません。vLLM/TGIの量子化カバレッジはFP16 + FP8(AWQ/GPTQは未対応)。FP8品質は推定であり、測定ではありません。TPおよびPPスループットは通信モデル化された推定値であり、測定値ではなく、1つのプランで組み合わせることはできません。待ち行列は解析的(分散認識)であり、離散事象シミュレータではありません。同梱のコーパスは主に1台のリグ(RTX 4080 12GB)に適合しています。他のGPUは、あなたの環境でmeasureするまでは帯域幅/計算からスケーリングされます。MCPサーバーはstdioのみ(Claude Code/Desktop、ローカルCursor)-- ホスト型リモートトランスポートはまだありません。


研究が決定したこと

フェーズ2(TR123-TR133、約106,000件の測定)は、アーティファクトに基づくデプロイフレームワークに蒸留されました -- プランナーが適用するのと同じルールです:

決定

推奨

根拠

シングルエージェントバックエンド

Ollama Q4_K_M

最高のスループット/ドル。品質は-4.1pp以内(TR123-TR125)

マルチエージェントバックエンド(N>=4)

vLLM FP16

継続的バッチングによる2.25倍の優位性(TR130-TR132)

コンパイルポリシー

プリフィルのみ、Linux、Inductor+Triton

24-60%の高速化。デコードは100%クラッシュ(TR126)

量子化

Q4_K_Mデフォルト。Q8_0は品質重視。Q2_Kは不可

5モデルにわたる普遍的なスイートスポット(TR125)

コンテキスト予算

12GBで4Kトークン超はOllama

VRAMオーバーフロー = 25-105倍の崖(TR127)

キャパシティ計画

chimeraforge plan

R^2>=0.859で検証。M/D/1を20.4倍上回る(TR133)

安全性スクリーニング

plan --safety-target(オプトイン)

構成ごとの拒否率 + RTSIリスク。安全性を崩壊させるセルを拒否(TR134/TR142)

主要な発見(完全なデータはTRにあります):RustはPythonシングルエージェントを上回る(+15.2%スループット、-58% TTFT、-67%メモリ -- TR112)。デュアルOllamaはほぼ完璧なマルチエージェント並列性(約99%)を達成し、単一インスタンスの82.2%を上回る(TR110/TR113/TR114)。vLLMの継続的バッチングはN=8で2.25倍の優位性をもたらし、ボトルネックはスタックではなくGPUメモリ帯域幅にある(TR130-TR132)。

完全な研究: docs/archive/technical_reports.md は全32レポートの索引です。方法論と生データ参照を含む完全なアーカイブは outputs/publish_ready/reports/ にあります。


数値の作り方

  • 約204,000件の一次測定 は、RTX 4080 Laptop(12GB)上の32件のテクニカルレポート(TR108-TR137 + TR142/TR146安全性由来)にわたります。重複排除済み:TR137/TR142はすでにカウントされたデータの統合です。

  • 厳密性: 実行ごとの新規プロセス分離(ウォームキャッシュバイアスなし)、強制コールドスタート、統計的信頼性のための構成ごとに3-5回の実行、完全な由来を備えた構造化JSON/CSVロギング。すべての主張は再実行可能な生データに遡れます。

  • プログラムの文脈: ChimeraForgeは、親プログラムであるBanterhearts(54件のTRにわたる約1,337,000件の一次 + ジャッジ測定)から切り出した実践可能なCLIです。安全性の攻撃面とサービングスタックの研究は、関連リポジトリにあります。

  • 549件の自動テスト(pytest tests/)は、プランナーモデル、ゲート探索、リゾルバ、ディスカバリ、安全性、ベンチバックエンド、MCPサーバーをカバーしています -- GPU非依存で、コアスイートにライブバックエンドは不要です。

任意の数値を再現するには:outputs/publish_ready/reports/ のレポートで主張を見つけ、その参照をデータフォルダに辿り、CSV/JSONを検査し、提供されたスクリプトまたはノートブックを再実行してください。docs/archive/methodology.md を参照。

リポジトリ構成

パス

内容

src/chimeraforge/

chimeraforge CLI + キャパシティプランナー(pipパッケージ)

src/python/banterhearts/

Pythonエージェントのベンチマーク、モニタリング、プロファイリング

src/rust/

Rustシングルおよびマルチエージェント実装(Tokio + 4つの代替ランタイム)

outputs/publish_ready/reports/

正規のTRアーカイブ(TR108-TR137)+ 統合 -- 発見はここから

docs/

ガイド、APIリファレンス、テクニカルレポート索引 -- ハウツーはここから

experiments/、data/、benchmarks/

再現用スキャフォールド、ベースライン、生のベンチマークアーティファクト

ドキュメント

コントリビューション

コントリビューション歓迎 -- CONTRIBUTING.md を参照。適した分野:追加のベンチマーク構成、新しい最適化戦略、より多くのモデル/ハードウェア、ドキュメント、分析ツール。

ライセンス

MIT -- LICENSE を参照。

謝辞

Banterhearts LLMパフォーマンス研究プログラムの一環として実施:フェーズ1(TR108-TR122)は測定方法論と言語間比較を確立し、フェーズ2(TR123-TR133)はデプロイフレームワークとキャパシティプランナーを生み出し、フェーズ3(TR134-TR137)は推論最適化の安全性コストを測定しました -- 現在はプランナーのオプトイン安全性ゲートとなっています。


リポジトリ: https://github.com/Sahil170595/Chimeraforge - PyPI: https://pypi.org/project/chimeraforge/ - ステータス: ベータ版、活発に開発中

Available Tools

5 tools
chimeraforge_compare_apiA

Compare self-hosting against the hosted APIs for a workload: sizes the cheapest feasible GPU fleet, prices the same traffic through each API model, and gives the monthly output-token volume where the two break even. Use for 'is it cheaper to self-host or use the API', 'when does a GPU pay for itself'. API prices come from a dated snapshot -- the result reports its age and flags it when stale; say so rather than quoting an old price as current.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
hardwareYes
duty_cycleNo
model_sizeNo8b
request_rateNo
allow_networkNo
prompt_tokensNo
context_lengthNo
latency_slo_msNo
quality_targetNo
reasoning_tokensNo
avg_output_tokensNo

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations available, the description carries the full behavioral burden and does it well. It discloses that API prices come from a dated snapshot, that the result reports its age and flags staleness, and instructs the agent not to present old prices as current. This is a meaningful, non-obvious behavioral disclosure.

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

Conciseness5/5

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

Three sentences, each earning its place: the first explains what the tool computes, the second gives real user intents, and the third warns about stale pricing. The outcome is well structured and front-loaded.

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

Completeness3/5

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

The description is complete on purpose, behavior, and the staleness caveat, but it does not cover the 12-parameter input surface or any expected return format beyond the three high-level outputs. For a tool with no output schema and no annotations, that leaves a meaningful completeness gap.

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

Parameters2/5

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

Schema description coverage is 0% and there are 12 parameters, so the description needed to compensate. It only implies concepts like workload and traffic without explaining properties such as hardware, model, duty_cycle, latency_slo_ms, quality_target, or avg_output_tokens. An agent would struggle to set these correctly based solely on this description.

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

Purpose5/5

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

The description names a specific action (compare), a specific subject (self-hosting vs. hosted APIs), and the three concrete outputs: cheapest feasible GPU fleet sizing, price comparison for identical traffic, and break-even token volume. This clearly differentiates it from siblings like 'plan' and 'suggest'.

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

Usage Guidelines4/5

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

The description gives explicit, user-quoted use cases: 'is it cheaper to self-host or use the API' and 'when does a GPU pay for itself'. It does not explicitly name alternatives or say when to use a sibling tool instead, so it stops slightly short of a 5.

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

chimeraforge_list_hardwareA

List known GPUs with VRAM/bandwidth/TDP/interconnect.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose any behavioral traits such as output format, size limits, or whether it reflects real-time data. The simple listing implies read-only behavior but this is not explicitly stated.

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

Conciseness5/5

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

The description is a single, focused sentence that directly states the core action and output characteristics. There is no wasted text, and it is immediately understandable.

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

Completeness4/5

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

For a simple, parameterless listing tool with no output schema, the description is adequately complete. It identifies the resource (GPUs) and the key attributes (VRAM/bandwidth/TDP/interconnect). However, it could marginally benefit from a note on data recency or ordering, but this is not critical given the tool's simplicity.

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

Parameters4/5

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

The tool has zero parameters, so the baseline score is 4. The description correctly implies no input is needed. Since there are no parameters, no additional semantic information is required.

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

Purpose5/5

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

The description clearly states the tool's function: 'List known GPUs' with specific attributes (VRAM/bandwidth/TDP/interconnect). This is a specific verb+resource and clearly distinguishes from siblings like chimeraforge_plan and chimeraforge_resolve_model.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It does not mention any context, prerequisites, or exclusions. The description is purely functional with no usage direction.

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

chimeraforge_planA

Recommend the best (model x quantization x backend x GPU-count) deployment for a workload, or report why nothing fits. Returns candidates with per-number provenance (measured/extrapolated/estimated/unknown). Use for: 'what GPU do I need for ', 'will fit on ', 'how many GPUs for N req/s', 'what will it cost'. Set platform (linux/windows/wsl2/macos) to the deployment OS: engines are offered only where their own docs say they run.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoonline
cloudNo
modelNo
hardwareYes
kv_quantNofp16
platformNo
workloadNosteady
lora_rankNo
duty_cycleNo
model_sizeNo3b
grid_regionNo
lora_targetNoqv
tpot_slo_msNo
ttft_slo_msNo
quality_fromNo
request_rateNo
think_time_sNo
allow_networkNo
allow_offloadNo
gpu_overridesNo
lora_adaptersNo
prompt_tokensNo
safety_targetNo
session_turnsNo
context_lengthNo
latency_slo_msNo
quality_targetNo
model_revisionsNo
tensor_parallelNo
budget_usd_monthNo
reasoning_tokensNo
avg_output_tokensNo
pipeline_parallelNo
use_contributionsNo
host_bandwidth_gbpsNo
gpu_price_multiplierNo
prefix_cache_hit_rateNo
max_num_batched_tokensNo
unified_memory_fractionNo
carbon_intensity_g_per_kwhNo

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose two genuine behavioral traits: results come back labeled with per-number provenance (measured/extrapolated/estimated/unknown), which tells the agent how much to trust each figure, and engine availability is gated by the platform's own documentation. It stops short of stating the obvious-but-unconfirmed fact that this is a pure analysis call with no side effects, and says nothing about cost, latency, or what happens when nothing fits beyond a short reason.

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

Conciseness4/5

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

Three tight sentences with the core capability front-loaded, followed by return-shape and use-case routing, then a parameter caveat. No filler or repetition. The platform sentence is somewhat tacked on at the end and could be grouped with the framing, but nothing is wasteful.

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

Completeness2/5

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

For a 40-parameter tool with no annotations and no output schema, the description should be doing far more work than it is. It usefully characterizes the return value via provenance labels even without an output schema, but it leaves the semantics of nearly every input undocumented, gives no prerequisite or scoping guidance, and never states the invocation cost of such a large search space.

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

Parameters2/5

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

There are 40 parameters at 0% schema description coverage, and the description only gives meaning to one of them (platform). High-impact inputs such as gpu_overrides, allow_offload, use_contributions, quality_target, gpu_price_multiplier, prefix_cache_hit_rate, duty_cycle, safety_target, and the parallel/SLO knobs are left completely opaque, so an agent has little basis for filling them meaningfully rather than relying on defaults.

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

Purpose4/5

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

The first sentence names a specific verb (recommend) and a well-defined resource (model x quantization x backend x GPU-count deployment), and even states the failure mode ('or report why nothing fits') plus the return shape (candidates with provenance). It is very clear what the tool does, but it never names or contrasts with the ambiguous sibling chimeraforge_suggest, leaving the agent to infer the boundary from context alone.

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

Usage Guidelines4/5

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

The 'Use for:' list gives four concrete query shapes ('what GPU do I need for <model>', 'will <model> fit on <gpu>', 'how many GPUs for N req/s', 'what will it cost'), which is strong intent-routing guidance. It also gives an actionable platform rule (set platform to the deployment OS; engines are offered only where their docs say they run). What is missing is any explicit when-not-to-use or named alternative, so the agent must guess whether a 'what GPU do I need' question belongs here or in chimeraforge_suggest.

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

chimeraforge_resolve_modelB

Resolve a model id to real params/architecture (grounds hallucinated specs).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes
hf_revisionNo
allow_networkNo

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It hints that results are grounded/real rather than generated, but omits critical behavior: that allow_network defaults to true (this call may hit the network), how hf_revision affects resolution, what happens on failure, and whether results are cached.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the core action and purpose come first. The parenthetical is slightly jargon-y but earns its place by conveying the anti-hallucination intent.

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

Completeness3/5

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

With no annotations and no output schema, the description should explain more about the return shape ('params/architecture' is only a gesture) and the network/revision behavior of the tool. Adequate as a minimum but leaves meaningful gaps for a 3-param resolution tool.

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

Parameters2/5

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

Schema description coverage is 0% across 3 parameters, so the description must compensate. It only loosely implies what 'model' means (a model id) and says nothing about hf_revision or allow_network, leaving two of three parameters undocumented in both schema and description.

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

Purpose4/5

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

Specific verb+resource: 'Resolve a model id to real params/architecture' clearly states the transformation performed. The parenthetical '(grounds hallucinated specs)' reinforces intent. It is distinguishable from siblings like list_hardware or compare_api, though it never names them.

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

Usage Guidelines3/5

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

The parenthetical implies the use case (verify model specs rather than trust hallucinated ones), which is a soft usage signal. However, it gives no when-not guidance, no prerequisites, and never points to an alternative among the siblings.

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

chimeraforge_suggestA

Rank the models that actually fit and hit the SLO on a given GPU -- the inverse of planning. Use for 'what can I run on a 4090', 'best model for 12GB'. Sources: catalog (offline curated set), ollama (locally installed), hf (top Hub repos).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sourceNocatalog
hardwareYes
hf_limitNo
ollama_urlNo
request_rateNo
context_lengthNo
latency_slo_msNo
quality_targetNo
budget_usd_monthNo
avg_output_tokensNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries the behavioral disclosure burden. It communicates core behavior: ranking models against a fit/SLO objective and drawing from three sources: catalog, ollama, and hf. However, it does not disclose external interactions (e.g., reaching out to Ollama or Hugging Face), side effects, failure modes, or whether the operation is read-only.

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

Conciseness5/5

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

Two sentences carry the core behavior, user-facing examples, and source list without redundancy. The most important action is front-loaded: 'Rank the models...' instead of burying the intent in filler.

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

Completeness3/5

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

The description covers core purpose and high-level sources, which is enough to make a reasonable first call with the one required parameter. However, with 11 parameters, no output schema, no annotation safety clues, and 0% parameter documentation coverage, the description omits too much detail to fully steer an agent through meaningful variations of source, SLO, latency, and quality trade-offs.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only adds meaning to the source concept ('catalog', 'ollama', 'hf') and general context around SLO. The other 10 parameters, including latency_slo_ms, request_rate, quality_target, hf_limit, and budget_usd_month, are left to the agent to infer from their names and defaults, which is risky for a tool with this much configuration surface.

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

Purpose5/5

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

The description uses a specific verb and object: 'Rank the models that actually fit and hit the SLO on a given GPU.' It clearly identifies itself as the inverse of planning, which separates it from its most likely sibling confusion. The example use cases ('what can I run on a 4090', 'best model for 12GB') make the intent immediately understandable.

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

Usage Guidelines4/5

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

The description provides concrete usage framing with quoted examples and explicitly contrasts it with planning. It would be stronger if it also stated when not to use it or pointed to the sibling tools, but the 'inverse of planning' hint gives the agent enough context to route appropriately.

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

Tool Schema Changelog

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

  1. 2 tool updatesv0.65.0
    • Changedchimeraforge_plan1 field changed
      • addedInput schema / properties / model_revisions
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Model Revisions"
        +}
    • Changedchimeraforge_resolve_model1 field changed
      • addedInput schema / properties / hf_revision
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Hf Revision"
        +}
  2. 1 tool updatev0.50.0
    • Changedchimeraforge_plan4 fields changed
      • addedInput schema / properties / cloud
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Cloud"
        +}
      • addedInput schema / properties / session_turns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Turns"
        +}
      • addedInput schema / properties / think_time_s
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Think Time S"
        +}
      • addedInput schema / properties / use_contributions
        Added value: +{
        +  "default": false,
        +  "title": "Use Contributions",
        +  "type": "boolean"
        +}
  3. 1 tool updatev0.46.0
    • Changedchimeraforge_plan6 fields changed
      • addedInput schema / properties / carbon_intensity_g_per_kwh
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Carbon Intensity G Per Kwh"
        +}
      • addedInput schema / properties / grid_region
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Grid Region"
        +}
      • addedInput schema / properties / latency_slo_ms / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / latency_slo_ms / default
        Previous value: -5000New value: +null
      • removedInput schema / properties / latency_slo_ms / type
        Removed value: -"number"
      • addedInput schema / properties / mode
        Added value: +{
        +  "default": "online",
        +  "title": "Mode",
        +  "type": "string"
        +}
  4. 1 tool updatev0.43.0
    • Changedchimeraforge_plan2 fields changed
      • addedInput schema / properties / platform
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Platform"
        +}
      • addedInput schema / properties / unified_memory_fraction
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Unified Memory Fraction"
        +}
  5. 1 tool updatev0.34.0
    • Changedchimeraforge_plan3 fields changed
      • addedInput schema / properties / gpu_overrides
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Gpu Overrides"
        +}
      • addedInput schema / properties / max_num_batched_tokens
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Max Num Batched Tokens"
        +}
      • addedInput schema / properties / quality_from
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Quality From"
        +}
  6. 3 tool updatesv0.30.0
    • Addedchimeraforge_compare_api
    • Changedchimeraforge_plan10 fields changed
      • addedInput schema / properties / allow_offload
        Added value: +{
        +  "default": false,
        +  "title": "Allow Offload",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / gpu_price_multiplier
        Added value: +{
        +  "default": 1,
        +  "title": "Gpu Price Multiplier",
        +  "type": "number"
        +}
      • addedInput schema / properties / host_bandwidth_gbps
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Host Bandwidth Gbps"
        +}
      • addedInput schema / properties / lora_adapters
        Added value: +{
        +  "default": 0,
        +  "title": "Lora Adapters",
        +  "type": "integer"
        +}
      • addedInput schema / properties / lora_rank
        Added value: +{
        +  "default": 16,
        +  "title": "Lora Rank",
        +  "type": "integer"
        +}
      • addedInput schema / properties / lora_target
        Added value: +{
        +  "default": "qv",
        +  "title": "Lora Target",
        +  "type": "string"
        +}
      • addedInput schema / properties / safety_target
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Safety Target"
        +}
      • addedInput schema / properties / tpot_slo_ms
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Tpot Slo Ms"
        +}
      • addedInput schema / properties / ttft_slo_ms
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Ttft Slo Ms"
        +}
      • addedInput schema / properties / workload
        Added value: +{
        +  "default": "steady",
        +  "title": "Workload",
        +  "type": "string"
        +}
    • Addedchimeraforge_suggest
  7. 3 tool updates
    • First observedchimeraforge_list_hardware
    • First observedchimeraforge_plan
    • First observedchimeraforge_resolve_model

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct task: model metadata lookup (resolve_model), GPU metadata lookup (list_hardware), forward planning (plan), API-vs-self-host cost analysis (compare_api), and inverse ranking (suggest). The only potential overlap is plan vs suggest, but the description explicitly frames suggest as 'the inverse of planning,' resolving ambiguity.

Naming Consistency4/5

All names share the consistent chimeraforge_ prefix and mostly use a verb_noun pattern (resolve_model, list_hardware, compare_api). Two entries are bare verbs (plan, suggest), a minor deviation that stays readable and predictable.

Tool Count5/5

Five tools is well-scoped for a GPU/model deployment advisor: model resolution, hardware lookup, forward planning, cost comparison, and inverse suggestion each cover a distinct need. No tool feels redundant or missing at the structural level.

Completeness4/5

The surface covers the core advisory lifecycle: resolving models, listing hardware, planning deployments, comparing self-host vs API cost, and reverse-fitting models to GPUs. Minor gaps exist (e.g., no general catalog browsing or pricing-refresh beyond the dated snapshot noted in compare_api), but agents can work around them.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers