The IcePanel MCP connector routes your AI agent's tool calls to IcePanel's own MCP server through Scalekit. Each user signs in to IcePanel once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 24 tools.
- Tools
- 24
- What they doRead · write · destructive
- 18 · 6 · 018 read6 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the IcePanel MCP connection
In AgentKit > Connections, create an IcePanel MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for IcePanel MCP server, so you don't need to register an OAuth app. To show your own app on the consent screen, use your own credentials instead.
Use your own OAuth app
IcePanel uses OAuth 2.1 with Dynamic Client Registration (DCR) — Scalekit registers an OAuth client with IcePanel automatically. No manual app registration or client credentials are needed.
-
Copy the redirect URI from Scalekit
In the Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find IcePanel MCP and click Create. Copy the redirect URI — it looks like
https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback. -
Authorize with your IcePanel account
Click Connect in the Scalekit dashboard. You are redirected to IcePanel’s login page. Sign in with the IcePanel account that owns the landscapes you want to access.
-
Confirm the connection is active
After you authorize, Scalekit exchanges the authorization code for tokens and marks the connection as Active. IcePanel tokens are refreshed automatically — no further steps are needed.
-
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'icepanelmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize IcePanel MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'icepanelmcp_icepanel_listadrs',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "icepanelmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize IcePanel MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="icepanelmcp_icepanel_listadrs",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolicepanelmcp_icepanel_getadrdetailsGet detailed information about a specific Architecture Decision Record (ADR) including its full content, status history, and related items.Read-onlyGetADRDetails
Get detailed information about a specific Architecture Decision Record (ADR) including its full content, status history, and related items.
Inputs
adrIdstringrequired- The unique identifier of the ADR to retrieve.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full ADR information or 'concise' for a summary.one of
detailedconcise versionIdstring- The landscape version ID. Omit to use the latest version.
icepanelmcp_icepanel_getconnectiondetailsGet full details for a single connection including description, links, technologies, and tags.Read-onlyGetConnectionDetails
Get full details for a single connection including description, links, technologies, and tags.
Inputs
connectionIdstringrequired- The unique ID of the connection to retrieve. Use listConnections to discover available connection IDs.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full connection information including all technologies and tags, or 'concise' for a summary.one of
detailedconcise versionIdstring- The landscape version ID to retrieve the connection from. Leave blank to use the latest version.
icepanelmcp_icepanel_getdiagramdetailsGet detailed information about a diagram including its objects, connections, and flows, or export as a PNG image.Read-onlyGetDiagramDetails
Get detailed information about a diagram including its objects, connections, and flows, or export as a PNG image.
Inputs
diagramIdstringrequired- The unique identifier of the diagram to retrieve.
responseFormatstring- Response format. Use 'detailed' for full information, 'concise' for a summary, or 'image' to export as a PNG image.one of
detailedconciseimage versionIdstring- The landscape version ID. Omit to use the latest version.
icepanelmcp_icepanel_getdomaindetailsGet detailed information about a specific domain including its name, labels, and timestamps.Read-onlyGetDomainDetails
Get detailed information about a specific domain including its name, labels, and timestamps.
Inputs
domainIdstringrequired- The unique ID of the domain to retrieve. Use listDomains to discover available domain IDs.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full domain information or 'concise' for a summary.one of
detailedconcise versionIdstring- The landscape version ID to retrieve the domain from. Leave blank to use the latest version.
icepanelmcp_icepanel_getflowdetailsGet detailed information about a flow including its steps, or export it as a Mermaid sequence diagram.Read-onlyGetFlowDetails
Get detailed information about a flow including its steps, or export it as a Mermaid sequence diagram.
Inputs
flowIdstringrequired- The unique identifier of the flow to retrieve.
responseFormatstring- Response format. Use 'detailed' for full information, 'concise' for a summary, or 'mermaid' to export as a Mermaid sequence diagram.one of
detailedconcisemermaid versionIdstring- The landscape version ID. Omit to use the latest version.
icepanelmcp_icepanel_getmodelobjectdetailsGet detailed information about a model object including its type, status, domain, technologies, tags, and relationships.Read-onlyGetModelObjectDetails
Get detailed information about a model object including its type, status, domain, technologies, tags, and relationships.
Inputs
modelObjectIdstringrequired- The unique ID of the model object to retrieve. Use listModelObjects to discover available model object IDs.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full object information including all relationships, or 'concise' for a summary.one of
detailedconcise versionIdstring- The landscape version ID to retrieve the model object from. Leave blank to use the latest version.
icepanelmcp_icepanel_getteamdetailsGet detailed information about a specific team including its members, assigned model objects, and timestamps.Read-onlyGetTeamDetails
Get detailed information about a specific team including its members, assigned model objects, and timestamps.
Inputs
teamIdstringrequired- The unique identifier of the team to retrieve.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full team information or 'concise' for a summary.one of
detailedconcise
icepanelmcp_icepanel_gettechnologydetailsGet detailed information about a specific technology including its type, provider, description, and links.Read-onlyGetTechnologyDetails
Get detailed information about a specific technology including its type, provider, description, and links.
Inputs
catalogTechnologyIdstringrequired- The unique ID of the technology to retrieve details for. Use listTechnologies to discover available technology IDs.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full technology information or 'concise' for a summary.one of
detailedconcise
icepanelmcp_icepanel_landscapesearchSearch across all landscape entities (model objects, connections, diagrams, flows) by name.Read-onlyLandscapeSearch
Search across all landscape entities (model objects, connections, diagrams, flows) by name. Supports fuzzy and prefix matching. Only works on the latest version.
Inputs
querystringrequired- Search query string used to find landscape entities by name. Supports fuzzy and prefix matching across model objects, connections, diagrams, and flows.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full entity information or 'concise' for a summary. Defaults to detailed if omitted.one of
detailedconcise typestring- Filter results to a specific entity type. Valid values: actor, app, component, group, store, system, app-diagram, component-diagram, context-diagram, connection, flow.one of
actorappcomponentgroupstoresystemapp-diagramcomponent-diagramcontext-diagramconnectionflow versionIdstring- The landscape version ID to search within. Defaults to 'latest'. Only the latest version is supported for search.default
latest
icepanelmcp_icepanel_listadrsList Architecture Decision Records (ADRs) in the landscape.Read-onlyListADRs
List Architecture Decision Records (ADRs) in the landscape.
Inputs
namestring- Filter ADRs by name.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full ADR information or 'concise' for a summary.one of
detailedconcise statusstring- Filter ADRs by status. Valid values: accepted, draft, rejected.one of
accepteddraftrejected versionIdstring- The landscape version ID to list ADRs from. Omit to use the latest version.
icepanelmcp_icepanel_listconnectionsList connections where a model object is the origin or target.Read-onlyListConnections
List connections where a model object is the origin or target.
Inputs
modelObjectIdstringrequired- The unique ID of the model object to list connections for. Returns all connections where this object is either the origin or target.
directionstring- Filter connections by direction relative to the specified model object. Use 'inbound' for connections where the object is the target, or 'outbound' for connections where the object is the origin.one of
inboundoutbound statusstring- Filter connections by status (e.g. active, deprecated, removed). Leave blank to return connections in all statuses.
tagIdstring- Filter connections by tag ID. Returns only connections that have the specified tag applied.
technologyIdstring- Filter connections by technology ID. Returns only connections that use the specified technology.
versionIdstring- The landscape version ID to list connections from. Leave blank to use the latest version.
icepanelmcp_icepanel_listdiagramsList diagrams in the landscape.Read-onlyListDiagrams
List diagrams in the landscape. Filter by name, type, or parent model object.
Inputs
modelIdstring- Filter diagrams by parent model object ID.
namestring- Filter diagrams by name.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full diagram information or 'concise' for a summary.one of
detailedconcise typestring- Filter diagrams by type. Valid values: app-diagram, component-diagram, context-diagram.one of
app-diagramcomponent-diagramcontext-diagram versionIdstring- The landscape version ID to list diagrams from. Omit to use the latest version.
icepanelmcp_icepanel_listdomainsList domains in the landscape.Read-onlyListDomains
List domains in the landscape. Domains are top-level organizational boundaries (level 0 in the C4 hierarchy).
Inputs
namestring- Filter domains by name. Returns domains whose name matches this value.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full domain information or 'concise' for a summary.one of
detailedconcise versionIdstring- The landscape version ID to list domains from. Leave blank to use the latest version.
icepanelmcp_icepanel_listflowsList flows in the landscape.Read-onlyListFlows
List flows in the landscape. Flows represent sequence diagrams showing how objects interact over time.
Inputs
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full flow information or 'concise' for a summary.one of
detailedconcise versionIdstring- The landscape version ID to list flows from. Omit to use the latest version.
icepanelmcp_icepanel_listmodelobjectsList model objects in the landscape.Read-onlyListModelObjects
List model objects in the landscape. Filter by name, type, status, parent, or group.
Inputs
cursorstring- Pagination cursor returned from a previous response. Pass this value to retrieve the next page of results.
groupIdstring- Filter model objects by group ID. Returns only objects belonging to the specified group.
limitinteger- Maximum number of model objects to return per page. Leave blank for the server default.
namestring- Filter model objects by name. Returns objects whose name matches this value.
parentIdstring- Filter model objects by parent object ID. Returns only direct children of the specified parent object.
statusstring- Filter model objects by status. Common values include 'active' and 'deprecated'.
tagIdstring- Filter model objects by tag ID. Returns only objects that have the specified tag applied.
teamIdstring- Filter model objects by team ID. Returns only objects owned by or assigned to the specified team.
technologyIdstring- Filter model objects by technology ID. Returns only objects that use the specified technology.
typestring- Filter model objects by type. Valid values: actor, app, component, group, store, system.one of
actorappcomponentgroupstoresystem versionIdstring- The landscape version ID to list model objects from. Leave blank to use the latest version.
icepanelmcp_icepanel_listteamsList teams in the organization.Read-onlyListTeams
List teams in the organization. Teams represent ownership groups assignable to model objects.
Inputs
namestring- Filter teams by name. Returns only teams whose name matches or contains the provided value.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' for full team information or 'concise' for a summary.one of
detailedconcise
icepanelmcp_icepanel_listtechnologiesList technologies from the catalog and organization.Read-onlyListTechnologies
List technologies from the catalog and organization. Filter by name, type, or provider.
Inputs
cursorstring- Pagination cursor returned from a previous response. Pass this value to retrieve the next page of results.
limitinteger- Maximum number of technologies to return per page. Leave blank for the server default.
namestring- Filter technologies by name. Returns technologies whose name matches or contains this value.
providerstring- Filter technologies by provider (e.g. AWS, GCP, Azure). Returns only technologies from the specified provider.
responseFormatstring- Controls the verbosity of the response. Use 'detailed' to include technology IDs (required for getTechnologyDetails) or 'concise' for a summary.one of
detailedconcise typestring- Filter technologies by type (e.g. database, framework, language, platform). Returns only technologies of the specified type.
icepanelmcp_icepanel_createadrCreate a new Architecture Decision Record (ADR) in the landscape.WriteCreateADR
Create a new Architecture Decision Record (ADR) in the landscape.
Inputs
namestringrequired- The title of the ADR.
contentstring- The full content or body of the ADR. Markdown is supported.
descriptionstring- A brief summary of the ADR.
icepanelmcp_icepanel_createconnectionCreate a new connection between two model objects.WriteCreateConnection
Create a new connection between two model objects.
Inputs
directionstringrequired- The direction of data or control flow for this connection. Common values: outgoing, incoming, bidirectional.
namestringrequired- The display name for the new connection. This name appears on diagrams and in the model.
originIdstringrequired- The unique ID of the origin model object (the source of the connection). Use listModelObjects to find valid IDs.
targetIdstringrequired- The unique ID of the target model object (the destination of the connection). Use listModelObjects to find valid IDs.
descriptionstring- A human-readable description of the connection explaining what data or control flows through it.
statusstring- Initial status for the new connection (e.g. active, deprecated). Leave blank for the default status.
tagIdsarray- An array of tag IDs to attach to the new connection. Use listTags to discover available tag IDs.
technologyIdsarray- An array of technology IDs to attach to the new connection. Use listTechnologies to discover available technology IDs.
viaIdstring- The unique ID of an intermediary model object through which this connection routes. For example, an API gateway that sits between the origin and target.
icepanelmcp_icepanel_createmodelobjectCreate a new model object in the landscape.WriteCreateModelObject
Create a new model object in the landscape. Types 'actor' and 'system' can be created at root level; 'app' and 'component' require a parentId pointing to a parent system.
Inputs
namestringrequired- The name of the model object to create.
typestringrequired- The type of model object to create.one of
actorappcomponentgroupstoresystem captionstring- A short caption or subtitle for the model object.
descriptionstring- A detailed description of the model object.
domainIdstring- The domain ID to place the model object in.
externalboolean- Whether this model object represents an external system.
groupIdsarray- Array of group IDs to assign to the model object.
parentIdstring- The ID of the parent model object to nest this object within.
statusstring- The initial status for the model object.
tagIdsarray- Array of tag IDs to attach to the model object.
teamIdsarray- Array of team IDs to assign ownership of the model object.
technologyIdsarray- Array of technology IDs to attach to the model object.
icepanelmcp_icepanel_updateadrUpdate an Architecture Decision Record (ADR).WriteUpdateADR
Update an Architecture Decision Record (ADR). Supports updating name, description, content, status, and related items.
Inputs
adrIdstringrequired- The unique identifier of the ADR to update.
contentstring- New content or body for the ADR. Markdown is supported.
descriptionstring- New brief summary for the ADR.
namestring- New title for the ADR.
relatedItemsarray- Related items to associate with the ADR.
statusstring- New status for the ADR. Valid values: accepted, draft, rejected.one of
accepteddraftrejected
icepanelmcp_icepanel_updateconnectionUpdate a connection in the landscape.WriteUpdateConnection
Update a connection in the landscape. Supports $add/$remove operations. Set status to 'removed' to delete.
Inputs
connectionIdstringrequired- The unique ID of the connection to update. Use listConnections or getConnectionDetails to find available connection IDs.
descriptionstring- New description for the connection. Replaces the existing description.
directionstring- New direction for the connection. Common values: outgoing, incoming, bidirectional.
labelsobject- Key-value metadata labels to set on the connection. Provide as a JSON object with string keys and string values.
namestring- New display name for the connection. Replaces the existing name.
originIdstring- New origin model object ID for the connection. Changes the source of the connection.
statusstring- New status for the connection. Set to 'removed' to effectively delete the connection from the landscape.
tagIdsarray- Tag IDs to set on the connection. Replaces any existing tags. Use listTags to discover available tag IDs.
targetIdstring- New target model object ID for the connection. Changes the destination of the connection.
technologyIdsarray- Technology IDs to set on the connection. Replaces any existing technologies. Use listTechnologies to discover available IDs.
icepanelmcp_icepanel_updatemodelobjectUpdate a model object in the landscape.WriteUpdateModelObject
Update a model object in the landscape. Supports $add/$remove operations. Set status to 'removed' to delete.
Inputs
modelObjectIdstringrequired- The unique identifier of the model object to update.
captionstring- New caption or subtitle for the model object.
descriptionstring- New detailed description for the model object.
externalboolean- Whether this model object represents an external system.
groupIdsarray- Group IDs to set on the model object. Replaces existing group assignments.
namestring- New name for the model object.
statusstring- New status for the model object. Set to 'removed' to soft-delete the object.
tagIdsarray- Tag IDs to set on the model object. Replaces existing tag assignments.
teamIdsarray- Team IDs to set for ownership of the model object.
technologyIdsarray- Technology IDs to set on the model object.
typestring- New type for the model object.one of
actorappcomponentgroupstoresystem
No tools match.
Workflows
Find a landscape and list its model objects
Most IcePanel tools require a landscapeId. Use icepanelmcp_icepanel_landscapesearch to find landscapes by name or description, then pass the returned id to subsequent tools.
// Step 1 — find the landscapeconst results = await actions.executeTool({ connector: 'icepanelmcp', identifier: 'user_123', toolName: 'icepanelmcp_icepanel_landscapesearch', toolInput: { query: 'production' },});const landscapeId = results.landscapes[0].id;
// Step 2 — list all model objects in the landscapeconst objects = await actions.executeTool({ connector: 'icepanelmcp', identifier: 'user_123', toolName: 'icepanelmcp_icepanel_listmodelobjects', toolInput: { landscapeId },});console.log(objects);# Step 1 — find the landscaperesults = actions.execute_tool( connection_name="icepanelmcp", identifier="user_123", tool_name="icepanelmcp_icepanel_landscapesearch", tool_input={"query": "production"},)landscape_id = results["landscapes"][0]["id"]
# Step 2 — list all model objects in the landscapeobjects = actions.execute_tool( connection_name="icepanelmcp", identifier="user_123", tool_name="icepanelmcp_icepanel_listmodelobjects", tool_input={"landscapeId": landscape_id},)print(objects)Create an architecture decision record
Use icepanelmcp_icepanel_createadr to log an ADR directly from your agent. Provide name and optionally description and content. The content field supports Markdown — use it to structure context, decision, and consequences sections.
const adr = await actions.executeTool({ connector: 'icepanelmcp', identifier: 'user_123', toolName: 'icepanelmcp_icepanel_createadr', toolInput: { name: 'Use event sourcing for order history', description: 'Decision to adopt event sourcing for the Orders bounded context', content: '## Context\nWe need a reliable audit trail for order state changes.\n\n## Decision\nAdopt event sourcing for the Orders bounded context.\n\n## Consequences\nIncreased storage; simpler replay and debugging.', },});console.log(adr.id);adr = actions.execute_tool( connection_name="icepanelmcp", identifier="user_123", tool_name="icepanelmcp_icepanel_createadr", tool_input={ "name": "Use event sourcing for order history", "description": "Decision to adopt event sourcing for the Orders bounded context", "content": "## Context\nWe need a reliable audit trail for order state changes.\n\n## Decision\nAdopt event sourcing for the Orders bounded context.\n\n## Consequences\nIncreased storage; simpler replay and debugging.", },)print(adr["id"])