TourClaim by Copernican について
TourClaimは、クレジットカード付帯保険の旅行キャンセル・中断請求を準備するPython CLI、SDK、MCPサーバーです。旅行者の情報と証拠を整理しますが、現在は合成請求のみを作成し、承認と署名は旅行者が行います。
主な機能
- 01請求情報の下書きと更新
- 02旅行者が選んだ証拠の収集
- 03旅行者による承認と署名
- 04下書きの提出と状況確認
- 05合成レビューのみ
活用シーン
- 01旅行キャンセル請求の証拠整理
- 02旅行者の確認・署名用下書きの準備
- 03合成レビューでの請求状況確認
MCP 対応
ローカルMCPサーバーは、TourClaimの請求準備ワークフロー向けに17個のツールを提供し、ブラウザーでのサインインと旅行者の同意・署名を求めます。現在は合成レビューのみで、保険会社への請求は行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
17掲載時のツール一覧 · 3 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| q | string | はい | クレジットカードの製品名。カード番号は絶対に入力しないでください。 |
詳細
tourclaim
Copernican の TourClaim は、旅行者のクレジットカードに付帯する旅行保険に対して、旅行のキャンセルおよび中断に関する請求を行います。予約情報、事業者のキャンセルポリシー、理由を証明する書類(病気の場合は医療提供者の診断書、フライトキャンセルの場合は運航会社からの通知、公式の気象記録など)を収集し、補償の可否を判断するカードの給付管理者に提出する請求を準備します。Copernican は、請求が払い戻された場合に限り、10%を請求します。
このリポジトリは、Copernican の TourClaim 用の Python CLI、SDK、MCP サーバーと、付属の Node CLI です。アプリ、アシスタント、またはターミナルから旅行請求のワークフローを利用できます。旅行者の回答を保存し、旅行者が共有することを選んだ証拠を収集し、署名用の承認書を旅行者に渡し、請求の進捗を確認できます。シェルコマンドを実行するか API を呼び出せるアシスタントであれば利用でき、旅行事業者の登録も予約プラットフォームとの連携も必要ありません。
レビュー用モード(2026年10月時点)。 開発者 API、2 種類の CLI、MCP サーバーは合成請求を作成し、保険会社への提出は行いません。架空の予約情報と医療情報のみを使用してください。旅行者はオンライン請求フォームから実際の請求を開始します。
tourclaim statusは現在のモードを表示し、API が返すすべての受付情報と請求には、そのデータがどのモードからのものかが記載されます。
開発者、エージェント、プラットフォーム向け
TourClaim のサービスは、クレジットカード付帯の旅行保険を確認し、領収書やキャンセルの証拠を整理し、必要に応じて医療提供者による評価を調整したうえで、請求の準備、提出、フォローアップを行います。旅行者は、フライト、ホテル、ツアーの予約を直接持ち込めます。補償、払い戻し、臨床関連書類については、該当する給付管理者または医療提供者によって異なります。
このパッケージでは、保存済みの受付情報、選択されたメールやファイルの証拠、旅行者の承認、Copernican への提出、ステータスを利用できます。**API と 2 種類の CLI は現在、合成レビュー用モードを使用しています。**保険会社への提出、支払い、臨床サービスは実行されません。実際の請求を今すぐ開始するには、旅行者はオンライン請求フォームを使用し、書類と支払い情報を安全に提供します。
- ターミナルエージェント: いずれかの CLI を
--jsonとともに使用します。旅行者はサインインを承認し、自分のブラウザーでサインインします。 - Python アプリケーション: Python 版の
tourclaim.Clientを使用します。 - プラットフォームとツール呼び出し対応アシスタント: 開発者ガイドとOpenAPI スキーマを使用します。
既存の /muse URL とキー形式は互換性のための仕様であり、引き続き使用できます。各接続は旅行者 1 人のために機能するもので、事業者やプラットフォーム全体のアカウントのためのものではありません。
機能
TourClaim は、旅行者のクレジットカードに付帯する旅行特典を利用して、旅行のキャンセルおよび中断に関する請求を申請します。このツールは、1 人の旅行者に代わって TourClaim のコネクター API を操作します。
- サインインします。 旅行者は自分のブラウザーでサインインページを開き、ターミナルに表示されたコードを入力して承認します。このツールは、その旅行者に属するキーを保存します。
- 旅行者が伝えた内容をもとに下書きを開始し、API が未回答として示した質問に回答します。
- 旅行者が共有することを選んだ証拠を追加します。領収書、旅程、すでに持っている医師の診断書、予約またはキャンセルに関するメールなどです。
- 旅行者が署名します。 旅行者は下書きを確認し、自分のブラウザーで承認書に署名します。このツールが旅行者に代わって署名することはできません。
- 署名済みの下書きを送信し、請求のステータスを確認します。
このツールも API も、損失が補償対象となるかどうかを判断したり、払い戻しや医師の診断書を約束したりすることはありません。Copernican の手数料は請求が払い戻された場合に限り 10% で、このツールを通じて支払いが行われることはありません。米ドルで決済された予約のみがサポートされています。
AI エージェントは、このツールを操作する前に AGENTS.md をお読みください。
インストール
公開されている Python CLI と SDK には Python 3.9 以降が必要です。通常の CLI に実行時依存関係はありません。
pip install tourclaim
tourclaim --help
# Or: uvx tourclaim --help
ライブラリについては python/README.md を、Node 版をソースからビルドする方法については CONTRIBUTING.md をご覧ください。Node 版には Node.js 18.3 以降が必要です。パッケージはリリースワークフローによって npm で個別に公開されます。
本番環境へのアクセスを申請する
テストはセルフサービスで利用できます。CLI をインストールし、tourclaim login を実行して旅行者との接続を作成してください。合成レビュー モードで架空のデータを使ってテストする場合、承認は不要です。
本番環境へのアクセスには Copernican の承認が必要です。 連携申請フォームに必要事項を記入してください。会社または製品名、ウェブサイト、ユースケース、予想される利用量、予定しているローンチ日を含めてください。チームが申請を審査し、メールで返信します。
申請の送信やテストキーの作成によって、本番環境へのアクセスが有効になることはありません。各旅行者は引き続き、自分の接続を承認し、請求に署名する必要があります。
AI アシスタント向け MCP
TourClaim には、17 個のツール、ブラウザーでのサインイン、CLI と同じ旅行者の同意および署名要件を備えたローカル MCP サーバーが含まれています。uv をインストールし、mcpServers を使用するクライアントに次の設定を追加してください。
{
"mcpServers": {
"tourclaim": {
"command": "uvx",
"args": ["--python", "3.12", "--from", "tourclaim[mcp]==0.2.3", "tourclaim", "mcp"]
}
}
}
すべてのツール、VS Code/Copilot の設定、認証、制限事項については MCP.md をご覧ください。公式レジストリの識別子は io.github.tourclaim/tourclaim です。server.json は PyPI への公開が成功した後、リリースワークフローによって公開されます。CLI と同様に、合成レビュー モードを使用します(冒頭の注記を参照)。
クイックスタート
# 1. Connect to the traveler's account. Opens a page; the traveler enters the code shown.
tourclaim login
# 2. Find the card the booking was paid with (by product name, never a card number).
tourclaim cards search sapphire
# 3. Start a draft with what the traveler has said so far.
tourclaim intake start --set merchant_name="Example Air" --set booking_ref=EXA-482913 \
--set reason_category=airline_cancellation
# 4. Answer what is missing. The draft id comes from step 3.
tourclaim intake set <id> trip_date=2026-03-04 booking_amount=250.00 refunded_amount=50.00 \
currency=USD card_product_id=412 other_insurance=no \
narrative="Example Air cancelled flight EX 204 the night before departure."
# 5. Add the evidence the traveler agreed to share.
tourclaim intake attach <id> receipt.pdf --type receipt
tourclaim intake add-email <id> --eml cancellation.eml
# 6. The traveler reviews and signs in their browser. --wait returns once they have.
tourclaim intake sign <id> --wait
# 7. Submit, then follow the claim.
tourclaim intake submit <id>
tourclaim claims list
コマンド
すべてのコマンドで、次のグローバルオプションを使用できます。
| オプション | 説明 |
|---|---|
--json | 機械可読形式の出力です。機械可読形式の出力をご覧ください。 |
--api-url <url> | API のベース URL です。デフォルトは https://app.getcopernican.com または TOURCLAIM_API_URL です。 |
-h、--help | コマンドのヘルプを表示します。tourclaim help <command> も使用できます。 |
--version | バージョンを表示します。 |
標準入力がターミナルでない場合、コマンドはプロンプトを表示せず、代わりに渡すフラグを示すメッセージを出して終了します。
tourclaim login
tourclaim login [--no-browser] [--scope <scope>]... [--force]
tourclaim login --with-token [--force] < key.txt
デバイスコードを使ってサインインします。このツールはサインインページ(https://app.getcopernican.com/connect/cli)を表示し、独立した行に Enter this code on that page: WDJB-MJHT を出力します。ターミナルで実行すると、--no-browser を指定していない場合はブラウザーでページを開きます。旅行者はターミナルに表示されたコードを入力して承認します。コードがリンクに含まれることはないため、誰かから送られたリンクを使って他人がサインインすることはできません。このツールは API が要求する間隔でポーリングし、指示された場合は間隔を延ばし、コードの有効期限が切れると処理を終了します。その後、キーを保存して、アカウントと有効期限を表示します:Signed in as [email protected] (key expires 2026-11-03 18:00 UTC, in 30 days).
--scopeを指定すると、権限を減らせます。指定できる値はintakes:write、evidence:write、claims:submit、claims:readです(このフラグを繰り返すか、カンマ区切りで指定します)。デフォルトでは4つすべてが設定されます。- API URL に対して有効なキーがすでに保存されている場合、
loginはその旨を表示して、新たなサインインを開始せずに終了コード 0 で終了します。--forceを指定すると、新しいキーを取得します。サインインによって保存済みのキーが置き換えられる場合、このツールはそのキーをサインイン時にサーバーへ送信し、サーバーは新しいキーを発行すると同時に古いキーを無効にします(同じアカウントのtourclaim loginキーの場合)。それ以外の場合、このツールは古いキーが引き続き有効であることを警告します。下書きは失われません:キーでアクセスできる下書きを参照してください。 - このツールはコードの有効期限が切れるまで待機し、その後もう一度確認するため、最後の数秒で承認してもサインインできます。待機中に短時間のサーバーエラー(HTTP 502、503、504)や接続切断が発生しても、サインインは終了しません。
Retry-Afterを順守して再試行し、3回連続で失敗した場合にのみ処理を終了します。 - 旅行者が保持できる接続は最大5件です。新しい
tourclaim loginによって上限を超える場合、サーバーはそのアカウントの最も古いtourclaim loginキーを無効にします。他のアプリ用に作成されたキーには手を触れません。5件すべてが他のアプリ用の場合、サインインはサーバーの理由とともに失敗します(終了コード 3)。まずhttps://app.getcopernican.com/connect/museで接続を1つ切断してください。 --with-tokenを指定すると、旅行者がすでにhttps://app.getcopernican.com/connect/museで作成したキーを保存します。パイプ入力の場合は stdin から、ターミナルの場合は非表示のプロンプトからキーを読み取り、保存前に API で確認します。この種のキーからはアカウントが特定できないため、ツールはメールアドレスを表示せずにSigned in (key expires ...)と出力します。キーをコマンドライン引数として受け付けることはありません。--jsonを指定すると、1行目に{"event":"device_code","user_code":...,"verification_uri":...,"expires_in":...,"interval":...}が出力され、エージェントがページとコードを人間に提示できます。最終行には{"event":"signed_in",...}が出力され、キーからアカウントが特定できる場合はaccount_emailも含まれます。
tourclaim logout
サーバー上の使用中のキーを失効させてから、保存済みのコピーを削除します。サーバーからキーがすでに無効だと応答された場合も、保存済みのコピーは削除されます。サーバーに接続できない場合は何も削除されないため、再試行できます。
tourclaim status(別名 whoami)
API URL、コネクターが有効かどうか、モード、サインイン中のアカウント、キーの有効期限、権限を表示します。レビュー モードでは、1行目に REVIEW MODE: CLAIMS ARE SYNTHETIC AND NOTHING IS FILED と表示されます。サインイン済みの場合は終了コード 0、未サインインまたはキーが拒否された場合は 3、コネクターが無効の場合は 7 で終了します。
tourclaim cards search <query...>
製品名でカードカタログを検索します(入力は最大100文字、結果は最大30件)。結果の id を card_product_id として使用します。カードが見つかっても、損害が補償されるとは限りません。カード番号のように見える入力は受け付けません。
tourclaim intake start
tourclaim intake start [--set <field>=<value>]... [--fields-file <file>] [--idempotency-key <key>]
下書きを開始します。この時点ではすべてのフィールドが任意です。出力には不足している項目と、次に尋ねる質問が最大3つ表示されます。まず tourclaim intake list を実行してください。同じ旅行について、旅行者がすでに下書きを作成している場合があります。このコマンドは、キーを指定しない限り、ランダムな Idempotency-Key を送信します。失敗した場合やタイムアウトした場合は、同じ --idempotency-key と同じフィールドを指定して再実行すると、2つ目の下書きではなく同じ下書きが取得されます。エラーメッセージには使用したキーが含まれます。
tourclaim intake list [--offset <n>]
提出されていない旅行者の下書きを、最終更新日時の新しい順に、一度に30件ずつ一覧表示します。各下書きの状態、加盟店、予約参照番号、不足している回答数も表示されます。IDを紛失した下書きを再開するには、このコマンドを使用してください。提出済みの下書きは請求です。tourclaim claims list を参照してください。
tourclaim intake show <id>
保存済みの回答、証拠、状態、リビジョン、未入力の項目を表示します。
tourclaim intake set <id> ...
tourclaim intake set <id> [<field>=<value>]... [<field>:=<json>]... [--clear <field>]... [--fields-file <file>] [--revision <n>]
指定したフィールドのみを保存し、それ以外は変更しません。--clear <field> を指定すると、フィールドをクリアします(null を送信します)。
field=valueの値はスキーマに従って型が判定されます。金額は250.00、日付は2026-03-04、真偽値はtrue/false(またはyes/no)、列挙値は大文字と小文字を問いません(weatherはWEATHERになります)。field:=<json>を指定すると、JSON 値をそのまま送信します。例:card_product_id:=412、またはmedical:='{"provider_seen":true}'。--fields-fileはフィールドを含む JSON オブジェクトを読み込みます(-を指定すると標準入力から読み込みます)。コマンドラインで指定したペアは、ファイルの内容より優先されます。- このコマンドは下書きの現在のリビジョンを読み取り、それを
expected_revisionとして送信します(または--revisionを使用します)。その間に下書きが変更されていた場合、何も保存されず、コマンドは終了コード4で終了し、現在の下書きの内容を示します。自動で再試行することはありません。 - 旅行者が署名した後に変更があると、署名は取り消され、その旨がコマンドに表示されます。旅行者はもう一度署名する必要があります。
| フィールド | 型 | 説明 |
|---|---|---|
merchant_name | テキスト | 旅行者が予約した加盟店。確認書に記載されたとおりに入力します。 |
booking_ref | テキスト | 印字されたとおりの予約参照番号。予約1件につき請求は1件です。 |
trip_date | 日付 | 旅行初日。YYYY-MM-DD 形式です。 |
booking_amount | 金額 | 支払い総額(USD)。例:250.00。 |
refunded_amount | 金額 | すでに返金された金額。返金がない場合は 0.00 です。 |
currency | USD | USD建ての予約のみ対応しています。 |
card_product_id | 整数 | tourclaim cards search で取得します。カード番号ではありません。 |
reason_category | 列挙型 | ILLNESS、INJURY、DEATH_IN_FAMILY、MILITARY_DEPLOYMENT、WEATHER、AIRLINE_CANCELLATION、OTHER。 |
narrative | テキスト | 何が起きたかを旅行者自身の言葉で記述します(10~10,000文字)。 |
cancellation_policy | テキスト | 旅行者が持っている場合は、加盟店の規約を記載します。任意です。 |
other_insurance | 列挙型 | YES、NO、UNSURE。 |
other_insurance_details | テキスト | other_insurance が YES の場合に必須です。 |
medical.symptom_onset_date | 日付 | 理由が ILLNESS または INJURY の場合に尋ねられます。 |
medical.provider_seen | true/false | |
medical.provider_details | テキスト | 任意です。 |
medical.prior_condition | true/false | |
medical.prior_condition_details | テキスト | 任意です。 |
medical.stability_60day | true/false | 予約前の60日間に、この症状の治療を受けていたかを示します。 |
medical.stability_60day_details | テキスト | 任意です。 |
tourclaim intake attach <id> <file> --type <type>
tourclaim intake attach <id> <file> --type receipt|itinerary|medical_note|other [--yes] [--revision <n>]
最大5 MiBのPDF、JPEG、PNGを1件アップロードします。ファイルの種類はファイル名ではなく、先頭のバイトから判定されます。共有には旅行者の同意が必要です。ターミナルではコマンドが同意を尋ねます。それ以外の場合は --yes が必要で、指定しないとコマンドは拒否して、何もアップロードしません。共有を既定にする設定はありません。ここでの medical_note は旅行者がすでに持っている診療メモであり、Copernican の医療提供者が発行したメモではありません。
tourclaim intake add-email <id>
tourclaim intake add-email <id> (--eml <file> | --text-file <file> --subject <text> --from <address>)
[--sent-at <iso>] [--provider user|gmail|outlook] [--message-id <id>] [--yes] [--revision <n>]
メールを1通、証拠として保存します。--eml を指定すると、保存済みのメッセージから Subject、From、Date、Message-ID の各ヘッダーと最初の text/plain パートを読み取ります(フラグを指定した場合は、その値が優先されます)。--text-file を指定する場合は、--subject と --from も指定してください。テキストは変更せずに送信され、最大30,000文字です。--message-id を指定しない場合、メッセージから固定の ID が生成されるため、同じメッセージを2回追加しても変更はありません。--provider のデフォルトは user(旅行者が貼り付けた、または保存したもの)です。同意の扱いは attach と同じです。
tourclaim intake sign <id>
tourclaim intake sign <id> [--wait] [--timeout <seconds>] [--no-browser]
署名できるのは旅行者本人だけで、本人のブラウザーから行う必要があります。下書きの準備が完了すると、確認リンク(review_url)が表示され、ターミナルで実行した場合はリンクが開きます。--wait を指定すると、旅行者が署名するか、--timeout(デフォルトは900秒)に達するまで5秒ごとに確認します。login と同様に、サーバーエラーまたは接続切断が短時間に連続して最大2回発生しても処理を続けます。下書きがすでに署名済みまたは送信済みの場合は、その旨が表示されます。回答が不足している場合は、その項目が一覧表示されます。このツールは署名を行わず、確認ページの操作を自動化することもありません。確認ページに「コマンドラインのサインインは終了しました」と表示された場合は、tourclaim login を実行してからページを再読み込みしてください。下書きは保持されています。
tourclaim intake submit <id>
署名済みの下書きを保険金請求として送信し、請求内容を表示します。再試行しても安全です。同じ呼び出しを繰り返すと、同じ請求が返されます。--revision 以降に下書きが変更された場合(stale_revision)、旅行者が現在のリビジョンに署名していない場合(approval_required)、下書きが未完了の場合(intake_incomplete)、署名から7日を超えている場合、または認証が変更された場合(approval_outdated)、あるいは予約に対する請求がすでに存在する場合(duplicate_booking)は、終了コード4で終了します。送信しても保険会社への申請や手数料の請求は行われず、払い戻しが約束されることもありません。次に Copernican が請求内容を審査します。
tourclaim intake delete <id>
送信されていない下書きを、関連して保存されたすべての情報とともに完全に削除します。確認を求めますが、--yes を指定することもできます。送信済みの下書きはここでは削除できません。https://app.getcopernican.com/muse/data-deletion を参照してください。
tourclaim claims list [--offset <n>]
送信済みの請求を新しい順に、1回につき30件表示します。送信されていない下書きは表示されません。
tourclaim claims show <id>
請求のステータス、旅行者に伝える次のアクション(文章で表示)、および最終更新日時を表示します。ステータスに明記されていない限り、それは補償の可否を示す判断ではありません。
tourclaim schema
/api/connectors/v1/openapi-cli.json から、CLI が使用するすべての操作を含むライブの OpenAPI ドキュメントを出力します。このファイルがまだないサーバーでは、代わりに /api/connectors/v1/openapi.json を出力します。サインインは不要です。/api/connectors/v1/openapi.json 自体には、アシスタントがツールとして読み込む11個の操作だけが記載されています。下書き一覧とキー関連のエンドポイントは含まれていませんが、どのキーでも引き続き利用できます。このバージョンのビルドに使用した完全なスキーマのコピーは、openapi/connectors-v1.json にあります。
下書きの状態
| 状態 | 意味 | 次の操作 |
|---|---|---|
collecting | 回答が不足しています。 | tourclaim intake set |
needs_approval | 準備完了です。旅行者が確認して署名する必要があります。 | tourclaim intake sign |
ready_to_submit | 署名済みです。 | tourclaim intake submit |
submitted | 請求が存在します。下書きは読み取り専用です。 | tourclaim claims show |
機械可読形式の出力
--json を指定した場合:
- stdout には、1 行につき 1 つの JSON 値が出力されます。
cards search、intake start|show|set|attach|add-email|submit、claims list|showの場合、API 自体のレスポンスオブジェクトが変更されずに出力されます。intake signを--waitなしで実行した場合は、下書きが出力されます。 - 待機するコマンド は、最初にイベント行、最後に結果を出力します。
loginは{"event":"device_code",...}の後に{"event":"signed_in",...}を出力します。intake sign --waitは{"event":"waiting_for_signature","intake_id","review_url","timeout_seconds"}の後に下書きを出力します。最後の行は常に結果です。 statusは{"api_url","mode","enabled","connector":{...},"signed_in","account_email","key":{"id","expires_at","scopes"},"key_source","key_problem","credentials_path"}を出力します。account_emailはtourclaim loginで取得したキーの場合にのみ含まれます。logoutは{"api_url","revoked","already_invalid","credential_removed","key_source"}を出力します。intake deleteは{"id","deleted":true}を出力します。- エラー は stderr に 1 行の
{"error":{"code","message","exit_code",...}}として出力されます。該当する場合は、status、detail(API の検証リスト)、retry_after、idempotency_key、review_url、current_revision、state、missing_fieldsが含まれます。コードにはusage_error、not_signed_in、unauthorized、forbidden、not_found、invalid、too_large、rate_limited、unavailable、access_denied、expired_token、timeout、network_error、unsupported_file、cancelled、および終了コード 4 の場合は 競合の原因 のいずれかが含まれます。 - 進行状況と警告 は、どちらのモードでもプレーンテキストで stderr に出力されます。
終了コード
| コード | 意味 |
|---|---|
| 0 | 成功です。 |
| 1 | エラー:値が無効(422)、ファイルを読み取れない、またはサポートされていない、ネットワーク障害、タイムアウト、プロンプトが拒否された場合です。 |
| 2 | 使用方法:フラグまたは引数が不正、または確認が必要でしたがターミナルがありませんでした(--yes は旅行者の同意を得た場合にのみ指定してください)。 |
| 3 | サインインしていない、キーが拒否された(401)、または権限が不足している(403)場合です。サインインが拒否されたか、期限切れの場合も該当します。tourclaim login を実行してください。 |
| 4 | 競合(409)です。JSON エラーの code に原因が示されます。競合の原因 を参照してください。 |
| 5 | 自動再試行を 1 回行った後もレート制限(429)されています。ツールは Retry-After の時間(最大 60 秒)待機して、自動で 1 回再試行します。 |
| 6 | 見つかりません(404)。 |
| 7 | コネクターが無効、または利用できません(503)。 |
競合の原因
終了コード 4 は、下書きの状態を理由に API が変更を拒否したことを意味します。API は X-TourClaim-Error ヘッダーで原因を示し、ツールはその値を JSON エラーの code として使用します。ツールは、API を呼び出す前に変更を拒否した場合(たとえば、署名されていない下書きを送信した場合)も、これらのコードを使用します。競合が発生しても、自動で再試行することはありません。
| コード | 意味 | 対処方法 |
|---|---|---|
idempotency_key_reused | この --idempotency-key は、異なるフィールドとともに使用されています。 | キーを指定せずに(または新しいキーを使って)別の下書きを開始してください。 |
idempotency_key_other_connection | このキーは別の接続で使用されています。 | 新しいキーを使用してください。 |
concurrent_request | 同じリクエストが同時に 2 回実行されました。 | 同じ --idempotency-key を指定して再実行してください。 |
stale_revision | 読み取り後に下書きが変更されました。何も保存されていません。 | tourclaim intake show を実行してから、コマンドを再実行してください。 |
intake_submitted | 下書きは送信済みで、読み取り専用です。 | tourclaim claims list を実行してください。 |
intake_incomplete | 回答が不足しています。 | tourclaim intake set を実行してください。 |
approval_required | 旅行者はこのリビジョンに署名していません。 | 旅行者が tourclaim intake sign <id> --wait を実行します。 |
approval_outdated | 署名から 7 日以上経過しているか、承認内容が変更されています。 | 旅行者が再度署名します:tourclaim intake sign <id> --wait。 |
evidence_conflict | 同じメールまたはファイルが異なる詳細情報とともに、すでに追加されています。 | 対応は不要です。または、元の詳細情報のまま追加してください。 |
duplicate_booking | この予約には、すでに請求があります。 | tourclaim claims list を実行してください。 |
キーでアクセスできるドラフト
tourclaim loginのキーは、同じアカウントでtourclaim loginから開始された、未送信のすべてのドラフトにアクセスできます。期限切れまたは取り消し済みのキーで開始されたドラフトも含まれます。再度サインインしても、login --forceやlogoutを実行しても、ドラフトは失われません。- Muse など、アカウントに接続された他のアプリで開始されたドラフトは、このツールからは見えません。また、それらのアプリからこのツールのドラフトを見ることもできません。
login --with-token(/connect/museで作成)で保存したキーは、そのキーで開始したドラフトにのみアクセスできます。- 送信済みの請求はアカウントに紐づきます。
tourclaim claims listには、Muse など他のアプリから送信されたものも含め、すべての請求が表示されます。
設定
| 変数 | 意味 |
|---|---|
TOURCLAIM_API_URL | API のベース URL です。--api-url を指定すると、こちらが優先されます。平文の http:// は localhost に限り使用できます。 |
TOURCLAIM_API_KEY | 保存済みのキーの代わりに使用するキーです。保存済みのキーより優先されます。/connect/muse のキーは、そのキーで開始したドラフトにのみアクセスできます。 |
XDG_CONFIG_HOME | 認証情報は $XDG_CONFIG_HOME/tourclaim/credentials.json に保存されます(デフォルトは ~/.config/tourclaim/credentials.json、Windows では %APPDATA%\tourclaim\credentials.json)。 |
認証情報ファイルでは、各 API ベース URL を {"api_key","expires_at","grant_id","scopes"} に対応づけているため、ステージング用と本番用のキーが混在することはありません。保存済みのキーの有効期限が3日以内に切れる場合、ツールが警告します。
セキュリティ
- キーは1人の旅行者に紐づきます。 キーの有効期間は30日で、更新はできません。旅行者が接続できるのは最大5件です。それを超えて新しい
tourclaim loginを実行すると、最も古いtourclaim loginのキーが無効になります。有効期限が切れたら、再度サインインしてください。旅行者はいつでもhttps://app.getcopernican.com/connect/museでキーを取り消せます。また、tourclaim logoutは使用中のキーを取り消します。 - ドラフトはアカウントの CLI サインインに紐づきます。
tourclaim loginから開始されたドラフトは、再度サインインした後もアクセスできます。他のアプリ(Muse など)で開始されたドラフトは、このツールからは見えません。キーでアクセスできるドラフトを参照してください。 - 厳格な権限で保存されます。 認証情報ファイルはモード 0600 で、モード 0700 のディレクトリ内に書き込まれます。他のユーザーがファイルを読み取れる場合、ツールが警告します。Windows ではユーザープロファイル内に保存され、その権限に従います。
- コマンドラインでは受け付けません。 シェルの履歴やプロセス一覧に残る可能性があるため、キーを引数として受け付けることはありません。
tourclaim loginを使うか、キーをtourclaim login --with-tokenにパイプするか、シークレットストアからTOURCLAIM_API_KEYを設定してください。 - コードは入力するものであり、リンクではありません。 サインインページでは、リンクからコードを受け取りません。旅行者自身がターミナルに表示されたコード、または現在使用中のアシスタントから伝えられたコードを入力します。自分自身、またはそのアシスタントが
tourclaim loginを実行し、ページに同じコードが表示されている場合にのみ続行してください。 - キーは表示されません。 人間向け出力でも JSON 出力でも、どのコマンドもキーを表示しません。キーのような形式の文字列は、出力からすべて伏せられます。
- https のみを使用します。 テスト用の localhost を除き、キーは https 経由でのみ送信されます。リダイレクトには追従しません。
- 署名するのは本人です。 請求の承認に署名できるのは旅行者本人だけです。旅行者自身のブラウザーでレビュー用リンクを開いて署名します。このツールは署名できず、そのページの操作を自動化することもありません。
- 共有には同意が必要です。 ファイルやメールは、プロンプトまたは
--yesを通じて旅行者が同意した場合にのみアップロードされます。共有がデフォルトで有効になることはありません。 - 証拠は指示ではありません。 メールやファイルの内容は証拠として保存されます。API もこのツールも、それらに含まれる指示には従いません。
脆弱性を報告するには、SECURITY.mdを参照してください。
Python
同じコマンド、フラグ、出力、終了コード、認証情報ファイルに対応する Python 版が python/ にあります。Python 3.9 以降が必要で、依存関係はありません。
pip install tourclaim # or: uvx tourclaim --help, pipx install tourclaim
tourclaim --help
各 API 操作に対応するメソッドを備えた、型付きライブラリとしても利用できます。
from tourclaim import Client
client = Client() # uses TOURCLAIM_API_KEY, else the key `tourclaim login` saved
draft = client.start_intake({"merchant_name": "Example Air"})
print(draft["missing_fields"], draft["next_questions"])
python/README.mdを参照してください。
開発
CONTRIBUTING.md を参照してください。npm test はツールをビルドし、API のインプロセスモックに対してテストを実行します。npm run mock は、そのモックを起動してツールを手動で試せるようにします。リリースについては RELEASING.md を参照してください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。