Koskamo

IceShore MCP

IceShore is a configuration-management platform that prompts AI to organize system use cases and generates architecture diagrams. The MCP server allows AI agents to connect to IceShore, read these diagrams, and understand how changes affect business processes, system processing, and external integrations.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

IceShore MCP logo, by Launchers Co., Ltd.Vendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Launchers Co., Ltd.
You need:Using your own workspace requires signing in; you can create a free account from the sign-in page.
MCP endpoint (Streamable HTTP)
https://mcp.iceshore.ai/mcp
Vendor documentation

What its tools do

16 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

16 of 16 have a description · 16 of 16 declare behavior hints · 15 of 15 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to iceshore.ai ·
  • Passed Endpoint is on the registry namespace domain ·
  • Warning Advertises resources/templates/list but does not implement it
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Read system architecture diagrams generated by IceShore
  • Analyze how a change affects business use cases
  • Understand impacts on processing within systems
  • Check effects on external systems

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
iceshore-mcp-server 0.2.0
MCP protocol negotiated in check
2025-03-26
Tools
16 advertised
Resources
20 advertised
Resource templates
Not advertised
Prompts
2 advertised
Server-advertised capabilities
{
  "tools": {},
  "prompts": {},
  "resources": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

あなたは IceShore MCP に接続しました。ADL(Architecture Description Language)作業での **最重要原則**は「ワンショット完了」です。ユーザは 1 度の発話で結果を得たいと 考えています。途中で何度も承認を求めると体験が崩れます。 ## 言語ポリシー ガイド/スキル文書(resources / get_guide)の本文は英語が正本ですが、これは AI 向けの内部文書です。 **ユーザーへの回答・案内は必ず会話(依頼文)の言語で行い、ガイドが英語であることを理由に応答言語を変えないでください。** 日本語の会話では製品用語(構成図 = architecture / ユースケース = use case / ワークスペース = workspace)を用いること。 **データ言語 ≠ 会話言語**: ADL の `title` / `description` は任意の2文字ロケールコード(`^[a-z]{2}$`)の マップで、`vi` / `ko` / `zh` 等も入れられる(en / ja はよくある組合せに過ぎない)。既定は **会話言語 + `en`** で、1つの ADL 内では**全テキストフィールドを同じロケール集合で揃える** (欠損すると UI と図面描画でフォールバック先が食い違う)。多言語を入れることは応答言語を変える 理由にはならない。詳細は iceshore://guide/adl の LANGUAGES 節。 ## ワンショット原則 ユーザに尋ねるのは **create_content / save_content を呼ぶ直前の 1 回だけ**(新規か編集か・登録先・内容の要約は、この 1 回でまとめて聞く)。 それ以外の手順(解析・仕様化・自己レビュー)は **裏で自律実行**してください。 ## 道具を使うときの決まり(以前は各道具の説明にあった) - 利用者が自分のシステム・ワークスペースについて頼むまでは、アカウントが要る道具を呼ばない(サンプルの依頼では呼ばない)。 - アカウントが要る道具の前に auth_check で接続を確かめる(未ログインでも呼べる。ok=false が返る)。ok=false で、利用者が自分のワークスペースを求めているときは、続けて list_projects を呼んで認可を始める。ok=false(クライアントが「sign in again」「re-authenticate」と表示する場合も同じ)ならほかの道具を呼ばず、IceShore へのログインを案内する。利用者はまだアカウントを持っていないことが多いので、「認証が切れた」「再ログイン」とは言わず、「ログイン画面から、アカウントが無ければそのまま無料登録(約1分)できる」と伝える(Claude Code なら、別のターミナルで `claude mcp login iceshore`、または /mcp → iceshore → Authenticate)。ログインしなくてもサンプルは使い続けられることも添える。 - 書き込み(create_content / save_content / commit_uploaded_codes)の前には、利用者に**必ず 1 回**確認する。依頼文が「保存して」「登録して」と言っていても省かない(書き込みは利用者の構成図を変えるため)。確認はこの 1 回だけで、その 1 回で、内容の要約・登録先ワークスペース(依頼文に指定が無いとき)・新規か既存の編集か(不明瞭なとき)をまとめて聞く。 - 書き込む前に iceshore://skill/adl-self-review を実行し、error 級を解消しておく。 - save_content では notes に変更の 1 行要約を 1 件入れる(履歴タブに残る唯一の経路)。 - 保存・更新の結果は get_content で確かめる。保存できたはず、という推測で報告しない。 - 秘密情報らしき値が ***MASKED*** に置き換えられたら、元ファイルの値を Secrets Manager や環境変数へ移すよう利用者に勧める。 - humanNote(add_note / delete_note)の下書きと保存の進め方は iceshore://guide/common に従う。 - IaC のインポートでは最初に find_content_by_source を呼び、手順は iceshore://guide/iac-import に従う。 ## 重要な制約 1. **codes 配列の必須形状**: 配列内に必ず 1 件 adlRoot エントリを含めること(ADL 本体)。 詳細とサンプルは create_content tool description / iceshore://guide/adl 参照。 2. **ADL `info` の必須 7 フィールド**: `version, license, title, description, status, designedAt, authors` いずれか 1 つでも欠けると UI 側スキーマ検証で **図面の描画が拒否される**。常に 7 件揃えること。 サンプルは iceshore://guide/adl の INFO セクション参照。 3. **resources は二段参照**: `<file>#/resources/<RealKey>` 形式で、`<RealKey>` は provisioning ファイル内の Resources Key と完全一致が必須(不一致だと UI で図が描けない)。 4. **codes ファイル**: 原則オリジナルそのまま送る。ペイロード超過時のみ slim 版を許容。 5. **ペイロード上限とトークン節約**: 合計 5KB 以下かつファイル 3 つ未満なら create_content / save_content に inline で載せる。**それを超えるなら batch_request_upload_url + commit_uploaded_codes**(staged)へ回すこと。 正本は iceshore://guide/adl の "Payload size — which write path to take"。 分かれ目を誤ると構成が壊れるので、書き始める前に必ずそちらを読む。 6. **URL**: 完了報告時の URL は **ツール応答が返した URL をそのまま**使うこと(環境ごとにホストが違うので自分で組み立てない)。 旧 `?id=` 形式と `/d/{id}` は存在しない(FE で廃止済み)。 `userFriendlyContentId` は内部用のサブ識別子で、URL には使えないし、ユーザにも返さないこと。 7. **大きい adr の安全な渡し方**: adl_root が 10KB 以上の場合は、親エージェントの context に inline paste すると転写エラーで ADL が壊れることがある。次のいずれかを使うこと。 - **推奨**: adr ファイルも batch_request_upload_url の files に含めて curl PUT し、commit_uploaded_codes の code_entries で **is_root: true** を立てる。inline paste 不要。 - 次善: 専用サブエージェントで Read → ツール呼び出しを 1 ターンで完結させる。親 context への重複転写を避ける。 8. **登録先ワークスペース(workspace_id)**: 新規登録(create_content / commit_uploaded_codes)では 登録先ワークスペースを必ず確定させること。 - 依頼文(プロンプト)に「登録先ワークスペース」「workspace_id」の指定があれば、その値をそのまま渡す。 - **指定が無い場合は無断で登録しない**。auth_check の organizations(workspace_id / name / role)から 候補を取り、登録直前のユーザ確認の中で「登録先: 個人ワークスペース / 組織〇〇」を選んでもらう。 - ユーザーが明示的に別のワークスペースを指定した場合は、auth_check の organizations で そのワークスペースの編集権限(admin / editor)を持つことを確認した上で、その workspace_id を使ってよい。 - workspace_id が有効なのは**新規作成時のみ**。登録済みの構成図のワークスペースは MCP からは (管理者でも)変更できない。変更が必要な場合は IceShore の Web 画面から行うようユーザーに案内する。 - 組織への登録はその組織の編集権限(role=admin / editor)が必要。403 が返ったら個人登録への切替か組織管理者への権限付与依頼を案内する。 - 省略時は個人ワークスペースに登録される(後方互換)。 ## 書き込みの手順は、サーバのガイドにある **この指示文に手順は書かない。**正本は content/ のガイドで、`get_guide` で引ける。 1. `get_guide("adl")` — ADL の書き方と、**新規か更新かの判定**(CREATE vs EDIT 節) 2. 判定に従って一方だけ読む: - 新規 → `get_guide("create")`(対象の特定・スキャン・起草) - 更新 → `get_guide("update")`(対象の特定・ノートの自己整合・**上書き前のドリフト検査**・置換とマージの選び分け) 3. どちらも `get_guide("common")` を参照する (接続確認・ペイロードの経路・登録先・出力場所 cds_root_dir・自己レビューと2段の検査・  確認1回・完了後の project.json 更新とノートと報告) 判定が少しでも曖昧なら、書き込む前にユーザへ1度だけ確認する。 ## セッション開始時の自動チェック(.iceshore/project.json がある場合のみ) CWD に `.iceshore/project.json` が存在する場合のみ実行。存在しなければこのセクション全体をスキップ(APIコールゼロ)。 1. `.iceshore/project.json` を Read し `project_id` / `cds_root_dir` / `codes_sha` を取得 2. `list_codes_meta(project_id)` を呼ぶ(軽量: sha256メタのみ、ファイル内容なし) 3. サーバの sha256 vs `codes_sha` を比較: - ADL root の sha256 が変わった → `get_content(id, mode="root")` → `{cds_root_dir}/adl.json` を更新 → `project.json` の `codes_sha` を更新 - その他ファイルの sha256 が変わった → 1行通知のみ: "⚡ IceShore上でX件のファイルが更新されています(プロビジョニング)。必要なら /iceshore:revise を実行してください。" - 全て同じ → ローカルの `adl.json` をそのまま使用(追加APIコールなし) 4. `project.json` の `last_fetched` を現在時刻(epoch秒)に更新 5. セッション内キャッシュとして baseline_sha(= step 2 の list_codes_meta 結果)を会話コンテキストに保持。同セッション内で再チェックしない。 6. `{cds_root_dir}/adl.json` を Read し、プロジェクトのADL構造を把握する(開発作業の文脈理解に使う) **ADL が stale な場合の通知**: `last_fetched` が現在時刻から86400秒(24時間)以上前の場合、最初のADL参照時に1行通知: "ℹ ADL は24時間以上前の取得です。最新情報が必要な場合は /iceshore:revise を実行してください。" ## 大局分析(ビジネス影響・規模・依存関係) 「誰が困るか」「何が壊れるか」「どこへ波及するか」を問われたら、**コードを調べる前に** `get_guide("analysis")` を読み、その手順に従うこと。推測で答えない。 ## 補助リソース - iceshore://guide/analysis … 大局分析プロトコル本文(`get_guide("analysis")`) - iceshore://skill/adl-brainstorming, adl-spec-writing, adl-self-review … 内部品質規約 - iceshore://skill/process-overview … 全体フロー - /iceshore:revise プロンプト … 既存修正のワンショットフロー ## 匿名(未認証)モード — デモの進め方 Authorization 無しでも接続でき、IceShore 公式サンプルワークスペースの閲覧のみ可能: - list_samples: 公式サンプル一覧(認証不要・サンプルWS固定) - get_content: サンプルの ADL 取得(認証不要・サンプルWSの公開コンテンツのみ) 推奨初手(ユーザーがサンプルで IceShore の価値を体感するための台本): 1. list_samples で一覧を取得し、ユーザーの関心に近いシステムを1つ選ぶ 2. get_content (mode="root" または "detail") で ADL を取得する 3. 「この変更はどの業務に波及するか」など、業務影響・依存関係・リスクの観点で一段深く答える 4. 良い回答ができたら「あなた自身のシステムでも同じ分析ができます(無料登録・約1分)」と橋渡しする - get_guide: ガイド/スキル文書(認証不要) 🚨 **サンプルの依頼で認証・ログイン・無料登録へ誘導しないこと。** 上の3ツールは匿名で通る。 サンプル取得で 401 が返ったらそれはサーバ側の不具合であって認証の合図ではない。 「公開サンプルを取得できませんでした」と事実を伝えるだけにし、認可フローへ進めない。 auth_check は未ログインなら ok=false を返すだけ(401 にならない)。 それ以外のツール(自分のワークスペースの閲覧・作成・保存など)は 401 を返す。利用者がログインを望んだら list_projects を呼べば認可が始まる。 401 を受けたら OAuth 認可(自動開始)でログイン/無料登録すると、ユーザー自身のワークスペースの実構成で回答できるようになる。認可完了後は直前のリクエストを自動で再実行すること。 ## Anonymous mode (EN) Without Authorization you may browse the official IceShore sample workspace only: list_samples, get_content (sample workspace's public content only) and get_guide — all three work anonymously. Never push the user into login / OAuth / sign-up for a SAMPLE request; a 401 on a sample is a server fault, not a signal to authenticate. Recommended demo flow: pick a sample close to the user's interest → fetch its ADL → answer with business impact / dependencies / risks (one level deeper than a generic summary) → then offer: "the same analysis works on YOUR system — free sign-up, ~1 min". auth_check works anonymously and just returns ok=false. Any other tool returns 401 (call list_projects when the user wants to sign in); complete the OAuth authorization (auto-started) and retry the last request. ## 認証直後(自分のワークスペースに接続できたら)— 見せ場の続編 匿名サンプルで業務影響/依存/リスクの分析を見せた後にユーザーが自分のワークスペースへ昇格した場合、 接続が通ったら次を提案するとよい(コピペを促すのではなく、AI 自身が文脈で申し出る): 1. list_projects で現状を確認する(新規ユーザーは空のことが多い) 2. 既存の Terraform / CloudFormation / 設計書があれば取り込み、create_content でユーザーのシステムのモデルを作る 3. できたら、サンプルで見せたのと同じように「この変更はどの業務に波及するか」をユーザー自身の構成で分析する つまり「他人のデモ」で終わらせず、ユーザー自身のシステムでの業務影響分析まで橋渡しする。 ## After authorization (EN) — continue the "wow" on the user's own system Once the user has upgraded from the anonymous sample to their own workspace and the connection works, proactively offer (in context, do not ask them to copy-paste a prompt): 1. list_projects to see the current state (new users are often empty) 2. If they have Terraform / CloudFormation / design docs, import them and build a model of their system via create_content 3. Then analyze "which business operations a change would ripple into" on THEIR architecture — the same way you did on the sample i.e. bridge from "someone else's demo" to real business-impact analysis on the user's own system.

Tools

16 advertised

auth_check — Check connection
Advertised by the server during the last successful anonymous check.
Advertised read-only

IceShore への接続と認証の状態を返す。 入力: なし。 出力: 認証成功なら userId と所属組織一覧(organizations: workspace_id / name / role)、失敗(トークンの無効・失効など)なら error を含む文字列。 organizations[].workspace_id は、create_content / commit_uploaded_codes の登録先(workspace_id)や list_projects の絞り込みに使える値。 組織への登録ができるのは、role が admin または editor の組織。

auth_check input schema
{
  "type": "object",
  "properties": {}
}
auth_check annotations
{
  "title": "Check connection",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
list_projects — List projects
Advertised by the server during the last successful anonymous check.
Advertised read-only

ユーザが閲覧権限を持つプロジェクト(ADL 構成図)の一覧を返す(ログインが必要)。 用途: 作業対象のプロジェクトの特定。業務影響・規模・依存関係を分析するときに、get_content で ADL を取る前の起点になる。 ページング: 既定は page=0 / itemperpage=24。続きは page=1, 2, …。itemperpage の最大は 100。 サンプルとの関係: range を省くと range="related" と同じで、公式サンプルは含まない(サンプルは list_samples が返す)。 workspace_id を渡すと、その 1 組織が所有する案件だけに絞り込む(値は auth_check の organizations[].workspace_id)。 入力: range, page, itemperpage, workspace_id(すべて省略可)。 出力: プロジェクトの id とタイトルの一覧(プレーンテキスト)。末尾に total / totalPages。

list_projects input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "page": {
      "type": "integer",
      "description": "0 起点のページ番号 (default 0)。default の itemperpage=24 件単位でページング。"
    },
    "range": {
      "enum": [
        "",
        "related",
        "bookmark",
        "private",
        "privateBookmark"
      ],
      "type": "string",
      "description": "取得スコープのフィルタ。\"related\" (省略時の既定) = 自分が role を持つ構成図 + 自分の組織の構成図。誰でも見える公開構成図(公式サンプル)は足さない。\"\" = related に加えて公開構成図も含める(サンプルは list_samples を使うこと)。\"bookmark\" = bookmark 済のみ。\"private\" = type=private のみ。\"privateBookmark\" = type=private かつ bookmark 済。"
    },
    "itemperpage": {
      "type": "integer",
      "description": "1 ページあたりの件数 (default 24、最大 100)。"
    },
    "workspace_id": {
      "type": "string",
      "description": "特定の組織(ワークスペース)に絞り込む。auth_check が返す organizations[].workspace_id をそのまま渡す。複数組織に所属するユーザでも、指定した 1 組織が所有する案件のみが返るため、組織を跨いだ取りこぼし・混入を防げる。省略時は全所属組織の構成図が混在する。"
    }
  }
}
list_projects annotations
{
  "title": "List projects",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
list_samples — List sample projects
Advertised by the server during the last successful anonymous check.
Advertised read-only

【認証不要】匿名(未ログイン)でも使える。公式サンプルワークスペースの公開構成図の一覧を返す(ログイン時も公式サンプルワークスペースに固定)。 用途: 新しい設計の参考事例、サンプルを土台にした作成。 list_projects との違い: list_projects は自分が閲覧権限を持つプロジェクト(サンプルを含まない)、本ツールは公式サンプルだけ。 ページング: 既定は page=0 / itemperpage=24。 入力: page, itemperpage(すべて省略可)。 出力: 公開プロジェクトの id とタイトルの一覧。末尾に total / totalPages。

list_samples input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "page": {
      "type": "integer",
      "description": "0 起点のページ番号 (default 0)。default の itemperpage=24 件単位でページング。"
    },
    "itemperpage": {
      "type": "integer",
      "description": "1 ページあたりの件数 (default 24、最大 100)。"
    }
  }
}
list_samples annotations
{
  "title": "List sample projects",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
get_guide — Get guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

【認証不要】匿名(未ログイン)でも使える。IceShore のガイド文書(ADL の書き方・登録手順・分析の進め方など)を名前で返す。 MCP リソースに対応していないクライアント向けの取得手段で、対応クライアントは resources/read でも同じ内容を読める。 主な名前: "analysis"(業務影響・依存・外部波及の分析)/ "registration"(システム登録)/ "fix"(ADL の修正)/ "adl"(ADL の作り方)/ "saving-publishing"(保存と公開)。 入力: name(短縮名または URI パス)。知らない name のときは、使える名前の一覧を返す。 出力: ガイド本文(markdown / JSON。本文は英語)。

get_guide input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "ガイド名。短縮名(例 \"analysis\" / \"registration\" / \"fix\" / \"adl\" / \"saving-publishing\")または URI パス(例 \"guide/analysis\" / \"skill/adl-validator\")。"
    }
  }
}
get_guide annotations
{
  "title": "Get guide",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
get_content — Get project
Advertised by the server during the last successful anonymous check.
Advertised read-only

【認証不要(公式サンプルの公開コンテンツのみ)】匿名では公式サンプルだけを返し、それ以外はログインが必要(401)。IceShore プロジェクト 1 件の ADL と添付ファイルを返す。 用途: 既存プロジェクトの参照、保存・更新の結果の確認(get_content(mode='detail') の戻りが保存後の実際の状態の正典)。 id は list_projects または list_samples が返す、"d" で始まる内部 ID。 mode の違い: - "meta": メタ情報だけ。S3 を読まないので速い(10 秒以上短い) - "root": ADL 本体(adlRoot)だけ - "detail": 全ファイル。大きく、30 秒ほどかかる場合がある 出力: { code, id, mode, data, type, role, ownerID, ... }。

get_content input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "IceShore プロジェクト ID(\"d\" で始まる内部ID。list_projects / create_content が返す id。例: d9289696c392a29e188.13397864。URL スラグの \"I…\" 形式は使用不可)"
    },
    "mode": {
      "enum": [
        "detail",
        "meta",
        "root"
      ],
      "type": "string",
      "description": "取得モード。\n  - \"meta\" (速い・推奨デフォルト): 重い codes blob を S3 から読まない。overview/role 等のメタ情報のみ。10 秒以上短縮可。\n  - \"root\" (中): codes を adlRoot 1 件に絞る。ADL 構造だけ欲しい時。\n  - \"detail\" (既定値、重い): 全 codes を返す。プロビジョニングファイル全件を参照する時のみ。"
    },
    "locale": {
      "type": "string",
      "description": "表示ロケール (en/ja 等)。省略時は en"
    }
  }
}
get_content annotations
{
  "title": "Get project",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
create_content — Create project
Advertised by the server during the last successful anonymous check.

新しい IceShore プロジェクトを作る(ADL と添付ファイルを登録する。ログインが必要)。既存プロジェクトの更新は save_content が扱う。 codes の形: 配列のうち 1 件が ADL 本体(id="adlRoot", isRoot=true, lang="adl", fmt="json", data=ADL を JSON.stringify した文字列)。残りはプロビジョニングファイルを 1 件 1 エントリ(isRoot=false)。ADL 本体が無いと画面では空になる。ADL の構造は iceshore://guide/adl に書いてある。 例: { "codes": [ { "id": "adlRoot", "isRoot": true, "lang": "adl", "fmt": "json", "data": "{"reindeer":"2.0.0","self":"adl.json",...}" }, { "id": "main.tf", "isRoot": false, "lang": "tfm", "fmt": "hcl", "data": "resource "aws_lambda_function" ..." } ], "overview": { "titles": {"en": "...", "ja": "..."}, "descriptions": {"en": "...", "ja": "..."}, "version": "1.0.0", "type": "private", "security": "publicHandling" } } overview は必須。IaC リポジトリからの新規インポートでは importSource(originUrl / lastImportedCommit / lastImportedAt / importMethod。手元のフォルダのパスは送らない)を、変更履歴として changeLog(at / by / source / summary / delta / securityNotices)を持てる(iceshore://guide/iac-import・iceshore://guide/changelog)。 workspace_id: "personal"(個人)または組織の ID(auth_check の organizations[].workspace_id)。省くと個人。組織への登録にはその組織の admin / editor 権限が要り、無ければ 403。登録先は作成時だけ指定でき、後から MCP では変えられない(画面から変える)。 大きさ: 1 回あたり約 5 MB まで(同期リクエストの上限 6 MB)。合計が大きいとき・ファイルが多いときは batch_request_upload_url + commit_uploaded_codes の経路がある。 保存前に、アクセスキー・パスワード・トークンなどに見える値は ***MASKED*** に置き換えて保存する。 出力: 新しい id("d" で始まる内部 ID)と構成図の URL。失敗時は ok:false と error。

create_content input schema
{
  "type": "object",
  "required": [
    "codes",
    "overview"
  ],
  "properties": {
    "codes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "isRoot",
          "lang",
          "fmt",
          "data"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "ファイル名(例 \"main.tf\")。ADL 本体は必ず id=\"adlRoot\""
          },
          "fmt": {
            "enum": [
              "json",
              "yaml",
              "hcl"
            ],
            "type": "string",
            "description": "ファイル形式。\"json\" / \"yaml\" / \"hcl\" の 3 値のみ (FE master 準拠)。\n  - .tf / .tfvars / .hcl ファイル → fmt=\"hcl\"\n  - .yaml / .yml ファイル → fmt=\"yaml\" (.yml は yaml と同等扱い)\n  - .json ファイル → fmt=\"json\"\nadlRoot は必ず \"json\"。【最頻出ミス】カテゴリ(acf/slf/adl 等)と取り違えるな"
          },
          "data": {
            "type": "string",
            "description": "adlRoot は ADL 構造を JSON.stringify した**文字列**。他のエントリはファイル内容そのまま"
          },
          "lang": {
            "enum": [
              "adl",
              "acf",
              "arm",
              "gdm",
              "cim",
              "aro",
              "tfm",
              "slf",
              "oth"
            ],
            "type": "string",
            "description": "カテゴリ(プロビジョニング種別)。adlRoot は \"adl\"。acf=AWS CloudFormation / tfm=Terraform / slf=Serverless Framework / arm=Azure Resource Manager / gdm=Google Cloud Deployment Manager / cim=Google Cloud Infrastructure Manager / aro=Alibaba Cloud ROS / oth=その他。【最頻出ミス】拡張子(yaml/json/hcl)と取り違えるな。それらは fmt フィールドに入れる"
          },
          "isRoot": {
            "type": "boolean",
            "description": "ADL 本体の adlRoot エントリのみ true、その他は false"
          },
          "isUsed": {
            "type": "boolean",
            "description": "省略可。サーバ側で true に補完"
          }
        }
      },
      "description": "【必須形状】配列の中に必ず 1 件 id=\"adlRoot\" isRoot=true lang=\"adl\" fmt=\"json\" のエントリを含めること。adlRoot.data は ADL 構造(reindeer/self/info/actors/resources/useCases/components)を JSON.stringify した文字列。その他のエントリはプロビジョニングファイルを 1 件 1 エントリで isRoot=false として続ける。"
    },
    "overview": {
      "type": "string",
      "description": "プロジェクト概要メタ。titles/descriptions(複数形・locale-keyed map)、version、type(visibility: \"private\"|\"public\")、security(取扱情報種別: \"publicHandling\"|\"confidentialHandling\"|\"privacyHandling\")等を含む。type と security は別概念。例: { titles: { en: \"...\", ja: \"...\" }, descriptions: { en: \"...\", ja: \"...\" }, version: \"1.0.0\", type: \"private\", security: \"publicHandling\" }"
    },
    "workspace_id": {
      "type": "string",
      "description": "登録先ワークスペース。\"personal\"(個人)または組織UUID(auth_check の organizations[].workspace_id)。【必須運用】依頼文(プロンプト)に登録先ワークスペースの指定があればその値を使う。指定が無い場合は auth_check で組織一覧を取得し、**必ずユーザーに登録先(個人 or 組織名)を確認してから**呼ぶこと。無断で個人に作成しない。組織を指定するには、その組織の編集権限(admin または editor。auth_check の organizations[].role で確認可能)が必要。省略時は個人ワークスペースに登録される(後方互換)。ワークスペースを指定できるのは新規作成時のみ。登録済み構成図のワークスペース変更は MCP からは不可(IceShore の Web 画面から行う)。"
    }
  }
}
create_content annotations
{
  "title": "Create project",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
save_content — Update project
Advertised by the server during the last successful anonymous check.
Advertised destructive

既存の IceShore プロジェクトの ADL と添付ファイルを更新する(ログインが必要・所有者または admin / editor 権限)。新規作成は create_content が扱う。 全置換(full-replace): codes に渡したものがすべてになり、未指定の既存ファイルは削除される(allow_code_deletion を付けたときだけ削除を受け付ける)。既存ファイルを残すには、変更しないものも含めて全 codes を送る。現在の codes は get_content(mode='detail') で取れる。一部のファイルだけ足す・直すなら、マージする commit_uploaded_codes がある。 codes の形は create_content と同じ(1 件が ADL 本体 adlRoot)。overview は必須。 notes(任意・配列): 変更の 1 行要約。[{ at: <UNIX 秒・整数>, content: "<100 字以内>" }] の形で、構成図の「履歴」タブに残る。応答の「記録した変更サマリー: N 件」が記録された件数。 info.version と info.status はサーバが決める: version はサーバが採番し、保存のたびに +1 される整数(送った値は使われない)、status は品質評価から designed / prepared / draft を自動で決める("reviewed" は自動では下げない)。応答の「改訂 N / status: X」が保存後の値。 品質評価(KGI)と構成図は保存時にサーバ側で作られる。 IaC から更新するときに人が足した内容(resources[*].lessons、useCases[*].notes、IaC に無い actors など)の扱いは iceshore://guide/iac-import に書いてある。 保存前に、アクセスキー・JWT・秘密鍵・接続文字列などに見える値は ***MASKED*** に置き換えて保存し、置き換えた箇所を応答に一覧で返す。 入力: id(必須)、codes(必須)、overview(必須)、notes、allow_code_deletion。

save_content input schema
{
  "type": "object",
  "required": [
    "id",
    "codes",
    "overview"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "既存プロジェクトの id(\"d\" で始まる内部ID。list_projects / create_content が返す id)"
    },
    "codes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "isRoot",
          "lang",
          "fmt",
          "data"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "ファイル名。ADL 本体は必ず id=\"adlRoot\""
          },
          "fmt": {
            "enum": [
              "json",
              "yaml",
              "hcl"
            ],
            "type": "string",
            "description": "ファイル形式。\"json\" / \"yaml\" / \"hcl\" の 3 値のみ (FE master 準拠)。.tf/.tfvars/.hcl→hcl、.yml→yaml。adlRoot は必ず \"json\"。【最頻出ミス】カテゴリ(acf/slf/adl 等)と取り違えるな"
          },
          "data": {
            "type": "string",
            "description": "adlRoot は ADL 構造を JSON.stringify した文字列。他はファイル内容"
          },
          "lang": {
            "enum": [
              "adl",
              "acf",
              "arm",
              "gdm",
              "cim",
              "aro",
              "tfm",
              "slf",
              "oth"
            ],
            "type": "string",
            "description": "カテゴリ(プロビジョニング種別)。adlRoot は \"adl\"。他は acf=CFn / tfm=Terraform / slf=Serverless / arm=ARM / gdm=GDM / cim=CIM / aro=ROS / oth=その他。【最頻出ミス】拡張子(yaml/json)と取り違えるな。yaml/json は fmt フィールドに入れる"
          },
          "isRoot": {
            "type": "boolean",
            "description": "adlRoot のみ true、その他は false"
          },
          "isUsed": {
            "type": "boolean"
          }
        }
      },
      "description": "【必須形状】配列の中に必ず 1 件 id=\"adlRoot\" isRoot=true lang=\"adl\" のエントリを含める。adlRoot.data は ADL 構造を JSON.stringify した文字列。"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "at",
          "content"
        ],
        "properties": {
          "at": {
            "type": "integer",
            "description": "UNIX秒(整数)。例: 1717200000"
          },
          "content": {
            "type": "string",
            "description": "変更内容のサマリー(日本語・100字以内の1行)"
          }
        }
      },
      "description": "AIが生成した変更サマリー。**配列**であること(文字列を渡すと引数エラーで拒否される)。例: [{ at: 1717200000, content: \"S3バケット resource_storage を追加\" }]。ここに入れた内容だけが構成図の「履歴」タブに変更サマリーとして残る(他に書き込む経路は無い)。"
    },
    "overview": {
      "type": "string",
      "description": "更新後のメタ情報。titles/descriptions(複数形・locale-keyed map)、security(取扱情報種別: \"publicHandling\"|\"confidentialHandling\"|\"privacyHandling\")等を含む。type(公開設定)は private 固定。version は送っても無視される(サーバが採番する)。"
    },
    "allow_code_deletion": {
      "type": "boolean",
      "description": "full-replace で未指定の既存コードを削除することを明示的に許可する。通常は不要(既存プロビジョニングを保持するには全 codes を送る)。"
    }
  }
}
save_content annotations
{
  "title": "Update project",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
request_upload_url — Request upload URL
Advertised by the server during the last successful anonymous check.

プロビジョニングファイル 1 件分の、S3 への presigned PUT URL を発行する(ログインが必要)。ファイルが複数なら batch_request_upload_url が 1 回で N 件を発行する。 返る upload_url は HTTP PUT でファイル本体を受け付ける(有効期限 10 分)。シェルを実行できるクライアントでの例: curl --silent --show-error --fail -X PUT --upload-file <ローカルパス> '<upload_url>'。ファイル中身はディスクから S3 へ直接送られ、会話の出力トークンにならない。シェルを使えないクライアントでは、create_content / save_content が中身を引数で受け取る。 アップロードしたファイルは commit_uploaded_codes で構成図に取り込まれる。ADL 本体(adr)も同じ経路で送れ、commit_uploaded_codes の code_entries で is_root:true を付けると inline の adl_root が要らない。 project_id を省くと新しい project_id を採番する。同じ project_id で同じ code_id を発行し直すと、commit 時に後のものが使われる。staging はユーザ × project_id ごとに分かれ、他ユーザの project_id には発行できない(403)。 入力: code_id, lang, fmt(必須)、project_id(追記・更新時)。 出力: upload_url, content_key, project_id, expires_in。

request_upload_url input schema
{
  "type": "object",
  "required": [
    "code_id",
    "lang",
    "fmt"
  ],
  "properties": {
    "fmt": {
      "enum": [
        "json",
        "yaml",
        "hcl"
      ],
      "type": "string",
      "description": "ファイル形式 (json / yaml / hcl の 3 値のみ。.tf/.tfvars/.hcl→hcl、.yml→yaml)。"
    },
    "lang": {
      "enum": [
        "adl",
        "acf",
        "arm",
        "gdm",
        "cim",
        "aro",
        "tfm",
        "slf",
        "oth"
      ],
      "type": "string",
      "description": "カテゴリ。acf=CFn / tfm=Terraform / slf=Serverless / arm=ARM / gdm=GDM / cim=CIM / aro=ROS / oth=その他。【最頻出ミス】拡張子と取り違えるな。yaml/json は fmt フィールドに入れる"
    },
    "code_id": {
      "type": "string",
      "description": "プロビジョニングファイルのファイル名 (例 \"main.tf\" / \"serverless.yml\" / \"template.yaml\")。S3 のキーに直接使うので [A-Za-z0-9._-] のみ・最大 200 文字。"
    },
    "project_id": {
      "type": "string",
      "description": "既存プロジェクトに追記する場合のみ指定。新規作成では未指定で呼び出すと、サーバが project_id を採番して返す。同じセッションの 2 回目以降は返ってきた project_id を渡す。"
    }
  }
}
request_upload_url annotations
{
  "title": "Request upload URL",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
batch_request_upload_url — Request upload URLs
Advertised by the server during the last successful anonymous check.

複数のプロビジョニングファイルの presigned PUT URL を、1 回の呼び出しで N 件(最大 100)発行する(ログインが必要)。 各 upload_url は HTTP PUT でファイル本体を受け付ける(有効期限 10 分・並列可)。シェルを実行できるクライアントでの例: curl --silent --show-error --fail -X PUT --upload-file <ローカルパス> '<upload_url>'。 アップロードしたファイルは commit_uploaded_codes で構成図に取り込まれる。ADL 本体(adr)も 1 ファイル分足して送れ、commit_uploaded_codes の code_entries で is_root:true を付けると inline の adl_root が要らない。 urls[] の順序は入力 files[] と同じ。同じバッチに同じ code_id が 2 件あるとエラー。staging はユーザ × project_id ごとに分かれる。 入力: files(1〜100 件・必須)、project_id(追記時)。 出力: project_id, urls: [{code_id, upload_url, content_key}, ...], expires_in(=600)。

batch_request_upload_url input schema
{
  "type": "object",
  "required": [
    "files"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "code_id",
          "lang",
          "fmt"
        ],
        "properties": {
          "fmt": {
            "enum": [
              "json",
              "yaml",
              "hcl"
            ],
            "type": "string",
            "description": "ファイル形式 (json / yaml / hcl の 3 値のみ。.tf/.tfvars/.hcl→hcl、.yml→yaml)"
          },
          "lang": {
            "enum": [
              "adl",
              "acf",
              "arm",
              "gdm",
              "cim",
              "aro",
              "tfm",
              "slf",
              "oth"
            ],
            "type": "string",
            "description": "カテゴリ。acf=CFn / tfm=Terraform / slf=Serverless / arm=ARM / gdm=GDM / cim=CIM / aro=ROS / oth=その他"
          },
          "code_id": {
            "type": "string",
            "description": "ファイル名 (例 \"main.tf\")。S3 のキーに直接使うので [A-Za-z0-9._-] のみ。"
          }
        }
      },
      "description": "アップロード対象のファイルメタ情報。同じ project_id に紐付く N 件をまとめて発行する。"
    },
    "project_id": {
      "type": "string",
      "description": "既存プロジェクトに追記する場合のみ指定。新規作成では未指定で呼び出すと、サーバが project_id を採番して返す。"
    }
  }
}
batch_request_upload_url annotations
{
  "title": "Request upload URLs",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
commit_uploaded_codes — Add uploaded files to project
Advertised by the server during the last successful anonymous check.
Advertised destructive

request_upload_url / batch_request_upload_url の URL へ PUT したファイルを、IceShore プロジェクトの codes に取り込む(ログインが必要)。新規プロジェクトはこの呼び出しで作られ、既存プロジェクトにはマージ(MERGE)で追記・更新し、指定しなかった既存ファイルは温存する。 マージのルール: code_id が一致すれば上書き、新しい code_id は末尾に追加、code_entries に無い既存ファイルはそのまま残る(save_content の全置換とは違う)。adl_root(または is_root:true のエントリ)を渡すと ADL 本体を置き換え、省くと既存のまま。 ADL 本体の渡し方は 2 通り: code_entries の 1 件に is_root:true(staged 経由・大きな ADL 向け)、または引数 adl_root に JSON 文字列(inline・小さな ADL 向け)。両方あれば inline を使う。旧称 cloud_design_root も受け付ける。 品質評価(KGI)と構成図は保存時にサーバ側で作られるので、画面で保存し直す必要はない。info.version と info.status もサーバが決める(version は保存のたびに +1 される整数、status は品質評価から designed / prepared / draft を自動で決める)。応答には構成図の URL が含まれる。 code_entries の各 code_id は、PUT 済みでなければ 400。is_root:true は 1 件まで。ファイルの削除は扱わない(delete_code または save_content)。 notes(任意・配列): 変更の 1 行要約。save_content と同じ形で、構成図の「履歴」タブに残る。応答の「記録した変更サマリー: N 件」が記録された件数。 入力: project_id(必須)、code_entries(必須・空配列可)、adl_root(新規時に必要・staged の is_root があれば不要)、overview(新規時に必要)、workspace_id(新規時の登録先)、notes。 出力: id と構成図の URL。

commit_uploaded_codes input schema
{
  "type": "object",
  "required": [
    "project_id",
    "code_entries"
  ],
  "properties": {
    "notes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "at",
          "content"
        ],
        "properties": {
          "at": {
            "type": "integer",
            "description": "UNIX秒(整数)。例: 1717200000"
          },
          "content": {
            "type": "string",
            "description": "変更内容のサマリー(日本語・100字以内の1行)"
          }
        }
      },
      "description": "AIが生成した変更サマリー。**配列**であること(文字列を渡すと引数エラーで拒否される)。例: [{ at: 1717200000, content: \"S3バケット resource_storage を追加\" }]。ここに入れた内容だけが構成図の「履歴」タブに変更サマリーとして残る(他に書き込む経路は無い)。"
    },
    "adl_root": {
      "type": "string",
      "description": "ADL 構造を JSON.stringify した文字列。新規登録 (= request_upload_url で project_id を新規採番した最初の commit) では **必須**。既存プロジェクトの更新で構造を変えないなら省略可(既存値が保持される)。(旧称 cloud_design_root は後方互換のため引き続き受け付ける)"
    },
    "overview": {
      "type": "string",
      "description": "プロジェクト概要メタ (titles / descriptions / version / security 等。titles/descriptions は複数形・locale-keyed map。security は取扱情報種別 \"publicHandling\"|\"confidentialHandling\"|\"privacyHandling\"。type(公開設定)は MCP 経由では常に private に固定されるため指定不要)。新規登録では **必須**。更新で overview を変えないなら省略可。"
    },
    "project_id": {
      "type": "string",
      "description": "request_upload_url で得た project_id を必ず渡す"
    },
    "code_entries": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "code_id",
          "lang",
          "fmt"
        ],
        "properties": {
          "fmt": {
            "enum": [
              "json",
              "yaml",
              "hcl"
            ],
            "type": "string"
          },
          "lang": {
            "enum": [
              "adl",
              "acf",
              "arm",
              "gdm",
              "cim",
              "aro",
              "tfm",
              "slf",
              "oth"
            ],
            "type": "string"
          },
          "code_id": {
            "type": "string",
            "description": "request_upload_url / batch_request_upload_url で渡したのと同じ code_id"
          },
          "is_root": {
            "type": "boolean",
            "description": "true を指定すると、この code_id の staged ファイル本体を adl_root (ADL 構造 JSON) として扱う。別途 adl_root 引数を渡す代わりに使えば 30KB+ の adr 文字列を inline で送る必要がなくなり大幅にトークン節約できる。1 回の commit で is_root=true は最大 1 件まで。inline adl_root と同時指定された場合は inline が優先。ADL 内部表記 (`isRoot` camelCase) で送っても自動的に `is_root` に正規化される。大きい ADL(30KB+)や通信タイムアウトを避けたい場合は staged is_root(本ファイルをルートとして指定)が有効。小さい ADL は inline adl_root でも可。どちらも正規サポート。"
          }
        }
      },
      "description": "curl PUT で staging に置いた各ファイルのメタデータ。**ファイル中身 (data) は含めない**(サーバが S3 staging から読む)。差分アップロードでは「変更したファイルだけ」を列挙する。空配列は cloud_design_root / overview 単体の更新時に許容。"
    },
    "workspace_id": {
      "type": "string",
      "description": "登録先ワークスペース(新規登録時のみ有効)。\"personal\"(個人)または組織UUID(auth_check の organizations[].workspace_id)。【必須運用】依頼文(プロンプト)に登録先ワークスペースの指定があればその値を使う。指定が無い場合は auth_check で組織一覧を取得し、**必ずユーザーに登録先(個人 or 組織名)を確認してから**呼ぶこと。無断で個人に作成しない。組織を指定するには、その組織の編集権限(admin / editor)が必要。省略時は個人ワークスペースに登録される(後方互換)。既存プロジェクトの更新時 workspace_id は無視される。登録済み構成図のワークスペース変更は MCP からは不可(IceShore の Web 画面から行う)。"
    },
    "cloud_design_root": {
      "type": "string",
      "description": "非推奨。adl_root の旧称。後方互換のため受け付ける。新規コードでは adl_root を使うこと。"
    }
  }
}
commit_uploaded_codes annotations
{
  "title": "Add uploaded files to project",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
list_codes_meta — List project files
Advertised by the server during the last successful anonymous check.
Advertised read-only

既存プロジェクトの codes 配列のメタデータ一覧を返す(ファイル中身 data は含まない)。差分アップロードの判定に使う。 各エントリの sha256 は、data フィールド(文字列)を SHA-256 にかけた値。テキストファイルなら、ローカルの shasum -a 256 <file> の結果と一致する。 sha256 が一致するファイルは変更なしで、不一致または一覧に無いファイルだけを request_upload_url / batch_request_upload_url → commit_uploaded_codes で送れば足りる。 入力: project_id。 出力: codes: [{code_id, isRoot, lang, fmt, size, sha256}]。

list_codes_meta input schema
{
  "type": "object",
  "required": [
    "project_id"
  ],
  "properties": {
    "project_id": {
      "type": "string",
      "description": "対象プロジェクトの id(\"d\" で始まる内部ID。list_projects が返す id)"
    }
  }
}
list_codes_meta annotations
{
  "title": "List project files",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
delete_code — Delete project file
Advertised by the server during the last successful anonymous check.
Advertised destructive

プロジェクトの codes から 1 件のファイルを削除する(ログインが必要)。ADL 本体(adlRoot)は削除できない(必要なら save_content の全置換)。 1 ファイル分の読み書きだけで済み、全 codes を送り直す save_content より速い。構成図は保存時にサーバ側で作り直される。 入力: project_id, code_id(どちらも必須)。 出力: { ok: true, id, removed: true|false }。removed:false は、その code_id が元から無かったことを示す。

delete_code input schema
{
  "type": "object",
  "required": [
    "project_id",
    "code_id"
  ],
  "properties": {
    "code_id": {
      "type": "string",
      "description": "削除するファイルの code_id (例 \"old.tf\")。adlRoot は不可。"
    },
    "project_id": {
      "type": "string",
      "description": "IceShore プロジェクト ID"
    }
  }
}
delete_code annotations
{
  "title": "Delete project file",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
get_notes — Get notes
Advertised by the server during the last successful anonymous check.
Advertised read-only

プロジェクトの humanNote(人が ADL のノードに残した規範的な注意点)を返す(ログインが必要)。1 ノード(ref_path)につき有効なノートは最大 1 件。 用途: 既存プロジェクトを編集するときの確認、人が編集した形跡(_meta.d が "h:" で始まる)のあるノードの参照、特定ノードについての質問への回答。 refs(任意・配列): 取得するノードの ref_path。省くと全件(最大 500 件)。 ref_path が今の ADL に無いノートは、ノードの削除や改名で取り残されたもの。 出力: { code, id, data: { notes: [{ note_id, ref_path, text, lang, defined_by, defined_at, updated_at }] } }。

get_notes input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "IceShore プロジェクト ID(\"d\" で始まる内部ID。list_projects / create_content が返す id。例: d9289696c392a29e188.13397864。URL スラグの \"I…\" 形式は使用不可)"
    },
    "refs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "対象ノードの ref_path 配列(例: [\"#/actors/customer\", \"#/useCases/uc1/traffics/t1\"])。省略時は全件(500 件まで)"
    }
  }
}
get_notes annotations
{
  "title": "Get notes",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
add_note — Add or update note
Advertised by the server during the last successful anonymous check.
Advertised destructive

ADL のノードに、規範的な注意点(humanNote)を保存する(ログインが必要・editor または admin 権限)。同じ ref_path への保存は上書き(UPSERT)で、1 ノードに有効なノートは最大 1 件。 text: 200 字以内。「〜のため〜にする」「〜なので〜禁止」の規範の形。固有名詞は書ける。1 ノードの複数の観点は 1 文にまとめて書く。 ref_path はサーバが ADL と照合する: 見つからないときは reason="ref_path_not_found" と、当たった最長の前置(matched_prefix)、そこにあるキー(candidates)を返す。ADL が読めないときは reason="adl_unavailable"。"$ref" の先はたどらない。ADL に "contexts" という欄は無い(実体は "useCases")。 ノートの下書きをローカルにためてから保存する進め方は iceshore://guide/common に書いてある。 入力: content_id, ref_path, text, lang(すべて必須)。 出力: { ok, mode: "inserted"|"updated", defined_at, updated_at }。

add_note input schema
{
  "type": "object",
  "required": [
    "content_id",
    "ref_path",
    "text",
    "lang"
  ],
  "properties": {
    "lang": {
      "type": "string",
      "description": "ISO 639-1 言語コード(例: \"en\", \"ja\")"
    },
    "text": {
      "type": "string",
      "description": "規範形の注意点(200 文字以内)。\"〜のため〜にする\" / \"〜なので〜禁止\" の形式。事後報告や抽象表現は禁止"
    },
    "ref_path": {
      "type": "string",
      "description": "対象ノードの ref_path(例: \"#/actors/customer\", \"#/useCases/uc1/traffics/t1\")。ADL 内に実在するノードを指すこと(サーバが照合し、外れると reason=\"ref_path_not_found\" と candidates を返す)。`contexts` という欄は無い=`useCases`"
    },
    "content_id": {
      "type": "string",
      "description": "IceShore プロジェクト ID(\"d\" で始まる内部ID。list_projects が返す id。\"I…\" 形式は使用不可)"
    }
  }
}
add_note annotations
{
  "title": "Add or update note",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
delete_note — Delete note
Advertised by the server during the last successful anonymous check.
Advertised destructive

ADL ノードの humanNote を論理削除する(is_deleted=1・ログインが必要・editor または admin 権限)。行は消さないので、同じ ref_path に add_note すると復活する。 入力: content_id, ref_path(どちらも必須)。 出力: { ok, mode: "deleted"|"not_found" }。

delete_note input schema
{
  "type": "object",
  "required": [
    "content_id",
    "ref_path"
  ],
  "properties": {
    "ref_path": {
      "type": "string",
      "description": "対象ノードの ref_path"
    },
    "content_id": {
      "type": "string",
      "description": "IceShore プロジェクト ID(\"d\" で始まる内部ID。list_projects が返す id。\"I…\" 形式は使用不可)"
    }
  }
}
delete_note annotations
{
  "title": "Delete note",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
find_content_by_source — Find project by source
Advertised by the server during the last successful anonymous check.
Advertised read-only

git の origin URL(またはローカルの絶対パス)から、IceShore のプロジェクト(ADL)を探す(ログインが必要)。 用途: IaC のインポート前に、同じリポジトリがインポート済みかを調べる(済みなら更新 = save_content、未なら新規 = create_content の対象になる)。手順は iceshore://guide/iac-import に書いてある。 入力: origin_url。 出力: 見つかれば found=true と id・title・updatedAt、無ければ found=false。

find_content_by_source input schema
{
  "type": "object",
  "required": [
    "origin_url"
  ],
  "properties": {
    "origin_url": {
      "type": "string",
      "description": "リポジトリのgit remote origin URL。例: \"git@github.com:org/repo.git\" または \"https://github.com/org/repo.git\"。git remoteがない場合はリポジトリの絶対パスを使用。"
    }
  }
}
find_content_by_source annotations
{
  "title": "Find project by source",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

2 advertised

generate

Advertised by the server during the last successful anonymous check.

カレントディレクトリのファイルから ADL を生成し IceShore に登録する。新規・更新のどちらも扱う。

No arguments advertised.

revise

Advertised by the server during the last successful anonymous check.

既存の構成図(ADL)を修正して保存する。

No arguments advertised.

Resources

20 advertised

ADL Generation Guide

Advertised by the server during the last successful anonymous check.

AI 向け最適化された ADL 生成ガイド。ADL生成・更新時に必ず参照すること。

ADL Generation Guide URI
iceshore://guide/adl

MIME type: text/markdown

ADL Lightweight Schema

Advertised by the server during the last successful anonymous check.

ADL の構造のみを記述した JSON Schema(説明省略の軽量版)

ADL Lightweight Schema URI
iceshore://schema/adl/structure

MIME type: application/json

ADL Full Schema

Advertised by the server during the last successful anonymous check.

完全な ADL JSON Schema (reindeer-schema_cds.json)。詳細確認時のみ取得

ADL Full Schema URI
iceshore://schema/adl/full

MIME type: application/json

Create a New Architecture

Advertised by the server during the last successful anonymous check.

新規の構成図を作って登録する手順。共通の段は guide/common を参照する。

Create a New Architecture URI
iceshore://guide/create

MIME type: text/markdown

Update an Existing Architecture

Advertised by the server during the last successful anonymous check.

既存の構成図を直す手順。上書き前のドリフト検査と、置換/マージの選び分けを含む。

Update an Existing Architecture URI
iceshore://guide/update

MIME type: text/markdown

Common Write Steps

Advertised by the server during the last successful anonymous check.

新規・更新の両方に共通する段(接続確認・ペイロード経路・出力場所・自己レビュー・確認1回・完了後の処理)。create / update ガイドから参照される。

Common Write Steps URI
iceshore://guide/common

MIME type: text/markdown

Working Folder Structure

Advertised by the server during the last successful anonymous check.

IceShore MCP の作業フォルダ推奨構成

Working Folder Structure URI
iceshore://guide/folder-structure

MIME type: text/markdown

ADL Brainstorming Skill

Advertised by the server during the last successful anonymous check.

クラリファイ手順。ADL 新規作成時にユーザに最初に質問するべき項目

ADL Brainstorming Skill URI
iceshore://skill/adl-brainstorming

MIME type: text/markdown

ADL Spec Writing Skill

Advertised by the server during the last successful anonymous check.

簡易設計仕様の書き方とユーザへの提示テンプレート

ADL Spec Writing Skill URI
iceshore://skill/adl-spec-writing

MIME type: text/markdown

ADL Self-Review Skill

Advertised by the server during the last successful anonymous check.

create_content 前のセルフチェック(error/warning/info の3段階)

ADL Self-Review Skill URI
iceshore://skill/adl-self-review

MIME type: text/markdown

ADL Validator

Advertised by the server during the last successful anonymous check.

ADL構造バリデーション(S0-S2/E1-E8/SC)とセマンティック品質レビュー(W1-W5/Q1-Q2)の2段階チェックルール。登録前に必ず参照する。

ADL Validator URI
iceshore://skill/adl-validator

MIME type: text/markdown

ADL Task Tracking Skill

Advertised by the server during the last successful anonymous check.

TaskCreate を使った設計プロセスの Phase 管理

ADL Task Tracking Skill URI
iceshore://skill/task-tracking

MIME type: text/markdown

ADL Process Overview

Advertised by the server during the last successful anonymous check.

設計プロセス全体の俯瞰。他 skill への索引

ADL Process Overview URI
iceshore://skill/process-overview

MIME type: text/markdown

ADL for Development Skill

Advertised by the server during the last successful anonymous check.

開発作業でのADL活用ガイド。エンハンス・障害対応・QA対応時にADLをAI文脈理解に使う方法

ADL for Development Skill URI
iceshore://skill/adl-for-development

MIME type: text/markdown

IaC Import Guide

Advertised by the server during the last successful anonymous check.

IaC(serverless.yml / CloudFormation / Terraform等)からADLを生成・更新するための手順ガイド。IaCインポート時に必ず参照すること。

IaC Import Guide URI
iceshore://guide/iac-import

MIME type: text/markdown

changeLog Guide

Advertised by the server during the last successful anonymous check.

overview.changeLog フォーマット仕様。create_content / save_content 呼び出し前に必ず参照し、changeLog エントリを overview に書き込むこと。

changeLog Guide URI
iceshore://guide/changelog

MIME type: text/markdown

Saving & Publishing Guide

Advertised by the server during the last successful anonymous check.

保存/公開メソッドの使い分け(full-replace vs merge / KGI / adl_root / 描画ルール)。save_content/commit_uploaded_codes を使う前に参照。

Saving & Publishing Guide URI
iceshore://guide/saving-publishing

MIME type: text/markdown

System Registration Guide

Advertised by the server during the last successful anonymous check.

登録/追加依頼プロンプトの実行手順(環境判定/作業フォルダ/ADL作成/workspace_id 規則/403対応/報告)。登録依頼を受けたら必ず参照。

System Registration Guide URI
iceshore://guide/registration

MIME type: text/markdown

Big-Picture Analysis Protocol

Advertised by the server during the last successful anonymous check.

業務影響/依存/外部波及の質問に答える手順(対象の特定3経路・サンプルは認証不要・ADL取得・回答の型)。質問プロンプトを受けたら必ず参照。

Big-Picture Analysis Protocol URI
iceshore://guide/analysis

MIME type: text/markdown

ADL Fix Guide

Advertised by the server during the last successful anonymous check.

修正依頼プロンプトの実行手順(get_content 取得/修正分類/ディレクトリ照合/差分適用/保存と報告)。修正依頼を受けたら必ず参照。

ADL Fix Guide URI
iceshore://guide/fix

MIME type: text/markdown

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1570 ms
95th percentile latency
1570 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1570 ms · metadata changed · 16 tool(s), 20 resource(s), 2 prompt(s); warnings: Advertises resources/templates/list but does not implement it

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http iceshore-mcp https://mcp.iceshore.ai/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add iceshore-mcp --url https://mcp.iceshore.ai/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable iceshore-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "iceshore-mcp": {
      "url": "https://mcp.iceshore.ai/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "iceshore-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.iceshore.ai/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start iceshore-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "iceshore-mcp": {
      "type": "http",
      "url": "https://mcp.iceshore.ai/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http iceshore-mcp https://mcp.iceshore.ai/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.iceshore.ai/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "iceshore-mcp": {
      "serverUrl": "https://mcp.iceshore.ai/mcp"
    }
  }
}

Let your agent find its tools

Find servers like IceShore MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run IceShore MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing