AI エージェント連携 (MCP)

MCP (Model Context Protocol) は、AI アシスタントを外部サービスに接続するための標準規格です。 raxel は公式 MCP サーバーを内蔵しており、Claude などの MCP 対応 AI から、 アプリのレコード閲覧・作成・更新、コメント投稿、ワークフローのステータス変更を安全に行えます。

たとえば「報告受付アプリ」を作っておけば、あなたのチームの AI エージェントが報告を読み取り、 対応し、結果を記録してステータスを進める — という運用を、コードを書かずに構築できます。

2 つの接続方法

AI クライアントの種類に応じて、接続方法は 2 つあります。

接続方法
API トークン
対象クライアント
認証ヘッダーを設定できるクライアント (Claude Code、各種 CLI/IDE 系)
動作する権限
トークン発行者の権限
接続方法
OAuth (画面で許可)
対象クライアント
OAuth 対応クライアント (claude.ai の Web 画面のコネクタなど)
動作する権限
許可したユーザー本人の権限

API トークン接続: 2 種類のトークン

API トークンは 2 種類あり、目的で使い分けます。

トークン
アプリ API トークン
できること
そのアプリのレコード操作 (閲覧・作成・更新・コメント・ステータス変更)
発行場所
各アプリの設定 → 「APIトークン」
トークン
AI エージェント連携トークン
できること
新しいアプリの作成 (後述)。発行時に選択すれば、対象アプリのレコード操作 (閲覧 / 書き込み / 削除)、そのトークンが作成したアプリの設定編集 (後述の「AI によるアプリの作り込み」)、および複数アプリをまとめる「パッケージ」の管理 (後述の「AI によるアプリのグループ管理」) も追加で許可できます
発行場所
システム管理 → 「AI エージェント連携」

「AI にアプリを作らせて、そのまま運用させる」場合は、AI エージェント連携トークンの発行時に「データの操作」を許可します。そのトークンで作成したアプリのレコードを、 同じ接続のまま操作できます (アプリごとに API トークンを発行し直す必要はありません)。 既存のアプリを操作させたい場合は、発行時または発行後に「対象アプリ」へ追加します。 アプリ API トークンは、外部システム連携のように「1 つのアプリだけを渡したい」場合に使います。

準備: API トークンの発行

認証にはアプリの 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 Code から接続する

claude mcp add raxel \
  --transport http \
  https://<サブドメイン>.raxel.jp/api/mcp \
  --header "Authorization: Bearer <APIトークン>"

接続後は「アプリの概要を見せて」「未対応のレコードを一覧して」「この 3 件を対応済みにして」のように、 自然言語で指示するだけで AI がツールを呼び出します。

claude.ai (Web 画面) から接続する — OAuth

claude.ai のコネクタ機能のように OAuth を前提とするクライアントは、トークンの貼り付けではなく画面での許可で接続します。手順:

  1. claude.ai の「コネクタを追加」(カスタムコネクタ) で、上記のサーバー URL (/api/mcp) を登録します
  2. 接続を開始するとブラウザで raxel が開きます (未ログインの場合はログイン後に続行)
  3. 許可画面で、この接続に許可する操作を選びます — 「特定アプリのレコード操作」(対象アプリと閲覧のみ / 閲覧と書き込み)、「アプリの新規作成」(アプリ作成権限を持つ場合のみ)、「特定アプリの管理」(対象アプリの設定編集。後述の「AI によるアプリの作り込み」を参照)、または「メール」(自分がメンバーの受信箱。後述の「外部の AI の接続 (管理者の設定)」を参照)。 確認のため再認証 (パスワード等) が必要です
  4. 許可すると自動でクライアントに戻り、接続完了です

管理者が外部の AI の接続を許していない場合 (システム管理 → 「AI エージェント連携」の「外部の AI の接続」が「禁止」、 または自分が許可された人に入っていない、つなぐ AI のサービスが許可されていない) は、許可画面で理由が表示され、つなげません。 詳しくは後述の「外部の AI の接続 (管理者の設定)」を参照してください。

  • OAuth 接続は許可したユーザー本人の権限の範囲でのみ動作します (管理者が発行する共有トークンと違い、本人のアクセス権を超えられません)
  • 許可した接続は個人設定の「接続済みの AI」でいつでも確認・解除できます。解除は即時に反映されます
  • 接続がユーザー個人の権限に紐づくため、退職・権限変更にも自動で追従します

その他の MCP クライアント

Streamable HTTP transport に対応した MCP クライアントであれば接続できます。 認証ヘッダーを設定できるクライアントは「サーバー URL + API トークン」、 OAuth (Dynamic Client Registration + PKCE) に対応したクライアントは「サーバー URL のみ」で接続できます。

外部の AI の接続 (管理者の設定)

OAuth で AI をつなぐ接続は、アプリのレコード操作・アプリの新規作成・アプリの管理・メールのどれも、次の 2 つの条件で管理者が統制します。 許可画面の選択肢にある「メール (自分がメンバーの受信箱)」では、AI に渡す受信箱と、許可する操作 (読むだけ / 読む + 仕分け・紐付け・下書き) も選びます。AI が使えるのは、許可した本人がメンバーになっている受信箱だけです。

  1. システム管理 → 「AI エージェント連携」の「外部の AI の接続」で、外部の AI の利用が許可されていること (全員、または対象を選んで許可します。既定は「禁止」で、管理者が選ぶまでどの接続もできません)
  2. つなぐ AI のサービスが許可されていること。既定では推奨のサービスが許可されており、どのサービスかは同じ画面の 「推奨のサービス」の欄に表示されます。PC 上のアプリから接続する AI は、管理者が許可したときだけ使えます

メールの接続には、上の 2 つに加えて、もう 1 つの条件があります。

  • 受信箱の設定の「外部の AI で使う」がオンになっていること (メールだけの条件です。アプリの接続には関係しません)
  • 条件は、接続を許可するとき・コードの交換・トークンの更新・呼び出しのたびに確かめます。設定を変えると、すでにつながっている接続にも直後から効き、条件を満たさなくなった接続は断られます (システム管理者も例外ではありません)
  • どの AI のサービスからつないだかを記録していない古い接続は、呼び出しが 401 になります。AI のサービスから 1 回つなぎ直してください
  • 管理者が発行するトークンには、この統制は効きません (アプリの API トークン・AI エージェント連携のトークン)。 これらは管理者が発行して貼る方式で、OAuth の接続とは別です
  • 管理者は同じ画面の「つながっている AI」から、接続を外せます。外した接続は、次のリクエストから使えなくなります
  • AI がメールを送信することはできません。書けるのは下書きまでで、送信は人が画面から行います
  • アプリ設定の道具 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
