{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-06T10:16:40.438Z","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp","markdownUrl":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp.md","server":{"slug":"ai-iceshore-iceshore","name":"IceShore","registryName":"ai.iceshore/iceshore","description":"Make your AI better at system maintenance. Prompts your AI to organize use cases behind each system.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"mcp","type":"remote","identifier":"https://mcp.iceshore.ai/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp","version":"1.0.0","transport":null,"scoredAt":"2026-11-06T07:48:07.138Z"},"score":{"total":89,"tier":"high trust","status":"scored","weekDelta":2,"history":[{"date":"2026-11-06","total":89},{"date":"2026-11-05","total":89},{"date":"2026-11-04","total":89},{"date":"2026-11-03","total":88},{"date":"2026-11-02","total":88},{"date":"2026-11-01","total":87},{"date":"2026-10-31","total":87},{"date":"2026-10-30","total":87},{"date":"2026-10-29","total":86},{"date":"2026-10-28","total":86},{"date":"2026-10-27","total":85},{"date":"2026-10-26","total":85},{"date":"2026-10-25","total":84},{"date":"2026-10-24","total":84},{"date":"2026-10-23","total":83},{"date":"2026-10-22","total":83},{"date":"2026-10-21","total":82},{"date":"2026-10-20","total":82},{"date":"2026-10-19","total":81},{"date":"2026-10-18","total":81},{"date":"2026-10-17","total":80},{"date":"2026-10-16","total":80},{"date":"2026-10-15","total":80},{"date":"2026-10-14","total":79},{"date":"2026-10-13","total":79},{"date":"2026-10-12","total":78},{"date":"2026-10-10","total":77},{"date":"2026-10-09","total":77},{"date":"2026-10-06","total":75}]},"categories":[{"name":"Endpoint Security","score":89,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.","HTTPS is enforced; there's no plaintext access path.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC.","The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.rfc9728_invoke","args":{}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}},{"code":"auth.registration_dcr_only","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":76,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 12289 tokens (~341/item across 36 items; 16 tools + 20 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"341","items":"36","tools":"16","tokens":"12289","resources":"20"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":100,"verdict":"pass","reasons":["No destabilizing schema changes in the last 30 days."],"codes":[{"code":"stability.stable","args":{}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.","An AI judge read all 18 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_declared","args":{"pct":"100","annotated":"2","destructive":"2"}},{"code":"toolsafety.manipulation_clean","args":{"units":"18","judged":"18"}}]},{"name":"Capabilities","score":40,"verdict":"fail","reasons":["Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28."],"codes":[{"code":"protocol.outdated","args":{"latest":"2026-07-28","version":"2025-03-26"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"mcp","type":"remote","identifier":"https://mcp.iceshore.ai/mcp","withdrawn":false,"score":89,"current":true,"url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp","markdownUrl":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp.md"}],"facts":[{"label":"Endpoint","value":"https://mcp.iceshore.ai/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"required"},{"label":"Version","value":"1.0.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"auth_check","title":"Check connection","description":"IceShore への接続と認証の状態を返す。\n入力: なし。\n出力: 認証成功なら userId と所属組織一覧（organizations: workspace_id / name / role）、失敗（トークンの無効・失効など）なら error を含む文字列。\norganizations[].workspace_id は、create_content / commit_uploaded_codes の登録先（workspace_id）や list_projects の絞り込みに使える値。\n組織への登録ができるのは、role が admin または editor の組織。","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":131},{"name":"list_projects","title":"List projects","description":"ユーザが閲覧権限を持つプロジェクト（ADL 構成図）の一覧を返す（ログインが必要）。\n用途: 作業対象のプロジェクトの特定。業務影響・規模・依存関係を分析するときに、get_content で ADL を取る前の起点になる。\nページング: 既定は page=0 / itemperpage=24。続きは page=1, 2, …。itemperpage の最大は 100。\nサンプルとの関係: range を省くと range=\"related\" と同じで、公式サンプルは含まない（サンプルは list_samples が返す）。\nworkspace_id を渡すと、その 1 組織が所有する案件だけに絞り込む（値は auth_check の organizations[].workspace_id）。\n入力: range, page, itemperpage, workspace_id（すべて省略可）。\n出力: プロジェクトの id とタイトルの一覧（プレーンテキスト）。末尾に total / totalPages。","inputs":[{"name":"itemperpage","type":"integer","required":false,"description":"1 ページあたりの件数 (default 24、最大 100)。"},{"name":"page","type":"integer","required":false,"description":"0 起点のページ番号 (default 0)。default の itemperpage=24 件単位でページング。"},{"name":"range","type":"string","required":false,"description":"取得スコープのフィルタ。\"related\" (省略時の既定) = 自分が role を持つ構成図 + 自分の組織の構成図。誰でも見える公開構成図（公式サンプル）は足さない。\"\" = related に加えて公開構成図も含める（サンプルは list_samples を使うこと）。\"bookmark\" = bookmark 済のみ。\"private\" = type=private のみ。\"priva…"},{"name":"workspace_id","type":"string","required":false,"description":"特定の組織(ワークスペース)に絞り込む。auth_check が返す organizations[].workspace_id をそのまま渡す。複数組織に所属するユーザでも、指定した 1 組織が所有する案件のみが返るため、組織を跨いだ取りこぼし・混入を防げる。省略時は全所属組織の構成図が混在する。"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":544},{"name":"list_samples","title":"List sample projects","description":"【認証不要】匿名（未ログイン）でも使える。公式サンプルワークスペースの公開構成図の一覧を返す（ログイン時も公式サンプルワークスペースに固定）。\n用途: 新しい設計の参考事例、サンプルを土台にした作成。\nlist_projects との違い: list_projects は自分が閲覧権限を持つプロジェクト（サンプルを含まない）、本ツールは公式サンプルだけ。\nページング: 既定は page=0 / itemperpage=24。\n入力: page, itemperpage（すべて省略可）。\n出力: 公開プロジェクトの id とタイトルの一覧。末尾に total / totalPages。","inputs":[{"name":"itemperpage","type":"integer","required":false,"description":"1 ページあたりの件数 (default 24、最大 100)。"},{"name":"page","type":"integer","required":false,"description":"0 起点のページ番号 (default 0)。default の itemperpage=24 件単位でページング。"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":236},{"name":"get_guide","title":"Get guide","description":"【認証不要】匿名（未ログイン）でも使える。IceShore のガイド文書（ADL の書き方・登録手順・分析の進め方など）を名前で返す。\nMCP リソースに対応していないクライアント向けの取得手段で、対応クライアントは resources/read でも同じ内容を読める。\n主な名前: \"analysis\"（業務影響・依存・外部波及の分析）/ \"registration\"（システム登録）/ \"fix\"（ADL の修正）/ \"adl\"（ADL の作り方）/ \"saving-publishing\"（保存と公開）。\n入力: name（短縮名または URI パス）。知らない name のときは、使える名前の一覧を返す。\n出力: ガイド本文（markdown / JSON。本文は英語）。","inputs":[{"name":"name","type":"string","required":true,"description":"ガイド名。短縮名（例 \"analysis\" / \"registration\" / \"fix\" / \"adl\" / \"saving-publishing\"）または URI パス（例 \"guide/analysis\" / \"skill/adl-validator\"）。"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":267},{"name":"get_content","title":"Get project","description":"【認証不要（公式サンプルの公開コンテンツのみ）】匿名では公式サンプルだけを返し、それ以外はログインが必要（401）。IceShore プロジェクト 1 件の ADL と添付ファイルを返す。\n用途: 既存プロジェクトの参照、保存・更新の結果の確認（get_content(mode='detail') の戻りが保存後の実際の状態の正典）。\nid は list_projects または list_samples が返す、\"d\" で始まる内部 ID。\nmode の違い:\n  - \"meta\": メタ情報だけ。S3 を読まないので速い（10 秒以上短い）\n  - \"root\": ADL 本体（adlRoot）だけ\n  - \"detail\": 全ファイル。大きく、30 秒ほどかかる場合がある\n出力: { code, id, mode, data, type, role, ownerID, ... }。","inputs":[{"name":"id","type":"string","required":true,"description":"IceShore プロジェクト ID（\"d\" で始まる内部ID。list_projects / create_content が返す id。例: d9289696c392a29e188.13397864。URL スラグの \"I…\" 形式は使用不可）"},{"name":"locale","type":"string","required":false,"description":"表示ロケール (en/ja 等)。省略時は en"},{"name":"mode","type":"string","required":false,"description":"取得モード。\n  - \"meta\" (速い・推奨デフォルト): 重い codes blob を S3 から読まない。overview/role 等のメタ情報のみ。10 秒以上短縮可。\n  - \"root\" (中): codes を adlRoot 1 件に絞る。ADL 構造だけ欲しい時。\n  - \"detail\" (既定値、重い): 全 codes を返す。プロビジョニングファイル全件を参照する…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":436},{"name":"create_content","title":"Create project","description":"新しい IceShore プロジェクトを作る（ADL と添付ファイルを登録する。ログインが必要）。既存プロジェクトの更新は save_content が扱う。\ncodes の形: 配列のうち 1 件が ADL 本体（id=\"adlRoot\", isRoot=true, lang=\"adl\", fmt=\"json\", data=ADL を JSON.stringify した文字列）。残りはプロビジョニングファイルを 1 件 1 エントリ（isRoot=false）。ADL 本体が無いと画面では空になる。ADL の構造は iceshore://guide/adl に書いてある。\n例:\n{ \"codes\": [ { \"id\": \"adlRoot\", \"isRoot\": true, \"lang\": \"adl\", \"fmt\": \"json\", \"data\": \"{\"reindeer\":\"2.0.0\",\"self\":\"adl.json\",...}\" },\n             { \"id\": \"main.tf\", \"isRoot\": false, \"lang\": \"tfm\", \"fmt\": \"hcl\", \"data\": \"resource \"aws_lambda_function\" ...\" } ],\n  \"overview\": { \"titles\": {\"en\": \"...\", \"ja\": \"...\"}, \"descriptions\": {\"en\": \"...\", \"ja\": \"...\"}, \"version\": \"1.0.0\", \"type\": \"private\", \"security\": \"publicHandling\" } }\noverview は必須。IaC リポジトリからの新規インポートでは importSource（originUrl / lastImportedCommit / lastImportedAt / importMethod。手元のフォルダのパスは送らない）を、変更履歴として changeLog（at / by / source / summary / delta / securityNotices）を持てる（iceshore://guide/iac-import・iceshore://guide/changelog）。\nworkspace_id: \"personal\"（個人）または組織の ID（auth_check の organizations[].workspace_id）。省くと個人。組織への登録にはその組織の admin / editor 権限が要り、無ければ 403。登録先は作成時だけ指定でき、後から MCP では変えられない（画面から変える）。\n大きさ: 1 回あたり約 5 MB まで（同期リクエストの上限 6 MB）。合計が大きいとき・ファイルが多いときは batch_request_upload_url + commit_uploaded_codes の経路がある。\n保存前に、アクセスキー・パスワード・トークンなどに見える値は ***MASKED*** に置き換えて保存する。\n出力: 新しい id（\"d\" で始まる内部 ID）と構成図の URL。失敗時は ok:false と error。","inputs":[{"name":"codes","type":"array","required":true,"description":"【必須形状】配列の中に必ず 1 件 id=\"adlRoot\" isRoot=true lang=\"adl\" fmt=\"json\" のエントリを含めること。adlRoot.data は ADL 構造（reindeer/self/info/actors/resources/useCases/components）を JSON.stringify した文字列。その他のエントリはプロビジョニングファイル…"},{"name":"overview","type":"string","required":true,"description":"プロジェクト概要メタ。titles/descriptions（複数形・locale-keyed map）、version、type（visibility: \"private\"|\"public\"）、security（取扱情報種別: \"publicHandling\"|\"confidentialHandling\"|\"privacyHandling\"）等を含む。type と security は別概念。…"},{"name":"workspace_id","type":"string","required":false,"description":"登録先ワークスペース。\"personal\"（個人）または組織UUID（auth_check の organizations[].workspace_id）。【必須運用】依頼文（プロンプト）に登録先ワークスペースの指定があればその値を使う。指定が無い場合は auth_check で組織一覧を取得し、**必ずユーザーに登録先（個人 or 組織名）を確認してから**呼ぶこと。無断で個人に作成しない。組…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":1075},{"name":"save_content","title":"Update project","description":"既存の IceShore プロジェクトの ADL と添付ファイルを更新する（ログインが必要・所有者または admin / editor 権限）。新規作成は create_content が扱う。\n全置換（full-replace）: codes に渡したものがすべてになり、未指定の既存ファイルは削除される（allow_code_deletion を付けたときだけ削除を受け付ける）。既存ファイルを残すには、変更しないものも含めて全 codes を送る。現在の codes は get_content(mode='detail') で取れる。一部のファイルだけ足す・直すなら、マージする commit_uploaded_codes がある。\ncodes の形は create_content と同じ（1 件が ADL 本体 adlRoot）。overview は必須。\nnotes（任意・配列）: 変更の 1 行要約。[{ at: <UNIX 秒・整数>, content: \"<100 字以内>\" }] の形で、構成図の「履歴」タブに残る。応答の「記録した変更サマリー: N 件」が記録された件数。\ninfo.version と info.status はサーバが決める: version はサーバが採番し、保存のたびに +1 される整数（送った値は使われない）、status は品質評価から designed / prepared / draft を自動で決める（\"reviewed\" は自動では下げない）。応答の「改訂 N / status: X」が保存後の値。\n品質評価（KGI）と構成図は保存時にサーバ側で作られる。\nIaC から更新するときに人が足した内容（resources[*].lessons、useCases[*].notes、IaC に無い actors など）の扱いは iceshore://guide/iac-import に書いてある。\n保存前に、アクセスキー・JWT・秘密鍵・接続文字列などに見える値は ***MASKED*** に置き換えて保存し、置き換えた箇所を応答に一覧で返す。\n入力: id（必須）、codes（必須）、overview（必須）、notes、allow_code_deletion。","inputs":[{"name":"allow_code_deletion","type":"boolean","required":false,"description":"full-replace で未指定の既存コードを削除することを明示的に許可する。通常は不要（既存プロビジョニングを保持するには全 codes を送る）。"},{"name":"codes","type":"array","required":true,"description":"【必須形状】配列の中に必ず 1 件 id=\"adlRoot\" isRoot=true lang=\"adl\" のエントリを含める。adlRoot.data は ADL 構造を JSON.stringify した文字列。"},{"name":"id","type":"string","required":true,"description":"既存プロジェクトの id（\"d\" で始まる内部ID。list_projects / create_content が返す id）"},{"name":"notes","type":"array","required":false,"description":"AIが生成した変更サマリー。**配列**であること（文字列を渡すと引数エラーで拒否される）。例: [{ at: 1717200000, content: \"S3バケット resource_storage を追加\" }]。ここに入れた内容だけが構成図の「履歴」タブに変更サマリーとして残る（他に書き込む経路は無い）。"},{"name":"overview","type":"string","required":true,"description":"更新後のメタ情報。titles/descriptions（複数形・locale-keyed map）、security（取扱情報種別: \"publicHandling\"|\"confidentialHandling\"|\"privacyHandling\"）等を含む。type（公開設定）は private 固定。version は送っても無視される（サーバが採番する）。"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":843},{"name":"request_upload_url","title":"Request upload URL","description":"プロビジョニングファイル 1 件分の、S3 への presigned PUT URL を発行する（ログインが必要）。ファイルが複数なら batch_request_upload_url が 1 回で N 件を発行する。\n返る upload_url は HTTP PUT でファイル本体を受け付ける（有効期限 10 分）。シェルを実行できるクライアントでの例: curl --silent --show-error --fail -X PUT --upload-file <ローカルパス> '<upload_url>'。ファイル中身はディスクから S3 へ直接送られ、会話の出力トークンにならない。シェルを使えないクライアントでは、create_content / save_content が中身を引数で受け取る。\nアップロードしたファイルは commit_uploaded_codes で構成図に取り込まれる。ADL 本体（adr）も同じ経路で送れ、commit_uploaded_codes の code_entries で is_root:true を付けると inline の adl_root が要らない。\nproject_id を省くと新しい project_id を採番する。同じ project_id で同じ code_id を発行し直すと、commit 時に後のものが使われる。staging はユーザ × project_id ごとに分かれ、他ユーザの project_id には発行できない（403）。\n入力: code_id, lang, fmt（必須）、project_id（追記・更新時）。\n出力: upload_url, content_key, project_id, expires_in。","inputs":[{"name":"code_id","type":"string","required":true,"description":"プロビジョニングファイルのファイル名 (例 \"main.tf\" / \"serverless.yml\" / \"template.yaml\")。S3 のキーに直接使うので [A-Za-z0-9._-] のみ・最大 200 文字。"},{"name":"fmt","type":"string","required":true,"description":"ファイル形式 (json / yaml / hcl の 3 値のみ。.tf/.tfvars/.hcl→hcl、.yml→yaml)。"},{"name":"lang","type":"string","required":true,"description":"カテゴリ。acf=CFn / tfm=Terraform / slf=Serverless / arm=ARM / gdm=GDM / cim=CIM / aro=ROS / oth=その他。【最頻出ミス】拡張子と取り違えるな。yaml/json は fmt フィールドに入れる"},{"name":"project_id","type":"string","required":false,"description":"既存プロジェクトに追記する場合のみ指定。新規作成では未指定で呼び出すと、サーバが project_id を採番して返す。同じセッションの 2 回目以降は返ってきた project_id を渡す。"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":610},{"name":"batch_request_upload_url","title":"Request upload URLs","description":"複数のプロビジョニングファイルの presigned PUT URL を、1 回の呼び出しで N 件（最大 100）発行する（ログインが必要）。\n各 upload_url は HTTP PUT でファイル本体を受け付ける（有効期限 10 分・並列可）。シェルを実行できるクライアントでの例: curl --silent --show-error --fail -X PUT --upload-file <ローカルパス> '<upload_url>'。\nアップロードしたファイルは commit_uploaded_codes で構成図に取り込まれる。ADL 本体（adr）も 1 ファイル分足して送れ、commit_uploaded_codes の code_entries で is_root:true を付けると inline の adl_root が要らない。\nurls[] の順序は入力 files[] と同じ。同じバッチに同じ code_id が 2 件あるとエラー。staging はユーザ × project_id ごとに分かれる。\n入力: files（1〜100 件・必須）、project_id（追記時）。\n出力: project_id, urls: [{code_id, upload_url, content_key}, ...], expires_in（=600）。","inputs":[{"name":"files","type":"array","required":true,"description":"アップロード対象のファイルメタ情報。同じ project_id に紐付く N 件をまとめて発行する。"},{"name":"project_id","type":"string","required":false,"description":"既存プロジェクトに追記する場合のみ指定。新規作成では未指定で呼び出すと、サーバが project_id を採番して返す。"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":359},{"name":"commit_uploaded_codes","title":"Add uploaded files to project","description":"request_upload_url / batch_request_upload_url の URL へ PUT したファイルを、IceShore プロジェクトの codes に取り込む（ログインが必要）。新規プロジェクトはこの呼び出しで作られ、既存プロジェクトにはマージ（MERGE）で追記・更新し、指定しなかった既存ファイルは温存する。\nマージのルール: code_id が一致すれば上書き、新しい code_id は末尾に追加、code_entries に無い既存ファイルはそのまま残る（save_content の全置換とは違う）。adl_root（または is_root:true のエントリ）を渡すと ADL 本体を置き換え、省くと既存のまま。\nADL 本体の渡し方は 2 通り: code_entries の 1 件に is_root:true（staged 経由・大きな ADL 向け）、または引数 adl_root に JSON 文字列（inline・小さな ADL 向け）。両方あれば inline を使う。旧称 cloud_design_root も受け付ける。\n品質評価（KGI）と構成図は保存時にサーバ側で作られるので、画面で保存し直す必要はない。info.version と info.status もサーバが決める（version は保存のたびに +1 される整数、status は品質評価から designed / prepared / draft を自動で決める）。応答には構成図の URL が含まれる。\ncode_entries の各 code_id は、PUT 済みでなければ 400。is_root:true は 1 件まで。ファイルの削除は扱わない（delete_code または save_content）。\nnotes（任意・配列）: 変更の 1 行要約。save_content と同じ形で、構成図の「履歴」タブに残る。応答の「記録した変更サマリー: N 件」が記録された件数。\n入力: project_id（必須）、code_entries（必須・空配列可）、adl_root（新規時に必要・staged の is_root があれば不要）、overview（新規時に必要）、workspace_id（新規時の登録先）、notes。\n出力: id と構成図の URL。","inputs":[{"name":"adl_root","type":"string","required":false,"description":"ADL 構造を JSON.stringify した文字列。新規登録 (= request_upload_url で project_id を新規採番した最初の commit) では **必須**。既存プロジェクトの更新で構造を変えないなら省略可（既存値が保持される）。（旧称 cloud_design_root は後方互換のため引き続き受け付ける）"},{"name":"cloud_design_root","type":"string","required":false,"description":"非推奨。adl_root の旧称。後方互換のため受け付ける。新規コードでは adl_root を使うこと。"},{"name":"code_entries","type":"array","required":true,"description":"curl PUT で staging に置いた各ファイルのメタデータ。**ファイル中身 (data) は含めない**（サーバが S3 staging から読む）。差分アップロードでは「変更したファイルだけ」を列挙する。空配列は cloud_design_root / overview 単体の更新時に許容。"},{"name":"notes","type":"array","required":false,"description":"AIが生成した変更サマリー。**配列**であること（文字列を渡すと引数エラーで拒否される）。例: [{ at: 1717200000, content: \"S3バケット resource_storage を追加\" }]。ここに入れた内容だけが構成図の「履歴」タブに変更サマリーとして残る（他に書き込む経路は無い）。"},{"name":"overview","type":"string","required":false,"description":"プロジェクト概要メタ (titles / descriptions / version / security 等。titles/descriptions は複数形・locale-keyed map。security は取扱情報種別 \"publicHandling\"|\"confidentialHandling\"|\"privacyHandling\"。type（公開設定）は MCP 経由では常に pr…"},{"name":"project_id","type":"string","required":true,"description":"request_upload_url で得た project_id を必ず渡す"},{"name":"workspace_id","type":"string","required":false,"description":"登録先ワークスペース（新規登録時のみ有効）。\"personal\"（個人）または組織UUID（auth_check の organizations[].workspace_id）。【必須運用】依頼文（プロンプト）に登録先ワークスペースの指定があればその値を使う。指定が無い場合は auth_check で組織一覧を取得し、**必ずユーザーに登録先（個人 or 組織名）を確認してから**呼ぶこと。無断…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":1212},{"name":"list_codes_meta","title":"List project files","description":"既存プロジェクトの codes 配列のメタデータ一覧を返す（ファイル中身 data は含まない）。差分アップロードの判定に使う。\n各エントリの sha256 は、data フィールド（文字列）を SHA-256 にかけた値。テキストファイルなら、ローカルの shasum -a 256 <file> の結果と一致する。\nsha256 が一致するファイルは変更なしで、不一致または一覧に無いファイルだけを request_upload_url / batch_request_upload_url → commit_uploaded_codes で送れば足りる。\n入力: project_id。\n出力: codes: [{code_id, isRoot, lang, fmt, size, sha256}]。","inputs":[{"name":"project_id","type":"string","required":true,"description":"対象プロジェクトの id（\"d\" で始まる内部ID。list_projects が返す id）"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":208},{"name":"delete_code","title":"Delete project file","description":"プロジェクトの codes から 1 件のファイルを削除する（ログインが必要）。ADL 本体（adlRoot）は削除できない（必要なら save_content の全置換）。\n1 ファイル分の読み書きだけで済み、全 codes を送り直す save_content より速い。構成図は保存時にサーバ側で作り直される。\n入力: project_id, code_id（どちらも必須）。\n出力: { ok: true, id, removed: true|false }。removed:false は、その code_id が元から無かったことを示す。","inputs":[{"name":"code_id","type":"string","required":true,"description":"削除するファイルの code_id (例 \"old.tf\")。adlRoot は不可。"},{"name":"project_id","type":"string","required":true,"description":"IceShore プロジェクト ID"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":188},{"name":"get_notes","title":"Get notes","description":"プロジェクトの humanNote（人が ADL のノードに残した規範的な注意点）を返す（ログインが必要）。1 ノード（ref_path）につき有効なノートは最大 1 件。\n用途: 既存プロジェクトを編集するときの確認、人が編集した形跡（_meta.d が \"h:\" で始まる）のあるノードの参照、特定ノードについての質問への回答。\nrefs（任意・配列）: 取得するノードの ref_path。省くと全件（最大 500 件）。\nref_path が今の ADL に無いノートは、ノードの削除や改名で取り残されたもの。\n出力: { code, id, data: { notes: [{ note_id, ref_path, text, lang, defined_by, defined_at, updated_at }] } }。","inputs":[{"name":"id","type":"string","required":true,"description":"IceShore プロジェクト ID（\"d\" で始まる内部ID。list_projects / create_content が返す id。例: d9289696c392a29e188.13397864。URL スラグの \"I…\" 形式は使用不可）"},{"name":"refs","type":"array","required":false,"description":"対象ノードの ref_path 配列（例: [\"#/actors/customer\", \"#/useCases/uc1/traffics/t1\"]）。省略時は全件（500 件まで）"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":325},{"name":"add_note","title":"Add or update note","description":"ADL のノードに、規範的な注意点（humanNote）を保存する（ログインが必要・editor または admin 権限）。同じ ref_path への保存は上書き（UPSERT）で、1 ノードに有効なノートは最大 1 件。\ntext: 200 字以内。「〜のため〜にする」「〜なので〜禁止」の規範の形。固有名詞は書ける。1 ノードの複数の観点は 1 文にまとめて書く。\nref_path はサーバが ADL と照合する: 見つからないときは reason=\"ref_path_not_found\" と、当たった最長の前置（matched_prefix）、そこにあるキー（candidates）を返す。ADL が読めないときは reason=\"adl_unavailable\"。\"$ref\" の先はたどらない。ADL に \"contexts\" という欄は無い（実体は \"useCases\"）。\nノートの下書きをローカルにためてから保存する進め方は iceshore://guide/common に書いてある。\n入力: content_id, ref_path, text, lang（すべて必須）。\n出力: { ok, mode: \"inserted\"|\"updated\", defined_at, updated_at }。","inputs":[{"name":"content_id","type":"string","required":true,"description":"IceShore プロジェクト ID（\"d\" で始まる内部ID。list_projects が返す id。\"I…\" 形式は使用不可）"},{"name":"lang","type":"string","required":true,"description":"ISO 639-1 言語コード（例: \"en\", \"ja\"）"},{"name":"ref_path","type":"string","required":true,"description":"対象ノードの ref_path（例: \"#/actors/customer\", \"#/useCases/uc1/traffics/t1\"）。ADL 内に実在するノードを指すこと（サーバが照合し、外れると reason=\"ref_path_not_found\" と candidates を返す）。`contexts` という欄は無い＝`useCases`"},{"name":"text","type":"string","required":true,"description":"規範形の注意点（200 文字以内）。\"〜のため〜にする\" / \"〜なので〜禁止\" の形式。事後報告や抽象表現は禁止"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":508},{"name":"delete_note","title":"Delete note","description":"ADL ノードの humanNote を論理削除する（is_deleted=1・ログインが必要・editor または admin 権限）。行は消さないので、同じ ref_path に add_note すると復活する。\n入力: content_id, ref_path（どちらも必須）。\n出力: { ok, mode: \"deleted\"|\"not_found\" }。","inputs":[{"name":"content_id","type":"string","required":true,"description":"IceShore プロジェクト ID（\"d\" で始まる内部ID。list_projects が返す id。\"I…\" 形式は使用不可）"},{"name":"ref_path","type":"string","required":true,"description":"対象ノードの ref_path"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":149},{"name":"find_content_by_source","title":"Find project by source","description":"git の origin URL（またはローカルの絶対パス）から、IceShore のプロジェクト（ADL）を探す（ログインが必要）。\n用途: IaC のインポート前に、同じリポジトリがインポート済みかを調べる（済みなら更新 = save_content、未なら新規 = create_content の対象になる）。手順は iceshore://guide/iac-import に書いてある。\n入力: origin_url。\n出力: 見つかれば found=true と id・title・updatedAt、無ければ found=false。","inputs":[{"name":"origin_url","type":"string","required":true,"description":"リポジトリのgit remote origin URL。例: \"git@github.com:org/repo.git\" または \"https://github.com/org/repo.git\"。git remoteがない場合はリポジトリの絶対パスを使用。"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":205}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-06T07:48:07.000Z","track":"remote","endpoint":"https://mcp.iceshore.ai/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=iceshore.ai","issuer":"CN=Amazon RSA 2048 M01,O=Amazon,C=US","notBefore":"2026-06-25T00:00:00Z","notAfter":"2027-01-08T23:59:59Z","keyType":"RSA","keyBits":2048,"isCa":false},{"subject":"CN=Amazon RSA 2048 M01,O=Amazon,C=US","issuer":"CN=Amazon Root CA 1,O=Amazon,C=US","notBefore":"2022-08-23T22:21:28Z","notAfter":"2030-08-23T22:21:28Z","keyType":"RSA","keyBits":2048,"isCa":true},{"subject":"CN=Amazon Root CA 1,O=Amazon,C=US","issuer":"CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\\, Inc.,L=Scottsdale,ST=Arizona,C=US","notBefore":"2015-05-25T12:00:00Z","notAfter":"2037-12-31T01:00:00Z","keyType":"RSA","keyBits":2048,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"mcp.iceshore.ai.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"ai.","outcome":"verified","label":"Verified"},{"zone":"iceshore.ai.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"enforced_validated","label":"Enforced and verified","gate":"invoke","gateLabel":"On tool calls","status":200,"authorizationServers":["https://api.iceshore.ai"]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":301},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-06","recent":[{"id":"chg_01a1afd4-477e-7ef7-8fdf-a4bc380de601","kind":"score.rubric_changed","summary":"We updated how we score, so this day's move reflects our rubric, not a change to the server","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a1afd4-477e-7ef7-8fdf-a4bc380de601"},{"id":"chg_01a1aab0-638e-7444-8007-da1eb2d4dab4","kind":"tool.description_changed","summary":"Tool “commit_uploaded_codes” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a1aab0-638e-7444-8007-da1eb2d4dab4"},{"id":"chg_01a1aab0-638f-7392-aa7b-9ed1932db3e4","kind":"param.added_optional","summary":"“commit_uploaded_codes” added an optional parameter “notes”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a1aab0-638f-7392-aa7b-9ed1932db3e4"},{"id":"chg_01a1aab0-638f-7938-b8ca-b6bd3988ef51","kind":"tool.description_changed","summary":"Tool “create_content” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a1aab0-638f-7938-b8ca-b6bd3988ef51"},{"id":"chg_01a1a584-6509-74be-b129-230d52700a42","kind":"check.verdict","summary":"Stability (0.97 → pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a1a584-6509-74be-b129-230d52700a42"},{"id":"chg_01a1a584-650d-70a4-a990-d12ce6fc7315","kind":"score.total_changed","summary":"Trust score (88 → 89)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a1a584-650d-70a4-a990-d12ce6fc7315"},{"id":"chg_01a19b37-0d84-7c3c-9ee0-63d782891022","kind":"score.total_changed","summary":"Trust score (87 → 88)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a19b37-0d84-7c3c-9ee0-63d782891022"},{"id":"chg_01a18bc6-4600-78a6-b273-b417a4275ed5","kind":"score.total_changed","summary":"Trust score (86 → 87)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a18bc6-4600-78a6-b273-b417a4275ed5"},{"id":"chg_01a18177-ab59-70cf-bc9e-9b6a0023a982","kind":"score.total_changed","summary":"Trust score (85 → 86)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a18177-ab59-70cf-bc9e-9b6a0023a982"},{"id":"chg_01a1772b-2d68-7994-b138-b2239e7de84e","kind":"score.total_changed","summary":"Trust score (84 → 85)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a1772b-2d68-7994-b138-b2239e7de84e"},{"id":"chg_01a16cdc-e57c-7c18-8497-bde3d4fbf914","kind":"score.total_changed","summary":"Trust score (83 → 84)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a16cdc-e57c-7c18-8497-bde3d4fbf914"},{"id":"chg_01a16290-c7ed-7a7b-82f2-4dbe512a0a9d","kind":"tool.added","summary":"New tool “find_content_by_source”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a16290-c7ed-7a7b-82f2-4dbe512a0a9d"},{"id":"chg_01a16290-c7ee-75a0-8371-db840deaadae","kind":"score.total_changed","summary":"Trust score (82 → 83)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a16290-c7ee-75a0-8371-db840deaadae"},{"id":"chg_01a15843-5b61-758d-8275-ae3a5492ac5b","kind":"score.total_changed","summary":"Trust score (81 → 82)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-20","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a15843-5b61-758d-8275-ae3a5492ac5b"},{"id":"chg_01a14df6-7786-7175-8ec8-18efc6a79203","kind":"score.total_changed","summary":"Trust score (80 → 81)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-18","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a14df6-7786-7175-8ec8-18efc6a79203"},{"id":"chg_01a13e80-9a73-7a0d-b688-ced92534b4a2","kind":"score.total_changed","summary":"Trust score (79 → 80)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a13e80-9a73-7a0d-b688-ced92534b4a2"},{"id":"chg_01a1342d-14b0-7dd3-a070-b883191ba795","kind":"score.total_changed","summary":"Trust score (78 → 79)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-13","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a1342d-14b0-7dd3-a070-b883191ba795"},{"id":"chg_01a12e25-7b9a-7a47-84fb-2b8986e4535e","kind":"score.total_changed","summary":"Trust score (77 → 78)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-12","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a12e25-7b9a-7a47-84fb-2b8986e4535e"},{"id":"chg_01a1215e-9f01-74ce-a6fa-362426be0e15","kind":"server.instructions_changed","summary":"The server rewrote its instructions, which are the text every model session reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-09","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a1215e-9f01-74ce-a6fa-362426be0e15"},{"id":"chg_01a1215e-9f02-70bf-a6d5-8ec8a8a7b6c1","kind":"score.total_changed","summary":"Trust score (75 → 77)","materiality":"functional","direction":"improvement","scoreDelta":2,"occurredOn":"2026-10-09","url":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp#chg-chg_01a1215e-9f02-70bf-a6d5-8ec8a8a7b6c1"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp","markdown":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp.md","changelogJson":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/ai-iceshore-iceshore/mcp.xml","external":[{"label":"Remote endpoint","href":"https://mcp.iceshore.ai/mcp"},{"label":"Website","href":"https://iceshore.ai/"}]}}