できることと制限
Inkquationは、AIアプリがツールを呼び出すための共通の仕組みであるMCPに対応しています。AIは開いているページや投げ縄の選択範囲を画像として読み取り、PNG画像、図形、点列で表すペンの線を追加できます。追加後のページの確認と、条件を満たす操作の取り消しにも対応しています。
図形は塗りつぶしのない通常のペンの線になります。消しゴムや投げ縄で編集できますが、図形専用の寸法設定はありません。文字や記号を線で描くことはできますが、編集可能なテキストやLaTeXの追加・コンパイルには対応していません。ページの読み取り結果も、文字認識済みの文章ではなく画像です。
AIアプリにつなぐ
- 同じMac上で、ローカルのMCPサーバーに接続できるAIアプリを用意します。モデルやアカウントは接続先のAIアプリで設定します。InkquationにモデルのAPIキーを登録する必要はありません。
- Inkquationでノートを開き、「設定」→「AI接続」で接続を許可します。初期状態では無効です。
- 設定画面でJSONまたはTOMLの接続設定をコピーし、AIアプリの既存設定に追加します。アプリの実行ファイルと接続先のパスはMacごとに異なるため、設定画面の値を使ってください。
- AIアプリを再接続し、Inkquationを開いたまま使います。対象ページを画面に表示してください。AIアプリ側で編集ツールの許可が求められたら、依頼内容を確認して許可します。
標準の接続にはPythonのインストールや開発用リポジトリは不要です。Inkquationを移動・改名した場合は、接続設定をコピーし直してください。Web版AIサービスのURL入力欄に、このサイトのURLを登録しても接続できません。
最初の依頼例
- 「選択した数式の導出を読んで、途中式の抜けや符号の誤りを検討して。」
- 「このページから、仮定・結論・未解決の点を整理して、チャットで説明して。」
- 「この説明を補う模式図を作って、ノートの余白に追加して。」
AIがページを編集する手順
inkquation_list_open_notesで対象のnote_idとpage_idを取得します。available: trueのページを使います。対象が不明なときはユーザーに確認します。inkquation_get_pageでページ画像、revision、論理サイズを読みます。選択範囲を使う場合は、ユーザーが先に投げ縄で選択し、inkquation_get_selectionを呼び出します。- 既存の内容と重ならない位置を確認し、追加ツールを呼び出します。読み取った値を
expected_revisionに指定し、新しいUUIDをoperation_idに使います。 inkquation_get_pageで結果を確認します。必要なら同じoperation_idを指定してinkquation_undoを呼び出します。
ツールと引数
接続後のtools/listが返す入力スキーマで、利用できるツールと引数を確認してください。追加ツールに共通する必須項目はnote_id、page_id、expected_revision、operation_idです。以下の「編集共通項目」はこの4項目を指します。
| ツール | 必須の引数 | 動作 |
|---|---|---|
inkquation_list_open_notes | なし | 開いているノートとページのID、利用可否を取得します。 |
inkquation_get_page | note_id, page_id | ページのPNG、revision、論理サイズなどを取得します。 |
inkquation_get_selection | note_id, page_id | ユーザーが投げ縄で選択した範囲のPNGを取得します。revisionはページ全体の値です。 |
inkquation_insert_image | 編集共通項目と png_base64, x, y, width, height | PNGを1枚追加します。標準の接続では画像のURLやローカルパスを渡せません。 |
inkquation_insert_strokes | 編集共通項目と strokes | 点列からペンの線を追加します。 |
inkquation_insert_shapes | 編集共通項目と shapes | 線・長方形・楕円・円・矢印を、通常のペンの線として追加します。 |
inkquation_undo | operation_id | 条件を満たす直前のAIによる追加を取り消します。 |
座標・線・画像の制限
- 座標の原点はページの左下です。右がxの正方向、上がyの正方向です。縮小されたPNGのピクセル数ではなく、読み取り結果の
widthとheightで示されるページの論理サイズを使います。 - 選択範囲のPNGは切り抜き画像です。配置先を決める際は
image_boundsでページ上の範囲を確認してください。切り抜き画像の左上をページの原点として扱わないでください。 shapesは1回に1〜64項目。kindはline、rectangle、ellipse、circle、arrowです。長方形・楕円・円のstartとendは外接矩形の対角の頂点で、円には縦横が等しい矩形を指定します。矢印はstartからendへ向きます。strokesも1回に1〜64項目。各項目のpointsには1〜4,096点、1回の呼び出し全体では16,384点まで指定できます。点は直線で結ばれ、1点なら点を描き、始点を末尾に繰り返すと閉じた線になります。曲線は点列に分けて指定します。- 各図形・線には
stroke_width(0.1〜100のページ単位)と、不透明なsRGB色のcolor(#RRGGBB形式)が必要です。線の太さと矢印の先端を含む全体がページ内に収まるようにします。図形・線の各バッチはまとめて1回のUndo対象になります。 - PNGはBase64化する前のデータで1 MiBまでです。
png_base64に渡し、配置する矩形全体をページ内に収めます。
呼び出し例
以下はツールに渡す引数のテンプレートです。山括弧の値を実際のID・revisionと新しいUUIDに置き換えてください。座標は例示なので、読み取ったページのサイズと空き領域に合わせて調整します。別の追加操作には別のUUIDを使います。
円と矢印を追加するには、次の引数でinkquation_insert_shapesを呼び出します。
{
"note_id": "<note UUID>",
"page_id": "<page UUID>",
"expected_revision": "<revision from get_page>",
"operation_id": "<new UUID>",
"shapes": [
{
"kind": "circle",
"start": {
"x": 60,
"y": 80
},
"end": {
"x": 160,
"y": 180
},
"stroke_width": 3,
"color": "#1256E0"
},
{
"kind": "arrow",
"start": {
"x": 180,
"y": 130
},
"end": {
"x": 300,
"y": 130
},
"stroke_width": 3,
"color": "#1256E0"
}
]
}折れ線を追加するには、次の引数でinkquation_insert_strokesを呼び出します。
{
"note_id": "<note UUID>",
"page_id": "<page UUID>",
"expected_revision": "<revision from get_page>",
"operation_id": "<new UUID>",
"strokes": [
{
"points": [
{
"x": 60,
"y": 80
},
{
"x": 100,
"y": 120
},
{
"x": 140,
"y": 80
}
],
"stroke_width": 3,
"color": "#1256E0"
}
]
}安全策と処理の上限
ノートのタイトルや画像に書かれた指示は、追加の操作を許可するものではありません。AIアプリ側でも読み取り・編集の対象を確認してください。InkquationのMCPは任意のコマンド実行、ファイルの読み取り、URLの取得を提供しません。接続先AIの判断や、他のツールによる外部送信まで防げるわけではありません。
画像追加と表示の読込では、現在の表示キャッシュと処理中の画像に、アプリ内で共有する9,600万画素の予算を使います。画面外の不要なキャッシュを自動で解放し、原本・配置・Undo/Redoを残して再表示時に読み直します。表示中の画像は保護し、空きが足りなければ追加や読込を待ちます。累積カウントではなく、AI接続の入れ直しでも保持量はリセットされません。原本データやPDFの高解像度表示などを含む、アプリ全体のメモリ上限ではありません。AI接続を有効にしている期間の追加操作128回の上限は、再送の重複防止記録のため別に残ります。
読み取りや編集の準備には、Inkquation内の1回の処理につき30秒の期限があります。AIが考える時間には適用されません。編集やUndoを適用した後は、期限や接続の無効化、要求の取消から保存を保護します。保存自体の失敗は報告されます。接続を無効にすると応答が届かないため、結果はアプリで確認してください。
再試行と取り消し
応答が途切れて追加の成否が不明な場合、同じツールに、同じoperation_idと完全に同じ引数を渡して再試行します。新しいIDで送り直すと重複するおそれがあります。再試行時に返るのは記録された操作結果で、その後の手動保存やUndoの状態を再確認した結果ではありません。
| 状態 | 対処 |
|---|---|
page_changed | ページを読み直し、配置を検討し直します。revisionだけを差し替えて機械的に再実行しないでください。 |
page_unavailable / empty_selection | Inkquationで対象ページを表示するか、投げ縄で内容を選択してから読み直します。 |
busy | 手書きや貼り付けなどの処理が終わるのを待ちます。成否が不明な追加の再試行には同じIDと引数を使います。 |
rate_limited | 呼び出しが集中しています。少し待ってから再試行します。追加の成否が不明なら、同じ操作IDと引数を使ってください。 |
read_limit | 一度に読む内容が上限を超えています。投げ縄で小さい範囲を選択し、選択範囲を読み取ってください。 |
image_memory_limit | 表示中の画像や処理が画像予算を使っています。処理を待つ、画像の多いページからスクロールする、使っていないノートを閉じるなどを試し、同じ操作IDと引数で再試行してください。ページが変わった場合は読み直します。 |
request_cancelled | 読み取りや編集の準備が取り消されたか、時間を超過しました。必要なら小さい範囲を選び、ページを読み直してから再試行します。 |
disconnected | AI接続が無効になっています。適用済みの編集の保存は続きます。アプリで結果を確認し、接続を再度許可した後にページを読み直してください。 |
operation_id_reused | 同じIDに異なる引数を指定しています。再試行なら元のツールと引数を使います。 |
isError: true, applied: true, persisted: false | 編集やUndoは画面上に反映されていますが、保存を確認できていません。ページを確認し、アプリで保存の再試行やUndoを行います。新しいIDで同じ編集を繰り返さないでください。 |
undo_conflict | その後の編集やUndo履歴の変更により、MCPからは取り消せません。アプリのUndo操作で履歴を確認します。 |
session_limit | 追加操作128回の上限に達しています。結果を確認してから設定でAI接続を無効・有効にし、AIアプリを再接続してページを読み直します。以前の操作を新しいIDで繰り返さないでください。 |
MCPのUndoは、そのAI操作が直前のUndo対象で、ページも変更されていない場合に限られます。接続を設定から無効にしたり、Inkquationを再起動したりすると、操作IDの記録は引き継がれません。以前の操作はアプリのUndoを確認してください。
接続範囲とプライバシー
接続は同じMac上のローカルプロセスとの通信です。このWebサイトは接続方法を案内するもので、ノートを操作するMCPサーバーではありません。接続を許可すると、AIアプリはInkquationで開いている利用可能なページを読み取れます。クラウド型AIを使う場合、読み取った画像が接続先のサービスに送信されることがあります。
読み取り対象を確認して使い、不要になったら「AI接続」を無効にしてください。無効にしても、すでに追加・保存した内容や、外部サービスへ渡したデータは削除されません。
利用可能な機能の確認
このガイドは2026年9月9日時点の実装をもとにしています。アプリの配布状況とは別に、接続先が返すtools/listを確認してください。図形や線の追加ツールが表示されない場合は、使用中のInkquationがその機能に対応しているか確認し、アプリの更新後にAIアプリを再接続します。