Koskamo

Cloud World Model MCP

Cloud World Model is a simulation platform that allows AI agents and infrastructure teams to estimate cost, latency, errors, and resilience before deploying or changing cloud infrastructure. It supports multi-cloud analysis across AWS, GCP, Azure, OCI, and DigitalOcean, providing modeled evidence for pre-deployment decisions without provisioning real resources.

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.

Cloud World Model MCP logo, by Canvas Cloud AIVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Canvas Cloud AI
You need:Omit an API key for the capped demo, or send your CWM API key in the x-api-key header for authenticated accessStart with 1,000 free credits. Paid credit packs are available when you need more
MCP endpoint (Streamable HTTP)
https://www.cloudworldmodel.ai/mcp
Vendor documentation

What its tools do

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

9 of 9 have a description · 9 of 9 declare behavior hints · 2 of 9 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 cloudworldmodel.ai ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Simulate infrastructure changes to estimate cost and latency before deployment
  • Compare multi-cloud costs across AWS, GCP, Azure, OCI, and DigitalOcean
  • Run failure experiments to estimate resilience and error rates
  • Provide pre-deployment decision support for AI agents and platform teams

Source and maintenance

Vendor evidenceRegistry 1.1.1

Protocol and capabilities

Server
cloud-world-model 1.1.1
MCP protocol negotiated in check
2025-11-25
Tools
9 advertised
Resources
9 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

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

Cloud World Model Streamable HTTP MCP server. build_revision=7bcf41fb767a build_timestamp=2026-11-06T21:59:11.874Z simulation_create_schema_fingerprint=sha256:6e50f85c5f2a44d0e40f3cbbd9e11f91017429da0cea6aba2beb15a5bd94361e anonymous_mcp_capability_version=proxy-safe-v1

Tools

9 advertised

simulation.inject_failure — Inject Failure
Advertised by the server during the last successful anonymous check.
Advertised destructive

Requires simulationId and resourceId from simulation.create. Injects a bounded resource failure; returns updated state. Next tool is simulation.step, then simulation.recover_resource and simulation.metrics to confirm authoritative health. No API key required; demo limits apply. Read resource cwm://guides/public/simulation.inject_failure

simulation.inject_failure input schema
{
  "type": "object",
  "properties": {
    "type": {
      "enum": [
        "cdn_cache_loss",
        "az_outage"
      ],
      "type": "string",
      "description": "Only cdn_cache_loss or az_outage, with an explicit CDN-capable network resourceId or resourceName; no random/node-pool selectors. Cache loss forwards misses; az_outage blocks the edge. Omit type and duration for legacy quick failures."
    },
    "duration": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 1,
      "description": "Only with explicit type cdn_cache_loss or az_outage and CDN-capable network resourceId or resourceName. Integer 1–86400 simulation steps, not seconds; default 30. No random/node-pool selectors; omit for legacy quick failures."
    },
    "nodePoolId": {
      "type": "string",
      "minLength": 1
    },
    "resourceId": {
      "type": "string"
    },
    "nodePoolName": {
      "type": "string",
      "minLength": 1
    },
    "resourceName": {
      "type": "string"
    },
    "simulationId": {
      "type": "string",
      "description": "ID returned by simulation.create."
    }
  },
  "additionalProperties": false
}
simulation.inject_failure annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
simulation.recover_resource — Recover Failed Resource
Advertised by the server during the last successful anonymous check.

Requires simulationId and resourceId from simulation.create. Requests reversible resource recovery; success does not prove healthy. Next tool is simulation.step, then simulation.metrics to inspect resource health. No API key required; demo limits apply. Read resource cwm://guides/public/simulation.recover_resource

simulation.recover_resource input schema
{
  "type": "object",
  "properties": {
    "resourceId": {
      "type": "string"
    },
    "resourceName": {
      "type": "string"
    },
    "simulationId": {
      "type": "string",
      "description": "ID returned by simulation.create."
    }
  },
  "additionalProperties": false
}
simulation.recover_resource annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
simulation.delete — Delete Simulation
Advertised by the server during the last successful anonymous check.
Advertised destructive

The likely next tool is simulation.create to use the freed slot. Prerequisite: a simulationId from simulation.create, or an active simulation in the preserved MCP session. No API key required; demo limits apply. Read resource cwm://guides/public/simulation.delete

simulation.delete input schema
{
  "type": "object",
  "properties": {
    "simulationId": {
      "type": "string",
      "description": "ID returned by simulation.create."
    }
  },
  "additionalProperties": false
}
simulation.delete annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
scenario.list — List Scenarios
Advertised by the server during the last successful anonymous check.
Advertised read-only

No prerequisites. Returns scenarios cards with id/name/summary. Filters precede stable ID paging: limit default 8, maximum 20; pass nextCursor as cursor until null. detailed=true restores rich cards per page. Next tool is scenario.get, then simulation.create with scenarioId. No API key required; demo limits apply. Read resource cwm://guides/public/scenario.list