内容
あなたの返信の下書きを読む・本文を保存する (送信はしません。差し戻された下書きを書き直すと普通の下書きに戻ります)
必要な許可
読む + 仕分け (オーナー・担当者)
  • 下書きの衝突: AI は下書きの版を確かめて保存します。画面で同じ下書きを編集して保存していると、 AI の保存は断られます。逆に、AI が保存した後で画面から保存しようとすると「別の場所 (AI など) で更新されました」と出ます。 「最新を読み込む」を押すと最新の下書きが表示され、それまで編集していた内容は下に残ります
  • 承認を依頼中・承認済み・送信中の下書きは、AI からは書き換えられません。この場合の保存は、版が古いときと同じ衝突の応答 (409 mail.draft.conflict) で断られるので、 下書きを読み直して approvalStatus を確かめてから、やり直すか判断してください
  • ツールに定義されていない引数を渡すと、共通のエラー (mcp.tool.invalidArguments) で断られます
  • 外部の AI が読んだ・変更した操作は、監査ログに「外部の AI がメールを読んだ」「外部の AI がメールを変更した」として残ります (本文は記録しません)。紐付けと解除は、画面の操作と同じ記録に「外部の AI から」の印が付きます
  • 1 つの接続で 1 分に 60 回、1 つの契約で 1 日に 2 万回まで使えます

使えるツール (レコード操作)

アプリの 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 エージェント連携トークン)

ここまでのツールは「既存アプリのレコード操作」でした。これとは別に、AI に新しいアプリそのものを作らせることもできます。 「顧客からの問い合わせを受け付けるアプリを作って。件名・内容・優先度・対応状況が欲しい」のように指示すると、 AI がフィールド構成とビューを設計してアプリを作成します。

  1. トークンの発行 — システム管理 → 「AI エージェント連携」から トークンを発行します (管理者のみ、再認証が必要)。 追加許可を付けない場合、このトークンでできるのは新しいアプリの作成だけです (レコードの操作・設定の編集を任せる場合は、この画面で「データの操作」「設定編集」を選びます)
  2. 接続 — アプリのトークンと同じ URL (/api/mcp) に、 発行した AI エージェント連携トークンで接続します。接続すると create_app ツールが使えるようになります
  3. 作成と確認・公開 — AI が作成したアプリはドラフト (非公開) 状態で作られます。 内容を確認・調整してから公開します。公開は画面の「公開する」ボタンでも、 AI に 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" } }
  ]
}
  • アプリ定義が不正な場合はエラー詳細が返り、AI が自分で修正して再試行します (壊れた定義がそのまま作られることはありません)
  • 作成できるフィールド・ビューの種類は、画面から作れるものと同じです。ただし範囲フィールドだけは create_app では作れません (作成後の設定が要るため)。範囲フィールドを含むアプリは、まず別の型か項目なしで作り、その後 update_form と apply_form で範囲フィールドを追加します
  • 同じフィールドコードを 2 つ渡すとエラー (400) になります — どのコードが重複しているか、 そのコードを使っているフィールドが何本あるかが応答に入るので、片方のコードを変えて送り直してください。 なおコードは比較の前に正規化されます (前後の空白を落とす / 半角英数は小文字化 /camelCase・ハイフン・空白は _ に統一)。 そのため taskStatus と task_status のように送った時点では違って見えるコードも重複扱いになります
  • フィールドの設定 (settings) に、その型で使えないキーを入れるとエラー (400) になります — 応答にその型で指定できるキーの一覧が入り、綴り違いが疑われる場合は「もしかして」の候補も付きます。 知らないキーが黙って保存され、設定したつもりの機能が無効のまま動く事故を防ぐためです
  • フォームは作成と同時に本番へ反映されます (create_app_from_blueprint と同じ扱い)。ただしアプリ自体はドラフト (非公開) 状態なので、レコードの追加・閲覧を始めるには公開が必要です (画面の「公開する」ボタン、または AI からは publish_app)
  • 不要になったアプリは delete_app でゴミ箱へ移動できます。最初の呼び出しでは削除されず、残っているレコード件数・このアプリを参照している設定・パッケージの一員かどうか・戻しても元に戻らないものが返るので、それを確認してから件数を添えて再送する形です (戻すときは restore_app。公開フォームが再び届くようになる場合は申告が要ります)
  • このトークンでできるのは作成のみです。作成後の作り込み (フォーム・ワークフロー等) を AI に任せたい場合は、発行時に設定編集を追加許可してください (後述の「AI によるアプリの作り込み」を参照)。それ以外は画面 (または raxel 組み込みの AI 生成) で行います
  • レコード操作も同じ接続でできます — 発行時 (または発行後の変更) に「データの操作」を許可すると、 このトークンの対象アプリに対して create_record /list_records などが使えるようになります。 対象アプリは既定で「このトークンで作成したアプリ」で、既存アプリは管理画面から追加できます。 レコード系ツールは appId を必須の引数に取り、対象外のアプリを指定すると拒否されます。そのアプリが参照している他のアプリ (ルックアップの参照先・集計の集計元・転記アクションの転記先) も対象アプリに入っている必要があります — 参照先の値はレコードの読み書きでそのまま出入りするためで、入っていない場合は「参照先を対象に追加してください」というエラーになります。 実際にできることはトークンを発行した人がそのアプリに対して今持っている権限の範囲に限られ、権限を失えばその時点で使えなくなります。 なお OAuth 接続 (claude.ai のコネクタ等) にはこの拡張は及びません — レコード操作は許可画面で選んだ「特定アプリのレコード操作」の範囲だけです
  • 複数のアプリをまとめて作らせたい場合は、create_app の任意引数 componentId で「パッケージ」に紐づけられます (次項「AI によるアプリのグループ管理」を参照)

AI によるアプリのグループ管理 (パッケージ)

