MCP (Model Context Protocol) は、AI アシスタントを外部サービスに接続するための標準規格です。 raxel は公式 MCP サーバーを内蔵しており、Claude などの MCP 対応 AI から、 アプリのレコード閲覧・作成・更新、コメント投稿、ワークフローのステータス変更を安全に行えます。
たとえば「報告受付アプリ」を作っておけば、あなたのチームの AI エージェントが報告を読み取り、 対応し、結果を記録してステータスを進める — という運用を、コードを書かずに構築できます。
AI クライアントの種類に応じて、接続方法は 2 つあります。
| 接続方法 | 対象クライアント | 動作する権限 |
|---|---|---|
| API トークン | 認証ヘッダーを設定できるクライアント (Claude Code、各種 CLI/IDE 系) | トークン発行者の権限 |
| OAuth (画面で許可) | OAuth 対応クライアント (claude.ai の Web 画面のコネクタなど) | 許可したユーザー本人の権限 |
API トークンは 2 種類あり、目的で使い分けます。
| トークン | できること | 発行場所 |
|---|---|---|
| アプリ API トークン | そのアプリのレコード操作 (閲覧・作成・更新・コメント・ステータス変更) | 各アプリの設定 → 「APIトークン」 |
| AI エージェント連携トークン | 新しいアプリの作成 (後述)。発行時に選択すれば、対象アプリのレコード操作 (閲覧 / 書き込み / 削除)、そのトークンが作成したアプリの設定編集 (後述の「AI によるアプリの作り込み」)、および複数アプリをまとめる「パッケージ」の管理 (後述の「AI によるアプリのグループ管理」) も追加で許可できます | システム管理 → 「AI エージェント連携」 |
「AI にアプリを作らせて、そのまま運用させる」場合は、AI エージェント連携トークンの発行時に「データの操作」を許可します。そのトークンで作成したアプリのレコードを、 同じ接続のまま操作できます (アプリごとに API トークンを発行し直す必要はありません)。 既存のアプリを操作させたい場合は、発行時または発行後に「対象アプリ」へ追加します。 アプリ API トークンは、外部システム連携のように「1 つのアプリだけを渡したい」場合に使います。
認証にはアプリの API トークンを使います。 接続したいアプリの設定 → 「API トークン」から発行してください (発行には再認証が必要です)。 AI に許可したい操作に応じて権限を選びます:
トークン発行画面では「閲覧」「書き込み」「削除」を個別に選べますが、AI 連携には必ず「閲覧」を含めてください。 フィールド構成を取得するツール (get_app_overview) が閲覧権限を必要とするため、 「書き込み」だけのトークンでは AI がどの項目に何を書けばよいか分からず、実質的に何もできません (項目名を把握したうえで REST API から書き込むだけであれば、「書き込み」だけのトークンでも使えます)。
トークンはアプリ単位です。AI が扱えるのはそのアプリだけで、他のアプリ・メンバー管理・アプリ設定には一切アクセスできません。 トークンはいつでも失効でき、最終使用日時も確認できます。
MCP サーバーの URL は次のとおりです (お使いのサブドメインに読み替えてください):
https://<あなたのサブドメイン>.raxel.jp/api/mcp認証は HTTP ヘッダーで API トークンを渡します。Authorization: Bearer <トークン> と X-API-Token: <トークン> のどちらでも使えます。
claude mcp add raxel \
--transport http \
https://<サブドメイン>.raxel.jp/api/mcp \
--header "Authorization: Bearer <APIトークン>"接続後は「アプリの概要を見せて」「未対応のレコードを一覧して」「この 3 件を対応済みにして」のように、 自然言語で指示するだけで AI がツールを呼び出します。
claude.ai のコネクタ機能のように OAuth を前提とするクライアントは、トークンの貼り付けではなく画面での許可で接続します。手順:
/api/mcp) を登録します管理者が外部の AI の接続を許していない場合 (システム管理 → 「AI エージェント連携」の「外部の AI の接続」が「禁止」、 または自分が許可された人に入っていない、つなぐ AI のサービスが許可されていない) は、許可画面で理由が表示され、つなげません。 詳しくは後述の「外部の AI の接続 (管理者の設定)」を参照してください。
Streamable HTTP transport に対応した MCP クライアントであれば接続できます。 認証ヘッダーを設定できるクライアントは「サーバー URL + API トークン」、 OAuth (Dynamic Client Registration + PKCE) に対応したクライアントは「サーバー URL のみ」で接続できます。
OAuth で AI をつなぐ接続は、アプリのレコード操作・アプリの新規作成・アプリの管理・メールのどれも、次の 2 つの条件で管理者が統制します。 許可画面の選択肢にある「メール (自分がメンバーの受信箱)」では、AI に渡す受信箱と、許可する操作 (読むだけ / 読む + 仕分け・紐付け・下書き) も選びます。AI が使えるのは、許可した本人がメンバーになっている受信箱だけです。
メールの接続には、上の 2 つに加えて、もう 1 つの条件があります。
get_mail_buttons は、 メール送信ボタンに設定する受信箱を選ぶために、メンバーかどうかに関係なく全部の受信箱の名前とアドレスを返します。 受信箱の中身 (メール本文など) は返しませんOAuth の「メール」でつないだ接続で使えるツールです。対象は、許可画面で選んだ受信箱のうち、今もメンバーで 「外部の AI で使う」がオンのものだけです。迷惑メールとゴミ箱のスレッドは出ません。 「読むだけ」の接続には、書くツール (下表の「読む + 仕分け」) は表示されません。
| ツール | 内容 | 必要な許可 |
|---|---|---|
| list_mailboxes | 今使える受信箱 (名前・アドレス・あなたの役割) | 読むだけ |
| list_mail_threads | 受信箱のスレッドの一覧 (件名・参加者・状態・担当。本文は返しません。50 件ずつ)。自分が送っただけのスレッド (受信したメッセージが無いもの) は、この一覧には出ません | 読むだけ |
| search_mail_threads | 語でスレッドを探す (返す項目は一覧と同じ)。自分が送っただけのスレッドも、検索には出ます | 読むだけ |
| get_mail_thread | スレッドの本文 (テキストだけ・新しい順に最大 10 通 / 64KB。既読にはしません。添付は名前と大きさだけ)。送っただけのスレッドも、どちらの経路からでも開けます | 読むだけ |
| list_mail_thread_options | 担当にできる人・状態・ラベルの候補 | 読むだけ |
| list_thread_record_links | スレッドに紐付いたレコード | 読むだけ |
| list_record_mail_threads | レコード (アプリ + レコード番号) に紐付いたスレッド | 読むだけ |
| set_mail_thread_status / assign_mail_thread / set_mail_thread_priority | 状態・担当・優先度の変更 (今の値を一緒に渡し、違えば変更しません) | 読む + 仕分け (オーナー・担当者) |
| set_mail_thread_labels | 既存のラベルの付け外し | 読む + 仕分け (オーナー・担当者) |
| find_linkable_records / link_mail_thread_to_record | 紐付け先のレコードを探して紐付ける | 読む + 仕分け (オーナー・担当者) |
| unlink_mail_thread_record | 紐付けを外す (外すレコードの番号の書き写しが必要) | 読む + 仕分け (オーナー・担当者) |
| get_mail_reply_draft / save_mail_reply_draft | あなたの返信の下書きを読む・本文を保存する (送信はしません。差し戻された下書きを書き直すと普通の下書きに戻ります) | 読む + 仕分け (オーナー・担当者) |
mail.draft.conflict) で断られるので、 下書きを読み直して approvalStatus を確かめてから、やり直すか判断してくださいmcp.tool.invalidArguments) で断られますアプリの API トークン、または OAuth の「特定アプリのレコード操作」で使えるツールです。 アプリの新規作成は次の節、アプリ設定の作り込みはさらにその次の節を参照してください。
| ツール | 内容 | 必要な権限 |
|---|---|---|
| get_app_overview | アプリ情報とフィールド定義の取得 (最初に呼ぶ) | 閲覧 |
| list_records | レコード一覧 (検索・フィルタ・並び替え・ページネーション) | 閲覧 |
| get_record | レコード 1 件の取得 | 閲覧 |
| create_record | レコード作成 (種類を持つアプリでは recordTypeCode で種類を指定) | 書き込み |
| update_record | レコードの部分更新 | 書き込み |
| delete_record | レコードをゴミ箱へ移動 (論理削除) | 削除 |
| list_trashed_records | ゴミ箱のレコードの一覧 (見えない項目は伏せる) | 閲覧 + 削除 |
| restore_records | ゴミ箱のレコードを戻す (最大 100 件・1 件ずつの成否を返す) | 削除 |
| purge_records | ゴミ箱のレコードを完全に削除 (元に戻せない・消すレコードを確認してから再送する 2 段階) | 削除 |
| bulk_update_records | 複数レコードの一括更新 (最大 100 件・全件成功か全件失敗) | 書き込み |
| bulk_create_records | 複数レコードの一括作成 (最大 100 件・全件成功か全件失敗) | 書き込み |
| get_records_summary | 数値フィールドの集計 (合計・平均など) | 閲覧 |
| get_records_grouped_summary | 分類ごとの集計 (費目ごとの合計、担当者ごとの件数など) | 閲覧 |
| list_users | 利用者の検索 (id と表示名のみ。利用者選択フィールドに書く id の取得用) | 閲覧 |
| list_organizations | 組織の検索 (id・名前・組織コード・親組織。組織選択フィールドに書く id の取得用) | 閲覧 |
| list_groups | グループの検索 (id と名前。グループ選択フィールドに書く id の取得用) | 閲覧 |
| get_record_history | レコードの変更履歴 (詳細の画面と同じ規則で見えない値を伏せる) | 閲覧 |
| list_comments | コメント一覧 | 閲覧 |
| add_comment | コメント投稿 (メンション可) | 書き込み |
| get_workflow_state | ワークフロー状態と、そのステータスから撃てる遷移の確認 (いま条件を満たしていない遷移も、満たしていない条件つきで返ります) | 閲覧 |
| get_workflow_history | ステータス変更の履歴 (差し戻し理由などのコメント込み) | 閲覧 |
| transition_status | ステータスの遷移実行 | 書き込み |
| bulk_transition_status | 複数レコードの一括ステータス変更 (一括承認・最大 100 件) | 閲覧 + 書き込み |
| get_attachment | 添付ファイルの中身の取得 (画像は 5 MB・テキストは 1 MB・PDF は 10 MB まで。それ以外や上限超えは名前・大きさ・種類と理由だけ) | 閲覧 |
| upload_attachment | 添付ファイルのアップロード (base64・復号後 700 KB まで。戻り値をレコードの添付の項目に入れる) | 書き込み |
| preview_record_import | 表の取り込みの事前確認 (最大 100 行・行ごとに作成 / 更新の計画を返す・書かない) | 閲覧 + 書き込み |
| import_records | 表の取り込みの実行 (事前確認の計画の確認用の値を添えて送る) | 閲覧 + 書き込み |
表の取り込みは 2 段階です。まず preview_record_import に行 (1 回で最大 100 行) と鍵にする項目を渡すと、 行ごとに「作成」か「更新 (どのレコード)」かの計画が返ります (この時点では何も書きません)。内容を利用者に確かめてもらったうえで、 同じ行と鍵、返ってきた計画の確認用の値を import_records に渡すと実行されます。事前確認の後に行き先が変わっていたときは実行されず、 もう一度事前確認からやり直します。同じ鍵の値を持つ行が複数あると、その行はすべて行のエラーになります ("1" と 1 は同じ値として扱います)。 添付ファイルは upload_attachment で先にアップロードし、戻り値をレコードの値に入れて送ります。
list_users が返すのは id と表示名だけです (メールアドレス・権限・在籍状況は返しません)。 見える範囲は画面の「ユーザー選択」と同じで、トークンを発行した利用者が選べる相手に限られます。 利用者選択フィールドに値を書くときや、担当者を指名するときの id を得るために使います。
ツールはトークンの権限に応じて出し分けられます。「読み取り」だけを付けたトークンでは書き込み系・削除系のツールがそもそも AI に見えません。 削除を任せたくない場合はトークンに「削除」を付けないでください (削除ツールが必要になったら、トークンを発行し直します)。
なお、OAuth (サーバー URL だけで接続する方式) では削除の権限が発行されません。 削除ツールを使えるのは、アプリ設定で「削除」を付けて発行した API トークンで接続した場合だけです。
削除はゴミ箱への移動 (論理削除) で、アプリのゴミ箱から復元できます。 他のアプリから参照されているレコードは既定で削除されず、参照元の一覧が返ります。 参照を無視して削除することもできますが、その場合は参照が外れ、 ルックアップの設定によっては参照している側のレコードの値が空になります(この操作は元に戻せません — 空になった参照元の値はゴミ箱から復元できません)。 AI がうっかり実行しないよう、参照している件数を AI に申告させ、 一致した場合だけ実行する仕組みにしてあります。
ここまでのツールは「既存アプリのレコード操作」でした。これとは別に、AI に新しいアプリそのものを作らせることもできます。 「顧客からの問い合わせを受け付けるアプリを作って。件名・内容・優先度・対応状況が欲しい」のように指示すると、 AI がフィールド構成とビューを設計してアプリを作成します。
/api/mcp) に、 発行した AI エージェント連携トークンで接続します。接続すると create_app ツールが使えるようになりますpublish_app を呼ばせても構いません (どちらも同じ処理・同じ権限です)参考: AI が create_app に渡すアプリ定義のイメージ (実際は AI が自動で組み立てます):
{
"name": "問い合わせ受付",
"icon": "Mail",
"sections": [
{
"label": "基本情報",
"fields": [
{ "code": "title", "label": "件名", "type": "text", "required": true },
{ "code": "detail", "label": "内容", "type": "multi_line_text" },
{ "code": "priority", "label": "優先度", "type": "dropdown",
"settings": { "options": [
{ "value": "high", "label": "高" },
{ "value": "low", "label": "低" }
] } }
]
}
],
"defaultView": { "name": "すべて", "columns": ["title", "priority"] },
"views": [
{ "type": "kanban", "name": "優先度ボード", "config": { "groupField": "priority" } }
]
}camelCase・ハイフン・空白は _ に統一)。 そのため taskStatus と task_status のように送った時点では違って見えるコードも重複扱いになりますdelete_app でゴミ箱へ移動できます。最初の呼び出しでは削除されず、残っているレコード件数・このアプリを参照している設定・パッケージの一員かどうか・戻しても元に戻らないものが返るので、それを確認してから件数を添えて再送する形です (戻すときは restore_app。公開フォームが再び届くようになる場合は申告が要ります)create_record /list_records などが使えるようになります。 対象アプリは既定で「このトークンで作成したアプリ」で、既存アプリは管理画面から追加できます。 レコード系ツールは appId を必須の引数に取り、対象外のアプリを指定すると拒否されます。そのアプリが参照している他のアプリ (ルックアップの参照先・集計の集計元・転記アクションの転記先) も対象アプリに入っている必要があります — 参照先の値はレコードの読み書きでそのまま出入りするためで、入っていない場合は「参照先を対象に追加してください」というエラーになります。 実際にできることはトークンを発行した人がそのアプリに対して今持っている権限の範囲に限られ、権限を失えばその時点で使えなくなります。 なお OAuth 接続 (claude.ai のコネクタ等) にはこの拡張は及びません — レコード操作は許可画面で選んだ「特定アプリのレコード操作」の範囲だけです複数のアプリ・パイプライン・ポータル等をひとまとめに追跡・管理する仕組みがパッケージです (画面での使い方はアプリストア・パッケージマニュアルの 「導入済みパッケージ」を参照)。AI エージェント連携トークン、または OAuth の 「アプリの新規作成」で接続した AI にも、この管理を任せられます。
componentAttached (true/false) で所属できたかどうかを確認してください| ツール | 内容 | 権限 |
|---|---|---|
| create_component | 複数のアプリ・パイプライン・ポータル等をひとまとめに追跡・管理する新しいパッケージを作成する | パッケージ管理のみ |
| add_to_component | アプリ・パイプライン・ポータル等をパッケージに所属させる (1 リソース = 最大 1 パッケージ。既に別のパッケージに所属している場合は失敗し、現在の所属先の名前が返る。追加先のパッケージに同名のアプリがあれば、追加したアプリは自動で「名前 (2)」に改名され、応答の renamedApps で返る) | パッケージ管理 + 下記 |
| remove_from_component | パッケージからリソースを除外する (対象の実体は削除しない。ただしアプリを外すとパッケージ無しの名前空間へ移り、そこに同名のアプリがあれば自動で「名前 (2)」に改名され、応答の renamedApps で返る。既に外れているものへの再要求は成功扱い) | パッケージ管理 + 下記 |
| list_component_members | パッケージの詳細 (名前・由来・現在のメンバー一覧) を取得する | パッケージ管理のみ |
add_to_component でアプリを追加する場合は、 (管理者またはパッケージ作成者本人) かつ 対象アプリの管理権限の 両方が必要です。アプリ以外 (パイプライン・ポータル・ポータルウィジェット・グループ・スペース) を追加する場合は 管理者限定です (パッケージ作成者であっても、対象がアプリでなければ追加できません)。remove_from_component は対象の種類によらず、 管理者またはパッケージ作成者本人が実行できます。
アプリを作った後の「作り込み」— フォームのフィールド構成、ワークフロー、条件付き書式、入力ルール、通知、権限、ビュー、帳票、転記アクション、 公開フォーム、公開ビュー、スケジュール起票、残高設定 — についても、許可した範囲内で AI に任せられます。対話的に「この項目を必須にして」「承認ステータスを追加して」のように 指示しながら、アプリを育てていく使い方を想定しています。
tools/list の応答にunavailableTools (提供されていないツールの名前と必要な capability) が入るので、 AI は「この製品にその機能が無い」のか「自分のトークンに権限が無い」のかを区別でき、利用者に何を発行し直せばよいか伝えられますbaseType (日付・日時・時刻・数値。作成後は変更不可)、preventOverlap (重複を禁止する)、overlapScopeFieldCodes (重複を判定する単位。フィールドコードの配列で最大 3 件) です。 単位を省略するとアプリ全体で 1 グループ = どの会議室でも同じ時間帯を取れない、という設定になります (範囲フィールドの解説も参照)confirmSelfPermissionChange にその行の変更前 → 変更後を書き写した場合だけ通ります (現在値を読まないと書けません)。 アプリ権限・レコード権限・フィールド権限の 3 種類で同じ扱いです領域ごとにツールが 2 つ (get_* = 現在の設定の取得、set_* = 全量置換) あります。 アプリの基本設定だけは update_app_settings (送った項目だけを変える部分更新)、 拡張機能 (set_app_features) と多言語化 (set_localizations) は送ったものだけを変える差分です。 トークンに付いていない領域のツールは AI のツール一覧に出ませんが、名前と必要な capability はtools/list のunavailableTools で確認できます。
| 設定領域 | capability | ツール |
|---|---|---|
| フォーム (フィールド定義・レイアウト) | settings:form | get_form / update_form / apply_form / list_lookup_sources / preview_form |
| ワークフロー (ステータス・遷移) | settings:workflow | get_workflow / set_workflow |
| 条件付き書式 (行の色分け) | settings:row_color | get_row_color_rules / set_row_color_rules |
| 入力ルール (自動計算・必須化等) | settings:input_rules | get_input_rules / set_input_rules |
| 通知ルール・リマインダー | settings:notifications | get_notification_rules / set_notification_rules / get_reminders / set_reminders / preview_reminders / preview_notifications |
| 未登録チェック (あるはずのレコードが登録されていないことを検知して通知) | settings:notifications | get_absence_rules / set_absence_rules |
| スケジュール起票 (その日が来たらレコードを自動作成) | settings:scheduled_rules | get_scheduled_rules / set_scheduled_rules |
| 残高設定 (付与で増え消化で減る残数と、期限による失効) | settings:balances | get_balance_settings / set_balance_settings |
| アプリ権限 | settings:permissions | get_permissions / set_permissions / preview_record_as |
| ビュー (一覧・カレンダー・カンバン・ガント・グラフ・クロス集計・マトリクス・リソースタイムライン・カード) | settings:views | get_views / set_views / preview_view |
| 帳票 (印刷テンプレート) | settings:print_templates | get_print_templates / set_print_templates |
| 転記アクション | settings:actions | get_actions / set_actions |
| 公開フォーム (ログイン不要の URL で外部から投稿を受け付ける) | settings:public_forms | get_public_forms / set_public_forms / get_verified_addresses |
| 公開ビュー (ログイン不要の URL でレコードを外部へ公開する) | settings:public_views | get_public_views / set_public_views |
| アプリ定数 (数式から CONST("コード") で参照できる名前つきの数値) | settings:constants | get_app_constants / set_app_constants |
| メール送信ボタン (レコードから共有受信箱の下書きをレコードの値で埋めて開くボタン) | settings:mailButtons | get_mail_buttons / set_mail_buttons |
| ポータル (トップ画面のレイアウト。管理者の接続のみ) | settings:portals | get_portal_layouts / set_portal_layouts |
| マニュアル (アプリ横断の説明書 — 構築した業務の運用手順を製品内に書き残す) | settings:manuals | get_manuals / set_manuals |
| 起点つき集計 (レコードの日付を起点にした期間で、別アプリの行を集計して書き戻す) | settings:anchored_windows | get_anchored_window_settings / set_anchored_window_settings |
| 拡張アプリ (基本アプリのレコード 1 件につき、別アプリのレコードを 1 件だけ結びつける宣言) | settings:extensions | get_extensions / set_extensions |
| アプリの基本設定 (名前・説明・アイコン・色・レコードのタイトル・デザインテーマ・一覧の縦罫線・コメント・一覧での直接編集・ステップフォーム) | settings:general | get_app_settings / update_app_settings |
| 期間ロック (締めた期間のレコードを編集・削除できなくする) | settings:period_locks | get_lock_rules / set_lock_rules |
| カテゴリー (レコードを分類する木。機能を使えるようにするのは update_app_settings の categoriesEnabled) | settings:categories | get_categories / set_categories |
| 拡張機能の有効・無効 (アプリのメニューに出す拡張機能の選択) | settings:features | get_app_features / set_app_features |
| 多言語化 (項目名・アプリ名・説明・ビュー名・ステータス名・カテゴリー名の翻訳) | settings:localization | get_localizations / set_localizations |
| レコードのテンプレート (レコードの作成の雛形。レコードの閲覧・追加の権限も要る) | settings:record_templates | get_record_templates / set_record_templates |
| レコードの種類 (1 つのアプリの伝票の種別。種類ごとに項目の必須 / 任意 / 非表示と既定の帳票を決める) | settings:record_types | get_record_types / set_record_types (preview_form は recordTypeCode で種類ごとの新規画面を評価) |
| CSV 出力のテンプレート (書き出しの形とスケジュールの出力。スケジュールを有効にする保存は confirmUnattended の申告が要る・定義を直せるのは作成者だけ) | settings:export_templates | get_export_templates / create_export_template / update_export_template / delete_export_template |
| データパイプライン (複数のアプリを読み、結合・集計して別のアプリへ書く。管理者の接続のみ。スケジュール・置き換えを有効にする保存は申告が要る) | settings:data_pipelines | get_data_pipeline / create_data_pipeline / update_data_pipeline / delete_data_pipeline / preview_data_pipeline |
| Webhook (レコードの変化をアプリの外の URL へ送る。送り先を増やす保存は confirmWebhookDestination の申告が要る・secret は画面だけ) | settings:webhooks | get_webhooks / get_webhook_logs / create_webhook / update_webhook / delete_webhook / test_webhook |
それぞれ settings:categories /settings:features /settings:localization /settings:record_templates を付けたトークンで読み書きできます。 画面と同じ検査を通るので、画面で作れない形は AI からも作れません。
set_categories) — 全量置換です。 既存のカテゴリーは id、新しいカテゴリーは仮のkey を付けて送り、親子はparentId / parentKey で指します。 並びは同じ親を持つ要素の配列の中の順です。レコードに付いているカテゴリーは AI からは消せません (画面から消します)。 カテゴリーの機能を使えるようにするのは update_app_settings のcategoriesEnabled ですset_app_features) —enable / disable に機能の id を並べる差分で、書いていない機能はそのままです。 稼働中のもの (公開中のフォームなど) が残る機能は無効にできません。AI の機能 (AI でレコードを起票・AI で項目を生成) は、無効にすると実際に使えなくなりますset_localizations) — 1 つの言語について、送った翻訳だけを書きます。 値を null にするとその翻訳を消し、元の文字列が表示されます。アプリの既定の言語の翻訳は設定できませんset_record_templates) — 全量置換です。 アプリの管理の権限に加えて、レコードの閲覧と追加の権限が要ります。接続した利用者が見られない項目の値は、取得にも出ず、置き換えても元の値が残ります。 作成の権限が無い項目の値は保存のときに落ち、応答の droppedFields で知らせます。 テンプレートが 100 件を超えるアプリでは使えず (画面で減らしてから使います)、一度に送れるのも 100 件までですsettings:export_templates を付けたトークンで CSV 出力のテンプレートを、settings:data_pipelines を付けた管理者のトークンでデータパイプラインを、 1 件ずつ作る・直す・消すことができます。どちらも人が見ていない間に動く設定なので、次の決まりがあります。
get_export_templates /get_data_pipeline) が返した定義に手を加え、項目を省かずに送り返します。 足りない項目があると保存せずに名前を返します。直す・消すには読みの道具が返した版 (version) を添え、 その間にほかの人が変えていれば保存しません (保存の応答は版を返さないので、続けて直す・消すときは読み直します)confirmUnattended) を書き写して送ります。 違えば保存せず、正しい内容を返します。これは AI の読み違いを減らすためのもので、人の承認の代わりではありませんstopSchedule: true) ことと消すことは、作成者でなくてもできます。 止めるときは内容を確かめないので、壊れた設定・プランの外の設定も止められますscheduleFilters /scheduleFilterTree) のレコードを出します。一覧ビューの設定は効きません。 Excel (format: "xlsx") のテンプレートはスケジュールを有効にできません (CSV・TSV・固定長で出します)preview_data_pipeline) は出力先へ書かずに結果の先頭を返します。 結果は操作した人の権限で試算したもので、作成者の権限で動くスケジュールの実行とは違うことがあります。 今すぐの実行は AI からはできません (画面から実行するか、スケジュールに任せます)confirmRemovals に申告します。実行中のパイプラインは消せませんsettings:webhooks を付けたトークンで、Webhook を 1 件ずつ読む・作る・直す・止める・消す・テスト送信することができます (画面と同じく、アプリの管理者の権限が要ります)。Webhook はレコードの値をアプリの外へ送る設定なので、次の決まりがあります。
get_webhooks) が返すdefinition (name・url・events・enabled) に手を加えて送り返します。足りない項目があると保存せずに名前を返します。 作るときに enabled を省くと、止めた状態で作ります (作ってすぐ送り始めません)。 直す・消すには読みの道具が返した版 (version) をexpectedVersion に添え、その間に変わっていれば (自動停止・画面での secret の設定や解除を含む) 保存しませんevents) を変えるとき、 止めているもの (自動停止を含む) を有効に戻すときは、保存した後の { url, events, enabled } をconfirmWebhookDestination に書き写して送ります。違えば保存せず、正しい申告を返します。 名前だけの変更・止める・消す・テスト送信には要りません (送っても保存は止めず、「申告は不要でした」と注記します)。これは AI の読み違いや指示に紛れ込んだ送り先を止めるためのもので、人の承認の代わりではありません{ appId, webhookId, expectedVersion, stop: true } をupdate_webhook に送ると、ほかの値は変えずに止めます。内容・プラン・URL を確かめないので、 プランに Webhook が含まれなくなった後や、いまの規則では通らない URL を持つ Webhook も止められますhasSecret で有無だけを返し、入力に secret を入れると 400)。 直しても今の secret は残ります。secret の無い Webhook を作る・有効にすると、受け取る側で署名 (X-Webhook-Signature) を確かめられないことを応答で知らせますwebhook.requiresFullDataAccess で拒みます。画面も同じ)。 保存した人が「送り先を決めた人」になり、配信は送る時点でもその人が全部を見られるときだけ送られます (見られなくなれば配信のログで skipped)。 名前だけの変更・止める・消すは誰でもできます。get_webhooks のhasDestinationOwner が false の Webhook は送られません (止めてから有効にし直すと入ります)get_webhook_logs) は、1 つの Webhook の配信を新しい順に 50 件ずつ返します。 送った本文・相手の応答・エラーの文は返しません (日時・状態・試行回数・HTTP の番号・成否・所要時間だけ)test_webhook) は、保存済みの URL へ見本を 1 回送り、成否と HTTP の番号だけを返します。 1 つの Webhook につき 1 分に 10 回まで (画面からの送信と合わせて数えます。超えると 429 の webhook.testRateLimited)期間ロックはsettings:period_locks を付けたトークンで読み書きできます。 ルールを外すと、その期間の編集・削除の禁止がすぐ解けるので、外す操作だけ強い関門があります。
{ id } だけで送ります (既存のルールは書き換えられません)。 期間を変えたいときは、新しいルールを足して古いルールを外しますget_lock_rules のconfirm をそのままconfirmRemovals に並べます。取得の後に中身が変わったルールは外れませんrecords:write かrecords:delete があると、ルールの追加はできますが外すことはできません (1 つの接続が「ロックを外してすぐ書き換える・消す」をできないようにするためです)get_lock_rules に条件の内容が出ますが、AI からは作成・変更・削除できません(送っても送らなくてもそのまま残ります)。この AI 接続で扱えるアプリの範囲の外にある締める側のアプリの名前などは伏せられます公開フォームと公開ビューは、 画面だけでなく MCP からも設定できます(settings:public_forms /settings:public_views を付けたトークンが必要です)。 この 2 領域だけは認証なしで社外から到達できる面を作るので、他の設定領域とは別の関門を置いています。
enabled の既定は false です (画面の新規作成モーダルは既定 ON ですが、あちらは人が公開フィールドのチェックリストを見ながら決めています)。 気付かないうちに無防備な公開ページができることはありませんenabled: true にする呼び出しはconfirmPublicExposure を要求します。 「この呼び出しの後にログイン不要で到達できるもの」を、名前・公開されるフィールドコード・ レコードの範囲 (all = 絞り込み条件が 1 つも無い /filtered)・配信される選択肢まで含めて申告し、サーバーの計算と完全に一致しないと書き込みません。 一致しない場合は 400 とともに正しい申告値そのものが返るので、読めば必ず通せますconfirmPublicExposure のnotifyEmails に書き写す必要があります。 応答の publicExposure[].outbound には、 転送先のほか自動返信・外部ホストのロゴ・アクセス解析・送信後のリダイレクト先など 「データや訪問者が外部へ出る経路」がすべて並ぶので、設定した本人以外にも何が起きるかが分かりますfieldOptions)、公開する前に必ず AI の目を通ります。 社外に出せない選択肢がある場合は、その項目を公開対象から外すか、選択肢そのものを整理してくださいredirectUrl) と、公開ビューの URL スラッグ (slug)・Google Analytics の ID (googleAnalyticsId) は AI から設定できます。 欄を書かなければ今の値のまま、null か空文字で消します。 保存した後にこれらを持つ項目は、変えていない項目・止めている項目・パスワードで守られた項目も含めて全部を、送った配列の位置 (index) と保存後の名前つきでconfirmRedirects (フォーム) /confirmViewDestinations (ビュー) に書き写します (省略は「1 件も持たない」という申告)。 既にあるスラッグを別の値に変える・外すときは confirmSlugChanges({ name, from, to }、外すときは to: null) も要ります — 古いスラッグの URL は使えなくなり、配ったリンクが切れます (token の URL はそのまま使えます)。スラッグがほかの公開ビューと重なれば 400 です。 違えば 1 件も書かず、正しい申告を返します。保存の処理中に、別の操作がこれらの値・パスワード・公開の条件を変えた場合は 409 を返し、 その呼び出しの全部を取り消します (読み直してから送り直します)autoReplyReplyTo に返信を受け取るメールアドレスを 1 つ指定すると、 受け取った人がそのまま返信したときにそのアドレスへ届きます。指定したアドレスは訪問者に見えます。 通知先メールアドレスと返信先は、保存のときに形式を確かめますget_verified_addresses が返すアドレスだけです — 確認済みアドレスの一覧のアドレスと、トークンの持ち主自身の確認済みのログインアドレス、持ち主がメンバーの受信箱のうち アドレスの持ち主を確かめられたもの。 それ以外を set_public_forms で入れると 400 (verifiedAddress.unverified) になります。 一覧に無いアドレスは、管理者に追加を依頼してください。持ち主のログインアドレスの確認は、本人が個人設定の画面で行います (MCP からは行えません)。get_public_forms のnotifyEmailStatus で、保存されているアドレスへ実際に送られるかどうかが分かります。set_public_forms の呼び出しの処理中 (保存の直前) に、 どれかのフォームの通知先・返信先が別の操作で変更された場合は 409 を返し、その呼び出しの全部を取り消します (読み直してから送り直します)。get_public_forms で読んだ後・set_public_forms を呼ぶ前に行われた変更は検出しません (全量置換なので、後から保存した内容が残ります)。変更の直前に読み直してくださいenabled: true にできません (enabled: false で設定だけ先に保存しておくことは可能です)。 公開中のアプリをメンテナンス中に切り替えると、既に公開している URL の配信も止まりますpublicExposure が空配列になり、 「認証なしで到達できるものはありません」と返るので、画面を見に行かなくても止まったことが分かりますここまでの設定は、どれも何かが起きたことに反応する仕組みでした — レコードが作られた、ステータスが変わった、条件に当てはまった。 ところが現場の困りごとの多くは逆側にあります。 「返却予定日を過ぎているのに、返却の記録が無いことに誰も気づかない」 「点検の予定日が来たのに、点検レコードがそもそも起きていない」 「付与した残日数の期限が切れたのに、残ったままになっている」。レコードが 1 件も無いので、何のきっかけにもなりません。 こうした要望に対して、一覧ビューを作って人が毎朝見に行く運用しか組めない、という形になりがちです。
この面も AI に任せられます。次の 3 つは「いつ・誰について、何かが存在するはずか」という 同じ考え方を共有していて、気づく → 起票する → 期限で消すまでを一続きに組めます。
| 設定 | 何をするか | たとえば |
|---|---|---|
| 未登録チェック | あるはずのレコードが無いことを検知して通知する (レコードは作りません) | 返却予定日を過ぎても返却の記録が無い / 今日の日報が出ていない / 担当者のうち何人かが提出していない |
| スケジュール起票 | その日が来たらレコードを自動で作る (同じアプリにも、別のアプリにも) | 毎月 1 日に請求のレコードを起こす / 契約日の 12 か月後に更新手続きのレコードを起こす |
| 残高設定 | 付与で増え、消化で減る残数を管理し、期限が来たぶんを失効させる | 有給休暇の残日数 / ポイント / 前払いの残額 |
get_scheduled_rules では読み取り専用 (owned_by_balance_setting) で返り、 AI が直接書き換えることはできません。正本は残高設定側なので、二重に管理して食い違う状態を作りませんAI が組んだ設定 (ルックアップのコピー、関連レコード集計、入力ルール、フィールド権限など) が本当に効くかは、 レコードを 1 件通してみないと分かりません。そのために、本番データに混ざらないテストレコードを MCP から作成・照会できます。
create_record /list_records にisTest: true を付けます。 アプリの作り込みを許可した接続 (フォーム設定の capability を持つ AI エージェント連携トークン) と、アプリ管理者の接続で使えますlist_records に isTest: true を付けたときだけ返ります| 接続方法 | 設定を編集できる対象アプリ |
|---|---|
| OAuth「特定アプリの管理」 | 許可画面で選んだ 1 アプリのみ |
| OAuth「アプリの新規作成」+ 設定編集を追加許可 | その接続で作成したアプリのみ |
| AI エージェント連携トークン + 設定編集を追加許可 | そのトークンで作成したアプリのみ |
| OAuth「メール」 | 対象外 (自分がメンバーの受信箱の操作専用。アプリの設定は編集できません) |
| アプリ API トークン | 対象外 (レコード操作専用。設定編集の許可は付与できません) |
つまり、すでに運用中の既存アプリの設定を AI に触らせられるのは「特定アプリの管理」で 本人が明示的に選んだ場合だけです。共有して使う AI エージェント連携トークンでは、そのトークン自身が作ったアプリ 以外は編集できません。
この「触れるアプリ」の範囲は、書き込む先だけでなく読み取る先にも効きます。前項の 3 つの設定は他のアプリを指せる数少ない設定で、 起票先 (レコードを作る先)・起算日の参照元・発生日の参照元・対象者の参照元の 4 か所がそれに当たります。 いずれも範囲外のアプリを指定すると拒否されます。
書き込みだけを止めて読み取りを許す、という扱いにはしていません。 「アプリ B に 15 日のレコードがありません」という通知はB の中身についての情報だからです。 アプリ A だけを任せたトークンが、通知を経由して B のレコードの有無を知れる状態を作りません。
editable: false と理由つきで返り、 全量置換の対象から外れます (AI が送らなくても消えませんし、送ると差し止められます)。 そのとき、範囲外のアプリを指している部分 (起票先や発生の定義) は応答から伏せられます —アプリの id も名前も出ません。「読めない範囲の設定がここにある」ことだけが伝わります| ツール | 許可領域 | 内容 |
|---|---|---|
| get_form | フォーム | フィールド定義とレイアウトを取得 (下書きがあればそちら) |
| update_form | フォーム | フォーム全体を全量置換で更新 (下書きに保存。反映は apply_form) |
| apply_form | フォーム | 下書きを本番に反映 (項目が消える場合は件数の申告が必要) |
| preview_form | フォーム | フォーム画面の見え方を評価 — 各項目が入力可/読み取り専用/非表示のどれか・決めた仕組み・初期値 (指定した利用者の目でも評価可)。seedData にルックアップのキーを入れると、コピー先と参照値も実際の作成と同じ評価器で埋まる |
| list_lookup_sources | フォーム | ルックアップの参照先候補アプリとキーフィールドの一覧 |
| get_workflow | ワークフロー | ステータスと遷移ルールを取得 |
| set_workflow | ワークフロー | ステータスと遷移ルールを全量置換で更新 |
| get_row_color_rules | 条件付き書式 | アプリ既定の行色ルールを取得 |
| set_row_color_rules | 条件付き書式 | アプリ既定の行色ルールを全量置換で更新 |
| get_input_rules | 入力ルール | 自動セット・カスタム検証・表示条件をまとめて取得 |
| set_input_rules | 入力ルール | 上記 3 種をまとめて全量置換で更新 (3 種すべて必須) |
| get_notification_rules | 通知 | 通知ルールを取得 |
| set_notification_rules | 通知 | 通知ルールを全量置換で更新 |
| get_reminders | 通知 | リマインダー (日付基準の事前・事後通知) の一覧 |
| set_reminders | 通知 | リマインダーを全量置換で更新 (例: 返却予定日の 3 日前に担当者へ通知) |
| preview_reminders | 通知 | リマインダーの乾式実行 — 通知を発生させずに「いつ・どのレコードで・誰に届くか」を評価 (asOf で時刻の差し替え、テストレコードの世界も評価可) |
| preview_scheduled_rules | スケジュール起票 | スケジュール起票の乾式実行 — 起票せずに「いつ・どの主体に・どんなデータで作られる予定か」を評価 (asOf / テスト世界対応。既起票の台帳抑制も本実行と同じ) |
| preview_absence_check | 未登録チェック | 未登録チェックの乾式実行 — 通知を作らずに「誰が未登録と判定され、誰に届く予定か」を評価 (asOf / テスト世界対応) |
| preview_action | アクション | 転記アクションの乾式実行 — 転記せずに「新規作成か既存更新か・どんなデータになるか」を評価 (テストレコードを転記元にできる) |
| preview_print_layout | 帳票 | 帳票の検算 — PDF を作らずに、用紙からのはみ出し・空欄になる差し込み・要素の重なりを mm 単位で報告 |
| get_absence_rules | 通知 | 未登録チェックを取得 (ルールごとに編集可否と理由、項目一覧も返す) |
| set_absence_rules | 通知 | 編集可能な未登録チェックを全量置換で更新 (読み取り専用のものは対象外なので消えません) |
| get_scheduled_rules | スケジュール起票 | 起票ルールを取得 (ルールごとに編集可否と理由、起票先アプリの項目一覧も返す) |
| set_scheduled_rules | スケジュール起票 | 編集可能な起票ルールを全量置換で更新 (読み取り専用のものは対象外なので消えません) |
| get_balance_settings | 残高設定 | 残高設定を取得 (設定ごとに編集可否と理由、項目一覧も返す) |
| set_balance_settings | 残高設定 | 残高設定を全量置換で更新 (期限つき残高の失効ぶんを起票するルールは自動で追従します) |
| get_app_constants | アプリ定数 | アプリ定数 (CONST("コード") で数式から参照する名前つきの数値) を取得 |
| set_app_constants | アプリ定数 | アプリ定数を全量置換で更新 (数式から参照中の code を外すと 400) |
| get_mail_buttons | メール送信ボタン | メール送信ボタンと、選べる共有受信箱・既定のアクションに選べるワークフローの遷移を取得 |
| set_mail_buttons | メール送信ボタン | メール送信ボタンを全量置換で更新 (外したボタンは confirmRemovals が必要) |
| get_verified_addresses | 公開フォーム | 通知先・返信先に入れられるアドレス (確認済みアドレスの一覧・自分のアドレス・自分の受信箱) を取得。一覧に無いアドレスは、管理者に追加を依頼してください (MCP からは追加できません) |
| get_anchored_window_settings | 起点つき集計 | 起点つき集計の設定を取得 (設定ごとに編集可否と理由、項目一覧も返す) |
| set_anchored_window_settings | 起点つき集計 | 起点つき集計の設定を全量置換で更新 (削除・件数が減る変更は confirmRemovals の申告が必要) |
| get_permissions | 権限 | アプリ・レコード・フィールド権限のいずれかを取得 (kind 引数で指定) |
| set_permissions | 権限 | 同上を全量置換で更新 (自分を狙って対象にしている行は変更不可 / 全員向けの行は変更内容の書き写しが必要) |
| preview_record_as | 権限 | 指定した利用者の目でテストレコードがどう見えるかを評価 (権限検証の肯定形の証拠 — 見える値・見えないフィールドと理由) |
| get_views | ビュー | すべての種別のビューを取得 (種別ごとに編集可否も返す) |
| set_views | ビュー | 一覧・カレンダー・カンバン・ガント・グラフ・クロス集計・マトリクス・リソースタイムライン・カードを全量置換で更新 (カードの画像に文字列・リンクの項目を新しく指すのは画面のみ。グラフは集計方法・分類・絞り込みまで、グループ付きの絞り込みも設定可) |
| get_print_templates | 帳票 | 帳票 (印刷テンプレート) を取得 (帳票ごとに編集可否と理由、用紙寸法も返す) |
| set_print_templates | 帳票 | 編集可能な帳票を全量置換で更新 (読み取り専用の帳票は対象外なので消えません) |
| get_actions | 転記アクション | 転記アクションを取得 (転記先候補アプリ・フィールド一覧・ワークフローステータスも返す) |
| set_actions | 転記アクション | 編集可能な転記アクションを全量置換で更新 (読み取り専用のものは対象外なので消えません) |
| get_app_settings | アプリの基本設定 | 名前・説明・アイコン・色・レコードのタイトル・デザインテーマ・一覧の縦罫線・コメント・一覧での直接編集・ステップフォームと、選べる値 (アイコンの名前・推奨の色・タイトルに使える項目) を取得 |
| update_app_settings | アプリの基本設定 | 上記を部分更新 (送った項目だけを変える。同じ名前のアプリがあると 409 と空いている名前の候補を返し、自動では付け替えない) |
| get_export_templates | CSV 出力のテンプレート | アプリのテンプレートを 50 件ずつ取得 (定義の全部・版・作成者・スケジュールの要約・直近の実行の要約) |
| create_export_template | CSV 出力のテンプレート | テンプレートを 1 件作成 (スケジュールを有効にするなら申告が必要) |
| update_export_template | CSV 出力のテンプレート | 定義の全部を送って直す (作成者だけ) か、スケジュールだけを止める |
| delete_export_template | CSV 出力のテンプレート | テンプレートを消す (選択が外れる一覧ビューを含む件数の申告が必要) |
| get_data_pipeline | データパイプライン | パイプライン 1 本の定義の全部・版・作成者・スケジュールの要約・直近 5 件の実行の要約 (一覧は get_data_pipelines) |
| create_data_pipeline | データパイプライン | パイプラインを 1 本作成 (スケジュール・全件置換なら申告が必要) |
| update_data_pipeline | データパイプライン | 定義の全部を送って直す (作成者だけ) か、スケジュールだけを止める |
| delete_data_pipeline | データパイプライン | パイプラインを消す (実行の履歴を含む件数の申告が必要。実行中は消せない) |
| preview_data_pipeline | データパイプライン | 出力先へ書かずに試す (操作した人の権限での試算) |
| get_webhooks | Webhook | アプリの Webhook を 50 件ずつ取得 (定義・版・secret の有無・送り先を決めた人がいるか・自動停止の状態・連続の失敗の数) |
| get_webhook_logs | Webhook | 1 つの Webhook の配信のログを新しい順に 50 件ずつ (送った本文・相手の応答は返さない) |
| create_webhook | Webhook | Webhook を 1 件作成 (送り先の申告が必要。secret なしで作る) |
| update_webhook | Webhook | 定義の全部を送って直す (送り先が増えるなら申告が必要) か、止める (stop: true) |
| delete_webhook | Webhook | Webhook を消す (配信のログも消える) |
| test_webhook | Webhook | 保存済みの URL へ見本を 1 回送る (成否と HTTP の番号だけを返す。1 つの Webhook につき 1 分に 10 回まで) |
更新ツールの多くは全量置換です — 送った内容がその設定全体を置き換えます (アプリの基本設定の update_app_settings は送った項目だけを変える部分更新、CSV 出力のテンプレート・データパイプライン・Webhook の道具は 1 件ずつ作る・直す・消す)。 各ツールの説明に「必ず先に対応する get_* で現在の内容を取得し、それに変更を加えた全体を送る」ことを 明記してあり、AI はそれを読んだうえで呼び出します。利用者が毎回指示する必要はありません。
そのうえで、既存の項目が失われる更新はサーバーが一度差し止めます。送信内容から既存の項目 (フォームのフィールド、ワークフローのステータスや遷移、通知ルール、権限の対象など) が欠けている場合、 または項目数が減っている場合に、何がいくつ消えるのかを応答で返して保存を止めます。意図した削除であれば AI がその件数を添えて送り直し、意図しない部分送信であれば AI はその時点で気付いて現在の内容を取得し 直します。設定をまるごと失う事故は、AI の遵守ではなくこの仕組みで防いでいます。
なお、項目数が変わらない全面的な差し替え (例: 3 件のルールを別の 3 件に入れ替える) は「消えた」ではなく 「書き換えた」として扱われ、差し止めの対象にはなりません。設定変更の履歴は アプリの設定変更履歴に残るため、誰がいつ何を変えたかは後から確認できます。
「アプリの新規作成」に加えて設定編集も許可した接続では、create_app_from_blueprint が使えます。アプリ定義 (フィールド・フォーム) と、ワークフロー・ビュー・権限・通知・転記アクション・ 帳票・入力ルール・条件付き書式をまとめて 1 回で作れるツールです。中身は上記の設定ツールを 依存順に呼んでいるだけなので、検証・削除の差し止め・設定変更履歴はすべて同じように働きます。
raxel のマニュアルをキーワード検索するツールです。許可設定に関わらずすべての接続で常に使えます(読み取り専用・LLM 呼び出しなし)。「この機能はどう設定するのか分からない」場面で、AI が設計・実装の前に 自分で調べるために使います。
| エラー | 意味 | 対処 |
|---|---|---|
| 401 Unauthorized | トークンが無効 (失効済み・入力ミス・発行者の無効化)。OAuth 接続では接続解除後もこのエラーになる。また、外部の AI の接続の統制より前につないだ OAuth 接続は、どの AI のサービスからつないだかの記録が無いため、このエラーになる | トークンを再発行して AI クライアントの設定を更新する。OAuth 接続はクライアント側から再接続 (再許可) する (古い接続は 1 回つなぎ直す) |
| 403 Forbidden | トークン発行者がアプリへのアクセス権 (またはアプリ作成権限) を失っている。OAuth 接続では、管理者の方針 (外部の AI の接続が禁止・許可された人でない) またはつないだ AI のサービスが許可されていないため断られている場合もある (エラーの文は「管理者の方針で、外部の AI の接続は許可されていません」「この AI のサービスからの接続は、管理者に許可されていません」など) | 権限を確認するか、権限のある管理者がトークンを再発行する。OAuth 接続の場合は、管理者にシステム管理 → 「AI エージェント連携」の「外部の AI の接続」の設定を確認してもらう |
| 429 Too Many Requests | API レート制限に到達 (REST API と共通の制限枠) | レスポンスの Retry-After 秒数だけ待って再試行する。上限は「APIレート制限」マニュアルを参照 |
| 循環参照 (code: CIRCULAR_REFERENCE) | フォーム・フィールド・関連レコード集計・残高設定・起点つき集計などの設定ツールで、保存すると循環参照になる設定を送った。 保存は全体が取り消される (何も保存されない)。応答は errorKey: errors.derived.circularReference、 details.circularPath に経路 (アプリ名とフィールド名の並び。接続したユーザーが閲覧できないアプリの部分は hidden: true)、 circularPathText に同じ経路を 1 行にした文が入る | AI が circularPathText を示して、経路の上の設定のどれか (集計するフィールド・計算式・参照値の参照元など) を直してから送り直します。直し方は「循環参照」マニュアルを参照 |
| ツールエラー (isError) | 入力の検証エラーや権限不足など、操作単位の失敗。エラー詳細が本文に入る | 通常は AI が内容を読んで自動で修正・再試行します |