scenario.list input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 8,
      "maximum": 20,
      "minimum": 1
    },
    "cursor": {
      "type": "string",
      "maxLength": 256
    },
    "category": {
      "type": "string",
      "minLength": 1
    },
    "detailed": {
      "type": "boolean",
      "default": false
    },
    "provider": {
      "enum": [
        "aws",
        "gcp",
        "azure",
        "oci",
        "digitalocean"
      ],
      "type": "string"
    },
    "difficulty": {
      "enum": [
        "beginner",
        "intermediate",
        "advanced"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
scenario.list annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
scenario.get — Get Scenario
Advertised by the server during the last successful anonymous check.
Advertised read-only

Requires scenarioId from scenario.list. Returns the complete selected graph, presets, assumptions and phase details. Next tool is simulation.create with scenarioId or the hydrated resources/connections. No API key required; demo limits apply. Read resource cwm://guides/public/scenario.get

scenario.get input schema
{
  "type": "object",
  "required": [
    "scenarioId"
  ],
  "properties": {
    "scenarioId": {
      "type": "string",
      "minLength": 1,
      "description": "Scenario ID from scenario.list."
    }
  },
  "additionalProperties": false
}
scenario.get annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
simulation.create — Create Simulation
Advertised by the server during the last successful anonymous check.

Create from scenarioId (scenario.list → scenario.get), or resources/connections for a custom graph. Returns id for simulation.step. Never blindly retry a timeout: creation may have succeeded. No API key required; demo limits apply. Read resource cwm://guides/public/simulation.create

simulation.create input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 120
    },
    "seed": {
      "type": "integer",
      "minimum": 0
    },
    "traffic": {
      "type": "number"
    },
    "appWeight": {
      "enum": [
        "lean",
        "typical",
        "heavy"
      ],
      "type": "string"
    },
    "resources": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "type",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "enum": [
              "compute",
              "database",
              "storage",
              "network",
              "cache",
              "queue",
              "kubernetes"
            ],
            "type": "string"
          }
        },
        "additionalProperties": true
      }
    },
    "scenarioId": {
      "type": "string",
      "minLength": 1,
      "description": "Scenario ID from scenario.list."
    },
    "connections": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "sourceId",
          "targetId"
        ],
        "properties": {
          "sourceId": {
            "type": "string"
          },
          "targetId": {
            "type": "string"
          }
        },
        "additionalProperties": true
      }
    },
    "description": {
      "type": "string",
      "maxLength": 500
    },
    "maxInstances": {
      "type": "integer",
      "minimum": 1
    },
    "minInstances": {
      "type": "integer",
      "minimum": 1
    },
    "responseMode": {
      "enum": [
        "compact",
        "full"
      ],
      "type": "string",
      "default": "compact"
    },
    "resilienceConfig": {
      "type": "object",
      "additionalProperties": true
    },
    "autoscalingConfig": {
      "type": "object",
      "additionalProperties": true
    },
    "scenarioOverrides": {},
    "scaleOutCpuPercent": {
      "type": "number",
      "maximum": 100,
      "minimum": 0
    },
    "autoscalingTargetCpu": {
      "type": "number",
      "maximum": 100,
      "minimum": 0
    },
    "ecsCpuTargetTracking": {
      "type": "boolean",
      "description": "Opt into CPU-only ECS Fargate target tracking; requires an AWS Fargate compute resource. Required for scaleOutCooldownSeconds, scaleInCooldownSeconds and top-level simulationSecondsPerStep; other providers keep their existing policy."
    },
    "scaleOutCpuThreshold": {
      "type": "number",
      "maximum": 100,
      "minimum": 0
    },
    "scaleInCooldownSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0,
      "description": "ECS scale-in cooldown in simulated seconds; requires ecsCpuTargetTracking: true with an AWS Fargate compute resource. Defaults to cooldownSeconds."
    },
    "scaleOutCooldownSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0,
      "description": "ECS scale-out cooldown in simulated seconds; requires ecsCpuTargetTracking: true with an AWS Fargate compute resource. Defaults to cooldownSeconds."
    },
    "simulationSecondsPerStep": {
      "type": "number",
      "maximum": 60,
      "description": "Requires ecsCpuTargetTracking: true with an AWS Fargate compute resource. Converts ECS cooldown seconds into step counts only (default 1); not a global simulation clock."
    },
    "autoscaleTargetCpuPercent": {
      "type": "number",
      "maximum": 100,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
simulation.create annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
simulation.step — Simulate Step
Advertised by the server during the last successful anonymous check.

Requires simulationId from simulation.create (optional for the current demo simulation). Advances simulation; inspect completedSteps/currentStep, not HTTP success. Next tool is simulation.metrics. Preserve operationId and original inputs on retries. No API key required; demo limits apply. Read resource cwm://guides/public/simulation.step

simulation.step input schema
{
  "type": "object",
  "properties": {
    "steps": {
      "type": "integer",
      "maximum": 500,
      "minimum": 1
    },
    "traffic": {
      "type": "number",
      "minimum": 0
    },
    "operationId": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "description": "Optional retry ID: omit for a new ID; reuse with identical inputs replays the saved result, while changed inputs, expired results or another run return 409."
    },
    "responseMode": {
      "enum": [
        "compact",
        "full"
      ],
      "type": "string",
      "default": "compact"
    },
    "simulationId": {
      "type": "string",
      "description": "ID returned by simulation.create."
    },
    "expectedCheckpoint": {
      "type": "object",
      "description": "Optional guard for new steps: omit to skip; a mismatched generation, currentStep or supplied metricId rejects the step with 409 without advancing.",
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}
simulation.step annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
simulation.metrics — Get Simulation Metrics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Requires simulationId from simulation.create (optional for current demo). Returns latest metrics or requested history; responseMode full retains evidence. Read authoritative resource health after recovery. No new identifiers. No API key required; demo limits apply. Read resource cwm://guides/public/simulation.metrics

simulation.metrics input schema
{
  "type": "object",
  "properties": {
    "responseMode": {
      "enum": [
        "compact",
        "full"
      ],
      "type": "string",
      "default": "compact"
    },
    "simulationId": {
      "type": "string",
      "description": "ID returned by simulation.create."
    }
  },
  "additionalProperties": false
}
simulation.metrics annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
simulation.inject_traffic — Inject Traffic
Advertised by the server during the last successful anonymous check.

Requires simulationId from simulation.create and target traffic RPS. Returns applied traffic settings. Next tool is simulation.step, then simulation.metrics to read observed latency; do not assume its direction. No API key required; demo limits apply. Read resource cwm://guides/public/simulation.inject_traffic

simulation.inject_traffic input schema
{
  "type": "object",
  "properties": {
    "ramp": {
      "type": "object",
      "additionalProperties": true
    },
    "random": {
      "type": "boolean",
      "const": true
    },
    "targetRps": {
      "type": "integer",
      "minimum": 1
    },
    "deltaPercent": {
      "type": "number"
    },
    "simulationId": {
      "type": "string",
      "description": "ID returned by simulation.create."
    }
  },
  "additionalProperties": false
}
simulation.inject_traffic annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

9 advertised

public-simulation.inject_failure-guide — simulation.inject_failure: complete input contract and workflow guidance

Advertised by the server during the last successful anonymous check.

public-simulation.inject_failure-guide URI
cwm://guides/public/simulation.inject_failure

MIME type: application/json

public-simulation.recover_resource-guide — simulation.recover_resource: complete input contract and workflow guidance

Advertised by the server during the last successful anonymous check.

public-simulation.recover_resource-guide URI
cwm://guides/public/simulation.recover_resource

MIME type: application/json

public-simulation.delete-guide — simulation.delete: complete input contract and workflow guidance

Advertised by the server during the last successful anonymous check.

public-simulation.delete-guide URI
cwm://guides/public/simulation.delete

MIME type: application/json

public-scenario.list-guide — scenario.list: complete input contract and workflow guidance

Advertised by the server during the last successful anonymous check.

public-scenario.list-guide URI
cwm://guides/public/scenario.list

MIME type: application/json

public-scenario.get-guide — scenario.get: complete input contract and workflow guidance

Advertised by the server during the last successful anonymous check.

public-scenario.get-guide URI
cwm://guides/public/scenario.get

MIME type: application/json

public-simulation.create-guide — simulation.create: complete input contract and workflow guidance

Advertised by the server during the last successful anonymous check.

public-simulation.create-guide URI
cwm://guides/public/simulation.create

MIME type: application/json

public-simulation.step-guide — simulation.step: complete input contract and workflow guidance

Advertised by the server during the last successful anonymous check.

public-simulation.step-guide URI
cwm://guides/public/simulation.step

MIME type: application/json

public-simulation.metrics-guide — simulation.metrics: complete input contract and workflow guidance

Advertised by the server during the last successful anonymous check.

public-simulation.metrics-guide URI
cwm://guides/public/simulation.metrics

MIME type: application/json

public-simulation.inject_traffic-guide — simulation.inject_traffic: complete input contract and workflow guidance

Advertised by the server during the last successful anonymous check.

public-simulation.inject_traffic-guide URI
cwm://guides/public/simulation.inject_traffic

MIME type: application/json

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 (2 of 2 answered).

  1. 2026-11-07: 1 of 1 checks answered
  2. 2026-11-09: 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
623 ms
95th percentile latency
623 ms

Maintenance history

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

  • · probe · passed · 623 ms · metadata changed · 9 tool(s), 9 resource(s), 0 resource template(s)

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 cloud-world-model-mcp https://www.cloudworldmodel.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 cloud-world-model-mcp --url https://www.cloudworldmodel.ai/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start cloud-world-model-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "cloud-world-model-mcp": {
      "type": "http",
      "url": "https://www.cloudworldmodel.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 cloud-world-model-mcp https://www.cloudworldmodel.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://www.cloudworldmodel.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": {
    "cloud-world-model-mcp": {
      "serverUrl": "https://www.cloudworldmodel.ai/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Cloud World Model 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 Cloud World Model 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