複数のアプリ・パイプライン・ポータル等をひとまとめに追跡・管理する仕組みがパッケージです (画面での使い方はアプリストア・パッケージマニュアルの 「導入済みパッケージ」を参照)。AI エージェント連携トークン、または OAuth の 「アプリの新規作成」で接続した AI にも、この管理を任せられます。

  • 「パッケージ管理」は独立した許可単位 — フォーム・ワークフロー等の設定編集 (前項) とは別の capability で、AI エージェント連携トークンの発行時、または OAuth「アプリの新規作成」の許可画面で 追加で選びます。契約内のすべてのアプリ等が対象になり (特定アプリだけに絞ることはできません)、 「特定アプリの管理」(OAuth app_manage) では選択できません
  • 許可すると、AI は create_app の componentId 引数で新しいアプリをパッケージに所属させたり、以下のツールでパッケージ自体を操作したりできます
  • 所属に失敗しても (指定した componentId が存在しない、対象パッケージを操作する権限がない等)、 アプリの作成自体は成功します。create_app の応答の 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 によるアプリの作り込み (設定ツール)

アプリを作った後の「作り込み」— フォームのフィールド構成、ワークフロー、条件付き書式、入力ルール、通知、権限、ビュー、帳票、転記アクション、 公開フォーム、公開ビュー、スケジュール起票、残高設定 — についても、許可した範囲内で AI に任せられます。対話的に「この項目を必須にして」「承認ステータスを追加して」のように 指示しながら、アプリを育てていく使い方を想定しています。

  • 領域ごとの許可制 (capability) — フォーム・ワークフロー・条件付き書式・入力ルール・通知・権限・ビュー・帳票・転記アクション・ 公開フォーム・公開ビュー・スケジュール起票・残高設定・Webhook など、設定の領域はそれぞれ個別に許可します (領域とツールの対応は下の表)。許可していない領域のツールは AI 側のツール一覧に表示されず、 呼び出しても実行できません。ただし「存在するが権限が無い」ことは分かるようにしてあります —tools/list の応答にunavailableTools (提供されていないツールの名前と必要な capability) が入るので、 AI は「この製品にその機能が無い」のか「自分のトークンに権限が無い」のかを区別でき、利用者に何を発行し直せばよいか伝えられます
  • 許可するタイミング — OAuth の「特定アプリの管理」を選んだとき (許可画面のチェックボックス)、 または「アプリの新規作成」を選んだとき・AI エージェント連携トークンを発行するとき (どちらも追加で任意選択) に、 許可する領域を選びます。後からの変更は、接続を解除して選び直してください
  • フォームの反映は 2 段階 / 項目の削除だけ関門つき — フォームの変更はいったん下書きに保存され、 本番への反映は別のツール (apply_form) で行います。項目の追加・変更だけなら AI がそのまま反映できますが、 既存項目 (またはテーブルの子項目) が消える反映は、消える件数を AI が申告しない限り実行されません。 申告が無い / 件数が違う場合は反映せずに差し止め、「何が消えるか」「値が失われるレコード件数」 「消える項目を参照している主な設定」を AI に返します (画面の確認ダイアログと同じ内容です)。 なお反映すると、フォームのテストモードで作ったテストレコードは画面から反映したときと同様に破棄されます ワークフロー・条件付き書式・入力ルール・通知・権限・ビュー・帳票・転記アクションの変更は保存と同時に反映されます。 下書きの段階でうっかり項目を落としてしまった場合も、反映する前なら元に戻せます — get_form が落ちた項目 (droppedFromDraft) を返すので、AI はそれをそのまま下書きへ戻せます
  • フィールドの設定キーは型ごとに決まっている — フォーム設定ツール (update_form) と アプリ作成 (create_app / create_app_from_blueprint) は、 その型に無い設定キーを送ると保存せずに差し止め、応答に「指定できないキー」 「綴りの近い正しいキー」「その型で指定できるキーの一覧」を返します。以前は知らないキーが黙って保存され、 get_form で読み返しても間違いに気付けなかったため、設定したつもりで効いていない状態 (例: 二重予約防止の判定単位のキー名を間違えて、アプリ全体で重複禁止になっている) が 運用に入るまで分からない、という事故が起きうる形でした。 なお、以前の仕様で既に保存されてしまった不明なキーは、そのまま送り返す限り差し止めません (無関係な変更まで保存できなくなるのを避けるため)。 キー名だけでなく値も検証されます — 保存できても実行時に黙って無視される値 (日付項目の既定値の語彙外の文字列、選択肢に無い既定値、ビュー絞り込みの日付として読めない値) や、 関連レコード集計の集計元アプリに存在しない項目への参照 (紐づけキー・絞り込み条件・集計対象) は、下書きの時点で理由と正しい形を添えて差し止めます
  • 範囲フィールドと二重予約防止は update_form から設定する — 範囲フィールド (range) は create_app では作れず、update_form + apply_form で追加します。設定キーはbaseType (日付・日時・時刻・数値。作成後は変更不可)、preventOverlap (重複を禁止する)、overlapScopeFieldCodes (重複を判定する単位。フィールドコードの配列で最大 3 件) です。 単位を省略するとアプリ全体で 1 グループ = どの会議室でも同じ時間帯を取れない、という設定になります (範囲フィールドの解説も参照)
  • ビューは一覧・カレンダー・カンバン・ガント・グラフ・クロス集計・マトリクス・リソースタイムライン・カードの 9 種 — ビュー設定ツールが作成・編集できるのはこの 9 種です。 カードは置き換えの対象なので、ビュー設定ツールで取得したカードも含めて送ってください (送らないと削除の申告が必要です)。 カードの画像に文字列・リンクの項目を新しく指定できるのは画面のビュー設定だけです (閲覧者のブラウザーが社外の画像を読みに行くため。添付の項目は指定できます)。グループ付きの絞り込み (承認の段が複数あるアプリの「自分の承認待ち」など) も AI から設定できます。 AI が名前や並びだけを変えても、画面で作ったグループ付きの絞り込みは消えません
  • ガントの自動配置は AI からは有効にできない — 自動配置 (CPM) とプロジェクト開始日は、 有効にすると横棒をドラッグするたびに依存する他のレコードの日付もまとめて更新されるため、 画面のビュー設定から人が有効にする項目です。既に有効になっているビューを AI が編集しても、 この設定は維持されます
  • 帳票は「AI が作れる内容だけでできているもの」が対象 — 帳票設定ツールはテキスト・フィールド・表・ 罫線・囲み枠・QR/バーコード・グラフ・レコードの添付画像を配置できますが、アップロードした画像やテンプレート PDF を使っている帳票、ページ送りルール・複数ページを使っている帳票、 要素をグループ化・ロックしている帳票、ラベル面付け (まとめ印刷) を使っている帳票は読み取り専用です。それらは画面の帳票設定から編集してください (置き換えの対象から外れているので、AI の操作で消えることはありません)
  • ロゴなどの画像は AI では貼れない — AI はファイルをアップロードできないため、 固定の画像を帳票に貼るのは画面の帳票設定からになります (レコードの添付ファイルフィールドの写真を出す要素は AI からも配置できます)
  • 転記アクションの転記先は「この接続が管理しているアプリ」だけ — 転記アクション (レコードを別のアプリへ写す設定) は別アプリへ行を書き込む経路になるため、転記先に指定できるのは その接続で管理しているアプリに限られます。加えて、操作した本人がその転記先アプリの管理者である 必要があります。管理対象外のアプリを指している既存の転記アクションは読み取り専用になり、AI の操作で消えることはありません
  • 上書き (upsert) の一致キーは慎重に — 転記アクションには「一致キーが同じレコードが あれば上書きする」モードがあります。キーに使えるフィールドの型 (複数値になる型は不可、 ユーザー選択などは単一選択のみ) はサーバーが検証しますが、「そのキーで対象が一意に決まるか」 はサーバーには判断できません。日付だけをキーにすると別の人のレコードを上書きしうるため、 AI が一意でないキーを 1 つだけ指定した場合は応答に警告を返します
  • 自分を狙って対象にしている権限行は変更不可 — 権限設定ツールで、操作した本人 (トークン発行者・OAuth 許可者) を直接対象とする行や、本人が所属するグループ・組織の行を 追加・変更・削除しようとすると拒否されます。応答にはどの行が原因かが入ります。 自分の権限を変えたい場合は画面から行ってください
  • 全員向けの権限行は「変更内容を書き写せば」変更できる — 「全員に付いている既定の閲覧・追加・編集・削除を絞る」のは本来やるべき作業なので塞いでいません。 ただし全員向けの行は本人にも効くため、confirmSelfPermissionChange にその行の変更前 → 変更後を書き写した場合だけ通ります (現在値を読まないと書けません)。 アプリ権限・レコード権限・フィールド権限の 3 種類で同じ扱いです
  • レコード権限の「はじめての構築」は書き写しで通せる — レコード権限は「どのルールにも一致しなければ既定で許可」のため、ルールが 1 つも無い状態からの 新規構築は既定を狭める方向にしか働きません。そのため「登録した本人だけが見られる」のような構成 (作成者ルール + 全員向けの不許可ルール) も、書き写しの申告つきで AI から設定できます (自分の userId を直接指定する行だけは常に画面から)。2 回目以降の変更は上の扱いに戻ります

