{
"name": "get_weather",
"description": "Current weather for a city",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name"
}
},
"required": [
"city"
],
"additionalProperties": false
}
}このツールの機能
Function-calling と MCP のツールは JSON Schema で定義され、プロバイダーはそのスキーマを厳格モードで実行します。すべてのオブジェクトに additionalProperties: false、すべてのプロパティが required に列挙、default なし、全体が型付き。このツールはそのために 2 つのことを行います。
- 構築 — ツール名・説明・パラメータ行を入力すると、構成の時点で厳格モードに適合するスキーマをライブで生成し、コピーボタン付きで出力します。
- リント — 任意のツール定義を貼り付けると、厳格モードの契約に対して検査し、違反をすべて正確なパス付きで列挙します。自動厳格化(機械的な問題を修正)はワンクリックで適用できます。名前と説明はあなたが書くものです。
ルール(リンターが強制する正確な契約)
| ルール | 検査内容 |
|---|---|
non-empty-name |
名前が [a-z0-9_-] の 1〜64 文字(get_weather 規約) |
description-present |
ツールとすべてのプロパティが実際の説明を持つ |
no-additional-properties |
すべてのオブジェクト — ルートとネスト両方 — が additionalProperties: false を設定 |
all-required |
required がすべてのレベルで全プロパティを列挙 |
no-defaults |
default キーなし — プロバイダーは拒否または無視する |
typed-properties |
各プロパティの型が string · number · integer · boolean · object · array のいずれか |
enum-values |
enum は空でなく、単一のプリミティブ型を共有 |
array-items |
配列は型付きの items を宣言 |
json-parseable |
入力がパース可能で input_schema が型付きオブジェクト |
自動厳格化は no-additional-properties、all-required(required 内の不正エントリを含む)、no-defaults を再帰的かつ冪等に修正します。名前や説明をでっち上げることはありません。それらは意味的なものであり、機械的なものではないからです。
使い方
- 構築モード: ツール名と説明を入力し、パラメータごとに 1 行(名前・型・説明)を追加して、生成されたスキーマをコピーします。「オプション」トグルは意図的に存在しません — 厳格モードはすべてのプロパティを
requiredに要求するため、オプション性はスキーマではなくモデルの意味論に属します。 - リントモード: 定義を貼り付けます(チップを試してください — 有効なものと壊れたもの)。問題はルール id とパス付きで表示されます。自動厳格化を押すと機械的な問題が修正され、修正済みスキーマが入力を置き換えてレビュー用に表示され、コピーボタンが付きます。
- エージェントを上のルール表に向けてください — 「なぜ私のツールスキーマは拒否されたのか?」への回答面です。
例
クリーンなツール — city と unit enum を持つ get_weather。問題ゼロで、どのプロバイダーのツール定義にもそのままコピーできます。
典型的な壊れた例 — 空の説明、default、欠けた additionalProperties、そして unit を忘れた required。リンターは 6 つの違反をすべて指摘し、自動厳格化が即座に 3 つを修正します。残りにはあなたの 2 文が必要です。
補足
- 100% クライアント側。 何もどこにも送信されません — スキーマは機密になり得ます。
- 厳格モードが安全なデフォルト: モデルの引数がスキーマに対して検証されることを保証します。それこそがツール呼び出しを実行に値する信頼できるものにします。
- Go 双子: 同じルールが CLI の
cosmodev tool-schema-builderとして提供され(共有テストベクトル付き)、エージェントはローカルでスキーマをリントできます。 - オプションパラメータがない理由は? 厳格モードのプロバイダーはすべてのプロパティを
requiredに要求します。エコシステムの規約は、オプション性を説明に記述し、モデルが意味的に値を省略できるようにすることです。