設定ツールの一覧 (capability 名つき)

領域ごとにツールが 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
設定領域
ワークフロー (ステータス・遷移)
capability
settings:workflow
ツール
get_workflow / set_workflow
設定領域
条件付き書式 (行の色分け)
capability
settings:row_color
ツール
get_row_color_rules / set_row_color_rules
設定領域
入力ルール (自動計算・必須化等)
capability
settings:input_rules
ツール
get_input_rules / set_input_rules
設定領域
通知ルール・リマインダー
capability
settings:notifications
ツール
get_notification_rules / set_notification_rules / get_reminders / set_reminders / preview_reminders / preview_notifications
設定領域
未登録チェック (あるはずのレコードが登録されていないことを検知して通知)
capability
settings:notifications
ツール
get_absence_rules / set_absence_rules
設定領域
スケジュール起票 (その日が来たらレコードを自動作成)
capability
settings:scheduled_rules
ツール
get_scheduled_rules / set_scheduled_rules
設定領域
残高設定 (付与で増え消化で減る残数と、期限による失効)
capability
settings:balances
ツール
get_balance_settings / set_balance_settings
設定領域
アプリ権限
capability
settings:permissions
ツール
get_permissions / set_permissions / preview_record_as
設定領域
ビュー (一覧・カレンダー・カンバン・ガント・グラフ・クロス集計・マトリクス・リソースタイムライン・カード)
capability
settings:views
ツール
get_views / set_views / preview_view
設定領域
帳票 (印刷テンプレート)
capability
settings:print_templates
ツール
get_print_templates / set_print_templates
設定領域
転記アクション
capability
settings:actions
ツール
get_actions / set_actions
設定領域
公開フォーム (ログイン不要の URL で外部から投稿を受け付ける)
capability
settings:public_forms
ツール
get_public_forms / set_public_forms / get_verified_addresses
設定領域
公開ビュー (ログイン不要の URL でレコードを外部へ公開する)
capability
settings:public_views
ツール
get_public_views / set_public_views
設定領域
アプリ定数 (数式から CONST("コード") で参照できる名前つきの数値)
capability
settings:constants
ツール
get_app_constants / set_app_constants
設定領域
メール送信ボタン (レコードから共有受信箱の下書きをレコードの値で埋めて開くボタン)
capability
settings:mailButtons
ツール
get_mail_buttons / set_mail_buttons
設定領域
ポータル (トップ画面のレイアウト。管理者の接続のみ)
capability
settings:portals
ツール
get_portal_layouts / set_portal_layouts
設定領域
マニュアル (アプリ横断の説明書 — 構築した業務の運用手順を製品内に書き残す)
capability
settings:manuals
ツール
get_manuals / set_manuals
設定領域
起点つき集計 (レコードの日付を起点にした期間で、別アプリの行を集計して書き戻す)
capability
settings:anchored_windows
ツール
get_anchored_window_settings / set_anchored_window_settings
設定領域
拡張アプリ (基本アプリのレコード 1 件につき、別アプリのレコードを 1 件だけ結びつける宣言)
capability
settings:extensions
ツール
get_extensions / set_extensions
設定領域
アプリの基本設定 (名前・説明・アイコン・色・レコードのタイトル・デザインテーマ・一覧の縦罫線・コメント・一覧での直接編集・ステップフォーム)
capability
settings:general
ツール
get_app_settings / update_app_settings
設定領域
期間ロック (締めた期間のレコードを編集・削除できなくする)
capability
settings:period_locks
ツール
get_lock_rules / set_lock_rules
設定領域
カテゴリー (レコードを分類する木。機能を使えるようにするのは update_app_settings の categoriesEnabled)
capability
settings:categories
ツール
get_categories / set_categories
設定領域
拡張機能の有効・無効 (アプリのメニューに出す拡張機能の選択)
capability
settings:features
ツール
get_app_features / set_app_features
設定領域
多言語化 (項目名・アプリ名・説明・ビュー名・ステータス名・カテゴリー名の翻訳)
capability
settings:localization
ツール
get_localizations / set_localizations
設定領域
レコードのテンプレート (レコードの作成の雛形。レコードの閲覧・追加の権限も要る)
capability
settings:record_templates
ツール
get_record_templates / set_record_templates
設定領域
レコードの種類 (1 つのアプリの伝票の種別。種類ごとに項目の必須 / 任意 / 非表示と既定の帳票を決める)
capability
settings:record_types
ツール
get_record_types / set_record_types (preview_form は recordTypeCode で種類ごとの新規画面を評価)
設定領域
CSV 出力のテンプレート (書き出しの形とスケジュールの出力。スケジュールを有効にする保存は confirmUnattended の申告が要る・定義を直せるのは作成者だけ)
capability
settings:export_templates
ツール
get_export_templates / create_export_template / update_export_template / delete_export_template
設定領域
データパイプライン (複数のアプリを読み、結合・集計して別のアプリへ書く。管理者の接続のみ。スケジュール・置き換えを有効にする保存は申告が要る)
capability
settings:data_pipelines
ツール
get_data_pipeline / create_data_pipeline / update_data_pipeline / delete_data_pipeline / preview_data_pipeline
設定領域
Webhook (レコードの変化をアプリの外の URL へ送る。送り先を増やす保存は confirmWebhookDestination の申告が要る・secret は画面だけ)
capability
settings:webhooks
ツール
get_webhooks / get_webhook_logs / create_webhook / update_webhook / delete_webhook / test_webhook

カテゴリー・拡張機能・多言語化・レコードのテンプレートを AI から設定する

それぞれ 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 件までです

CSV 出力のテンプレート・データパイプラインを AI から設定する

settings:export_templates を付けたトークンで CSV 出力のテンプレートを、settings:data_pipelines を付けた管理者のトークンでデータパイプラインを、 1 件ずつ作る・直す・消すことができます。どちらも人が見ていない間に動く設定なので、次の決まりがあります。

  • 直すときは定義の全部を送ります — 読みの道具 (get_export_templates /get_data_pipeline) が返した定義に手を加え、項目を省かずに送り返します。 足りない項目があると保存せずに名前を返します。直す・消すには読みの道具が返した版 (version) を添え、 その間にほかの人が変えていれば保存しません (保存の応答は版を返さないので、続けて直す・消すときは読み直します)
  • 無人で動く内容の申告 — 保存した後にスケジュールが有効 (パイプラインは「全件置換」も) なら、サーバーが計算した 「いつ・何を・どのアプリへ・誰の権限で動くか」(confirmUnattended) を書き写して送ります。 違えば保存せず、正しい内容を返します。これは AI の読み違いを減らすためのもので、人の承認の代わりではありません
  • 直せるのは作成者だけ — スケジュールの実行は作成者の権限で動くので、作成者でない人は AI から定義を直せません。 スケジュールを止める (stopSchedule: true) ことと消すことは、作成者でなくてもできます。 止めるときは内容を確かめないので、壊れた設定・プランの外の設定も止められます
  • CSV 出力のスケジュールは、テンプレートに書いた絞り込み (scheduleFilters /scheduleFilterTree) のレコードを出します。一覧ビューの設定は効きません。 Excel (format: "xlsx") のテンプレートはスケジュールを有効にできません (CSV・TSV・固定長で出します)
  • パイプラインの試し (preview_data_pipeline) は出力先へ書かずに結果の先頭を返します。 結果は操作した人の権限で試算したもので、作成者の権限で動くスケジュールの実行とは違うことがあります。 今すぐの実行は AI からはできません (画面から実行するか、スケジュールに任せます)
  • 消すときは、消える件数 (テンプレートは自身 1 件とテンプレートの選択が外れる一覧ビュー、パイプラインは自身 1 件と実行の履歴) をconfirmRemovals に申告します。実行中のパイプラインは消せません

Webhook を AI から設定する

settings:webhooks を付けたトークンで、Webhook を 1 件ずつ読む・作る・直す・止める・消す・テスト送信することができます (画面と同じく、アプリの管理者の権限が要ります)。Webhook はレコードの値をアプリの外へ送る設定なので、次の決まりがあります。

  • 定義は 4 項目を省かずに送ります — 読みの道具 (get_webhooks) が返すdefinition (name・url・events・enabled) に手を加えて送り返します。足りない項目があると保存せずに名前を返します。 作るときに enabled を省くと、止めた状態で作ります (作ってすぐ送り始めません)。 直す・消すには読みの道具が返した版 (version) をexpectedVersion に添え、その間に変わっていれば (自動停止・画面での secret の設定や解除を含む) 保存しません
  • 送り先の申告 — 作るとき、URL か送るきっかけ (events) を変えるとき、 止めているもの (自動停止を含む) を有効に戻すときは、保存した後の { url, events, enabled } をconfirmWebhookDestination に書き写して送ります。違えば保存せず、正しい申告を返します。 名前だけの変更・止める・消す・テスト送信には要りません (送っても保存は止めず、「申告は不要でした」と注記します)。これは AI の読み違いや指示に紛れ込んだ送り先を止めるためのもので、人の承認の代わりではありません
  • 止めるのは専用の形 — { appId, webhookId, expectedVersion, stop: true } をupdate_webhook に送ると、ほかの値は変えずに止めます。内容・プラン・URL を確かめないので、 プランに Webhook が含まれなくなった後や、いまの規則では通らない URL を持つ Webhook も止められます
  • secret は画面だけ — AI は secret を設定・変更・読み取りできません (読みの道具はhasSecret で有無だけを返し、入力に secret を入れると 400)。 直しても今の secret は残ります。secret の無い Webhook を作る・有効にすると、受け取る側で署名 (X-Webhook-Signature) を確かめられないことを応答で知らせます
  • 画面と同じ関門 — 作る・定義の全体を直す・テスト送信は、プランに Webhook が含まれる場合だけです (読む・止める・消すは含まれなくてもできます)。 URL は内部のアドレスを拒み、送るきっかけは決まった値だけを受けます。1 つのアプリの Webhook は 50 件までです (画面も同じ)
  • 送り先を決められる人 — 作る・URL や送るきっかけを変える・止めたものを有効に戻すは、トークンの持ち主がそのアプリのレコードと項目を 全部見られるときだけです (見えない行・項目が 1 つでもあれば webhook.requiresFullDataAccess で拒みます。画面も同じ)。 保存した人が「送り先を決めた人」になり、配信は送る時点でもその人が全部を見られるときだけ送られます (見られなくなれば配信のログで skipped)。 名前だけの変更・止める・消すは誰でもできます。get_webhooks のhasDestinationOwner が false の Webhook は送られません (止めてから有効にし直すと入ります)
  • 接続の範囲 — Webhook が送るレコードの値には、ルックアップで写した別のアプリの値も入ります。そのため、接続の範囲外のアプリの値を参照している アプリの Webhook は、作る・送り先を増やすことができません (拒否の文に範囲外のアプリの名前は出しません)
  • 配信のログ (get_webhook_logs) は、1 つの Webhook の配信を新しい順に 50 件ずつ返します。 送った本文・相手の応答・エラーの文は返しません (日時・状態・試行回数・HTTP の番号・成否・所要時間だけ)
  • テスト送信 (test_webhook) は、保存済みの URL へ見本を 1 回送り、成否と HTTP の番号だけを返します。 1 つの Webhook につき 1 分に 10 回まで (画面からの送信と合わせて数えます。超えると 429 の webhook.testRateLimited)
  • 気を付けること — URL を変えると、変える前に待ち行列に積まれた配信 (再送を含む) も送る直前に新しい URL へ送られます (既に送信中のものだけは前の URL で終わることがあります。止めた場合は、送信中のものを除いて送られません)。本文は送る直前に今のレコードと今の項目から作るので、 再送は出来事の時点ではなく送る時点の最新の値を送ります。本文はレコードと項目を全部見られる人が決めた送り先へ、その時点のレコードの値をそのまま送るので、受け取る側の扱いに注意してください。 消すと配信のログも一緒に消えます (消さなくても、終わった配信のログは 30 日で消えます)

期間ロックを AI から設定する

期間ロックはsettings:period_locks を付けたトークンで読み書きできます。 ルールを外すと、その期間の編集・削除の禁止がすぐ解けるので、外す操作だけ強い関門があります。

  • 手で作ったルールの全量置換 — 残すルールは{ id } だけで送ります (既存のルールは書き換えられません)。 期間を変えたいときは、新しいルールを足して古いルールを外します
  • 外すルールは中身を書き写して申告する — get_lock_rules のconfirm をそのままconfirmRemovals に並べます。取得の後に中身が変わったルールは外れません
  • レコードも書き換えられる接続では外せない — 同じトークンにrecords:write かrecords:delete があると、ルールの追加はできますが外すことはできません (1 つの接続が「ロックを外してすぐ書き換える・消す」をできないようにするためです)
  • 連動の条件(別のアプリの締めによる自動ロック)は読むだけ — get_lock_rules に条件の内容が出ますが、AI からは作成・変更・削除できません(送っても送らなくてもそのまま残ります)。この AI 接続で扱えるアプリの範囲の外にある締める側のアプリの名前などは伏せられます

公開フォーム / 公開ビューを AI から設定する

公開フォームと公開ビューは、 画面だけでなく MCP からも設定できます(settings:public_forms /settings:public_views を付けたトークンが必要です)。 この 2 領域だけは認証なしで社外から到達できる面を作るので、他の設定領域とは別の関門を置いています。

  • 作成と公開は 2 手に分かれる — 新規作成のenabled の既定は false です (画面の新規作成モーダルは既定 ON ですが、あちらは人が公開フィールドのチェックリストを見ながら決めています)。 気付かないうちに無防備な公開ページができることはありません
  • 公開されるものを書き写して申告する —enabled: true にする呼び出しはconfirmPublicExposure を要求します。 「この呼び出しの後にログイン不要で到達できるもの」を、名前・公開されるフィールドコード・ レコードの範囲 (all = 絞り込み条件が 1 つも無い /filtered)・配信される選択肢まで含めて申告し、サーバーの計算と完全に一致しないと書き込みません。 一致しない場合は 400 とともに正しい申告値そのものが返るので、読めば必ず通せます
  • 「どこへ出て行くか」も申告する — 公開フォームに通知先メールアドレスを設定すると、送信された内容と送信者の IP アドレスが、送信のたびにそのアドレスへ転送されます。 外部のアドレスを入れれば、匿名の訪問者が入力した個人情報がそのまま社外へ出続けることになるため、 転送先も confirmPublicExposure のnotifyEmails に書き写す必要があります。 応答の publicExposure[].outbound には、 転送先のほか自動返信・外部ホストのロゴ・アクセス解析・送信後のリダイレクト先など 「データや訪問者が外部へ出る経路」がすべて並ぶので、設定した本人以外にも何が起きるかが分かります
  • 自動返信の宛先は訪問者が入力したアドレスだけ — 自動返信メールの宛先に指定できるのは、 そのフォームの入力欄にあるメールアドレス項目に限られます。入力欄に無い項目 (固定値が入る項目など) を 宛先にして、送信内容を第三者へ送る形は作れません
  • 選択肢は「レコードとは別の漏れ口」です — ドロップダウンなどの選択肢はフィールドの定義であってレコードではないため、公開ビューの絞り込み条件では隠せません。 「社内限定の案件名が選択肢に並んでいる」ようなフィールドを公開すると、その名前がそのまま社外へ配信されます。 そのため選択肢は申告対象に含めてあり (fieldOptions)、公開する前に必ず AI の目を通ります。 社外に出せない選択肢がある場合は、その項目を公開対象から外すか、選択肢そのものを整理してください
  • フィールドの定義は必要な分だけ配信されます — 公開ページに返すのは、 その項目を描くのに要る表示・入力の設定だけです。計算式、ユーザー選択の候補にした利用者の氏名、 ルックアップ・集計・関連レコードの参照先、AI 生成の指示文は公開ページには出ません
  • AI が触れないもの — 公開 URL の token、パスワード保護 (設定も解除もできません)、 ロゴの画像とその表示の切り替えは MCP からは扱えません。 公開ビューの意匠 (配色・ロゴ・favicon) も画面から設定します。 人が画面で掛けた保護を 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 を返し、 その呼び出しの全部を取り消します (読み直してから送り直します)
  • 公開フォームの見た目と送信の流れは AI から設定できます — テーマ・角の形・配色 (明るい / 暗い)・プライマリカラー・幅・背景・フォント・文字サイズ、 送信ボタンの配置、確認画面の有無とその文言、タイトル・説明・「powered by」の表示、ステップ表示の切り替えを指定できます。 指定しなかった項目は、今の設定のまま変わりません
  • 自動返信の返信先も AI から設定できます — 自動返信メールは送信専用のアドレスから届くので、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 か月後に更新手続きのレコードを起こす
設定
残高設定
何をするか
付与で増え、消化で減る残数を管理し、期限が来たぶんを失効させる
たとえば
有給休暇の残日数 / ポイント / 前払いの残額
  • 「いつ・誰について」の決め方は 3 通り — 暦の規則 (毎日 / 毎週◯曜 / 毎月◯日 / 毎年◯月◯日)、 起算日からの周期 (契約日の 12 か月後、以後 12 か月ごと)、 別のアプリに登録済みの日付 (シフト表の予定日)。 このうち周期の起算日に「別のアプリ」を指せるのは未登録チェックだけで、 スケジュール起票の起算日は設定しているアプリ自身のレコードに限ります (起票で別のアプリの日付を使いたい場合は「登録済みの日付」の方を選びます)。 「誰について」は利用者・組織・グループのほか、 別のアプリのレコードを母集団にすることもできます (例: 貸出中の備品ごとに 1 件あるはず)
  • 期限つき残高の失効は、残高設定だけを直せば追従します — 期限を設定した残高は、 失効ぶんを差し引くレコードを自動で作る起票ルールを 1 本ぶん従えます。そのルールはget_scheduled_rules では読み取り専用 (owned_by_balance_setting) で返り、 AI が直接書き換えることはできません。正本は残高設定側なので、二重に管理して食い違う状態を作りません
  • スケジュール起票と残高設定はコースによって制限されます — ライトコースでは 新規作成と、停止中のものの再開ができません (すでに動いているものはそのまま続き、確認・停止・削除は行えます)。 制限に当たった場合は、その理由が応答に入るので、AI は「自分の入力が悪い」と誤解せずに利用者へ伝えられます
  • くわしい考え方と画面からの設定は通知・スケジュール起票・残高設定の各マニュアルを参照してください

本番データを汚さずに動作確認する (テストレコード)

AI が組んだ設定 (ルックアップのコピー、関連レコード集計、入力ルール、フィールド権限など) が本当に効くかは、 レコードを 1 件通してみないと分かりません。そのために、本番データに混ざらないテストレコードを MCP から作成・照会できます。

  • 使い方 — create_record /list_records にisTest: true を付けます。 アプリの作り込みを許可した接続 (フォーム設定の capability を持つ AI エージェント連携トークン) と、アプリ管理者の接続で使えます
  • 本番と混ざりません — テストレコードは通常のレコード一覧・集計・関連レコード集計に 現れず、重複禁止や二重予約防止の判定も消費しません。照会はlist_records に isTest: true を付けたときだけ返ります
  • ルックアップの動作確認もできます — テストレコードのルックアップは、参照先アプリのテストレコードを優先して解決します (見つからなければ本番のレコードで解決)。 マスタ + 明細の構成なら、マスタ側にテストレコードを 1 件作り、明細側のテストレコードから そのキーを参照する、という一連の動作確認が本番データを 1 件も作らずに行えます
  • 関連レコード集計も確かめられます — テストレコードの集計値はテストレコードの子だけを数えます (ルックアップと同じ世界分離。 本番の集計値にテストが混ざることもありません)。マスタ側にテスト親、集計元に テストの子を数件作れば、件数・合計が実際に増えることを確認できます
  • 「その人にはどう見えるか」も確かめられます — preview_record_as に 利用者 id を渡すと、その人の資格でテストレコードを開いたときの姿 (見える値・ 見えないフィールドと理由・開けるかどうか) を返します。権限設定の検証を 「拒否されることの確認」だけでなく肯定形の証拠で行えます
  • テストレコードで確かめられないもの — 通知・リマインダー・ スケジュール起票はテストレコードでは発火しません。ただし乾式実行ファミリーで「動いたら何が起きるか」をテスト標本に対して 評価できます: preview_reminders (リマインダー) / preview_scheduled_rules (スケジュール起票 — いつ・どの主体に・どんなデータで起票されるか) / preview_absence_check (未登録チェック — 誰が未登録と判定され、誰に届くか) / preview_action (転記アクション — ボタンを押したら何が作られるか) / preview_print_layout (帳票 — 紙からはみ出す要素・空欄になる差し込み)。 いずれも通知・レコード・台帳は作られません。実際の発報だけは、 納品後に本番レコード 1 件 + get_notification_deliveries で確認してください。 その際、自分の操作による自分宛ての通知は作られないため、 書き込みと宛先が同一人物にならないように受け入れ試験を組んでください
  • 後始末は自動です — フォームを本番に反映する (apply_form) と、そのアプリの テストレコードは画面のテストモードと同様に一括破棄されます (破棄される件数は反映の確認応答に入ります)。 設定を直して同じ標本で再検証を続けたい場合は、apply_form に keepTestRecords: true を付けると破棄せず残せます (残した標本は項目削除の値掃除を 本番レコードと同様に受けるため、反映後もフォーム定義と整合したままです)

どのアプリを触れるか

接続方法
OAuth「特定アプリの管理」
設定を編集できる対象アプリ
許可画面で選んだ 1 アプリのみ
接続方法
OAuth「アプリの新規作成」+ 設定編集を追加許可
設定を編集できる対象アプリ
その接続で作成したアプリのみ
接続方法
AI エージェント連携トークン + 設定編集を追加許可
設定を編集できる対象アプリ
そのトークンで作成したアプリのみ
接続方法
OAuth「メール」
設定を編集できる対象アプリ
対象外 (自分がメンバーの受信箱の操作専用。アプリの設定は編集できません)
接続方法
アプリ API トークン
設定を編集できる対象アプリ
対象外 (レコード操作専用。設定編集の許可は付与できません)

つまり、すでに運用中の既存アプリの設定を AI に触らせられるのは「特定アプリの管理」で 本人が明示的に選んだ場合だけです。共有して使う AI エージェント連携トークンでは、そのトークン自身が作ったアプリ 以外は編集できません。

この「触れるアプリ」の範囲は、書き込む先だけでなく読み取る先にも効きます。前項の 3 つの設定は他のアプリを指せる数少ない設定で、 起票先 (レコードを作る先)・起算日の参照元・発生日の参照元・対象者の参照元の 4 か所がそれに当たります。 いずれも範囲外のアプリを指定すると拒否されます。

書き込みだけを止めて読み取りを許す、という扱いにはしていません。 「アプリ B に 15 日のレコードがありません」という通知はB の中身についての情報だからです。 アプリ A だけを任せたトークンが、通知を経由して B のレコードの有無を知れる状態を作りません。

  • 範囲外を指している既存の設定は、消えずに読み取り専用で見えます — 人が画面で作ったルールが範囲外のアプリを参照している場合、そのルールはeditable: false と理由つきで返り、 全量置換の対象から外れます (AI が送らなくても消えませんし、送ると差し止められます)。 そのとき、範囲外のアプリを指している部分 (起票先や発生の定義) は応答から伏せられます —アプリの id も名前も出ません。「読めない範囲の設定がここにある」ことだけが伝わります
  • 範囲を広げる手順はトークンの種類で違います — 複数アプリを扱えるトークン (システム管理 → 「AI エージェント連携」で発行したもの) なら、管理者が同じ画面で そのトークンの「対象アプリ」に追加すれば広がります。一方、1 つのアプリ専用の接続 (claude.ai のコネクタなどで「特定アプリの管理」を選んだもの) には 対象アプリを増やす口がありません — 扱いたいアプリを選び直して改めて連携を許可する(認可画面をやり直して新しい接続を作る) か、複数アプリを扱えるトークンを管理者に発行してもらってください
  • 拒否されたときの応答にも、何を拒んだか・いま指定できるアプリの一覧 (名前と id)・ 誰が何をすれば広がるかが入ります。AI はそれを読んで「これは自分では直せない、人に頼む作業だ」と 判断できるので、当てずっぽうの再試行を繰り返さずに済みます

設定ツール一覧

ツール
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 件に入れ替える) は「消えた」ではなく 「書き換えた」として扱われ、差し止めの対象にはなりません。設定変更の履歴は アプリの設定変更履歴に残るため、誰がいつ何を変えたかは後から確認できます。

アプリを設定ごと 1 回で作る (create_app_from_blueprint)

「アプリの新規作成」に加えて設定編集も許可した接続では、create_app_from_blueprint が使えます。アプリ定義 (フィールド・フォーム) と、ワークフロー・ビュー・権限・通知・転記アクション・ 帳票・入力ルール・条件付き書式をまとめて 1 回で作れるツールです。中身は上記の設定ツールを 依存順に呼んでいるだけなので、検証・削除の差し止め・設定変更履歴はすべて同じように働きます。

  • 新規作成専用です。既存アプリには使えません — 設定はすべて全量置換なので、既存アプリに一括適用すると書かなかった設定がアプリ全体の規模で消えてしまうためです。既存アプリの設定変更は個別の設定ツールで行います
  • 途中で失敗しても、そこで止まりません。アプリ本体の作成に失敗したときだけ中断します。設定の適用は 1 つ失敗しても残りを続け、どの設定が成功し・どれが失敗したかを応答で返します。失敗した設定は、作られたアプリに対して個別の設定ツールで当て直せば収束します
  • フォームは本番に反映されます (設定がフィールドを参照できる必要があるため)。ただしアプリ自体はドラフト (非公開) 状態のままなので、レコードの追加・閲覧を始めるには公開が必要です (画面の「公開する」ボタン、または AI からは publish_app)
  • アプリ作成時に自動で作られる権限行 (作成者の管理者行・Everyone 行) はそのまま維持され、AI が指定した行はその後ろに追加されます。自分を狙って対象にしている権限行 (直接の指定・所属グループ・所属組織) の変更は従来どおり画面からの操作専用です

search_docs (マニュアル検索)

raxel のマニュアルをキーワード検索するツールです。許可設定に関わらずすべての接続で常に使えます(読み取り専用・LLM 呼び出しなし)。「この機能はどう設定するのか分からない」場面で、AI が設計・実装の前に 自分で調べるために使います。

権限とセキュリティ

  • すべての操作は REST API と同じ認可 (トークン権限・レコード権限・フィールド権限・ワークフローの遷移ルール) とレート制限のもとで実行されます。MCP だから緩くなることはありません
  • トークン発行者がアプリへのアクセス権を失うと、そのトークンも使えなくなります
  • 設定の確認ツールでレコードの値を確かめるには、レコードの閲覧権限が必要です — preview_view・get_rebuild_status の値の照合・preview_reminders・preview_absence_check などでレコードの値を読むには、 トークン発行者がそのアプリのレコードを閲覧できる必要があります(アプリの設定を管理できるだけでは使えません)。 これらの確認ツールと preview_record_as は、発行者がアプリの管理者であっても、フィールドのアクセス権・レコードのアクセス権で見られない値は表示しません(トークンはアプリ管理者に昇格しないため、レコードの読み書きと同じ扱いです)。 ルックアップを軸にしたビューの preview_view は、参照先のアプリを閲覧できない場合は使えません
  • 絞り込み・並べ替え・集計に、発行者にとって閲覧が制限された項目は使えません(REST API と同じです)。 set_permissions で「編集」「削除」を付けた行は、「閲覧」も付いた形で保存されます
  • アプリ設定の編集は、上記「AI によるアプリの作り込み」で明示的に許可した領域・アプリに限られます。メンバー・スペース管理、アプリ API トークンの発行は MCP からは一切できません (画面での操作専用)
  • アプリの公開 (publish_app) と削除 (delete_app) は、AI エージェント連携トークンが自分で作成した (または管理を許可された) アプリに対してのみ行えます。画面の操作と同じ処理・同じ権限で、実行時にトークン発行者がそのアプリの管理者であることも確認されます。削除はゴミ箱への移動で、実行前に影響件数を確認する関門があります (復元は restore_app で、同じ範囲・同じ権限で行えます)
  • トークンは 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 が内容を読んで自動で修正・再試行します

運用のヒント

  1. AI にはまず get_app_overview を呼ばせて、フィールド構成を把握させます (公式サーバーの案内文にも組み込み済みなので、通常は自動で行われます)
  2. ドロップダウン等の選択肢フィールドは内部値で保存されています。AI への指示では「選択肢のラベル」で話して問題ありません — 対応表を AI が自分で解決します
  3. ステータス変更は「実行可能な遷移」の制約に従います。ワークフローの遷移ルールで AI に許可する操作範囲を設計できます (例: 完了への遷移は人間のみに制限)
  4. まずは「閲覧のみ」トークンで試し、運用が固まってから書き込みを許可するのが安全です
  5. 設定ツール (フォーム・ワークフロー等) も同様に、まず必要な領域だけを許可し、対話しながら少しずつ範囲を広げるのが安全です