strudel-webmcp.vercel.app
A live Strudel REPL with WebMCP. Live-code together.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 3 · Act 10 · Transact 0 · Score: Not yet scored
Tool inspector
strudel_apply_edits
Atomically replace one or more non-overlapping ranges of the visible Strudel editor. Requires expectedCodeHash from a previous read; if the human typed or moved an inline slider since, the call fails with STALE_CODE and nothing changes. In live mode the edit lands immediately (add evaluate:true to also update the music). In review mode, or with propose:true, it becomes a proposal with a diff that the human auditions, accepts or discards; you get {proposed:true, proposalId} and may audition it with strudel_evaluate({proposalId}). Prefer this over strudel_replace_code for ordinary edits.
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
expectedCodeHash |
string | yes | The codeHash returned by the most recent strudel_get_code or strudel_get_context call. Rejected with STALE_CODE if the human changed the source since. |
edits |
array | yes | Non-overlapping replacements, all expressed against the document as it was when read. |
summary |
string | no | One-line summary of the change, shown to the human when it becomes a proposal. |
propose |
boolean | no | Ask the human to review this change even in live mode (creates a proposal instead of editing). |
evaluate |
boolean | no | Also evaluate the document right after applying (live mode only; same as calling strudel_evaluate). |
Raw JSON schema
{
"type": "object",
"properties": {
"expectedCodeHash": {
"type": "string",
"description": "The codeHash returned by the most recent strudel_get_code or strudel_get_context call. Rejected with STALE_CODE if the human changed the source since."
},
"edits": {
"type": "array",
"minItems": 1,
"description": "Non-overlapping replacements, all expressed against the document as it was when read.",
"items": {
"type": "object",
"properties": {
"range": {
"type": "object",
"description": "Zero-based line/column range in the visible editor. end is exclusive.",
"properties": {
"start": {
"type": "object",
"properties": {
"line": {
"type": "integer",
"minimum": 0,
"description": "Zero-based line number."
},
"column": {
"type": "integer",
"minimum": 0,
"description": "Zero-based column (UTF-16 code units)."
}
},
"required": [
"line",
"column"
],
"additionalProperties": false
},
"end": {
"type": "object",
"properties": {
"line": {
"type": "integer",
"minimum": 0,
"description": "Zero-based line number."
},
"column": {
"type": "integer",
"minimum": 0,
"description": "Zero-based column (UTF-16 code units)."
}
},
"required": [
"line",
"column"
],
"additionalProperties": false
}
},
"required": [
"start",
"end"
],
"additionalProperties": false
},
"text": {
"type": "string",
"description": "Replacement text (empty string deletes the range)."
}
},
"required": [
"range",
"text"
],
"additionalProperties": false
}
},
"summary": {
"type": "string",
"maxLength": 140,
"description": "One-line summary of the change, shown to the human when it becomes a proposal."
},
"propose": {
"type": "boolean",
"description": "Ask the human to review this change even in live mode (creates a proposal instead of editing)."
},
"evaluate": {
"type": "boolean",
"description": "Also evaluate the document right after applying (live mode only; same as calling strudel_evaluate)."
}
},
"required": [
"expectedCodeHash",
"edits"
],
"additionalProperties": false
}
Similar websites
wfsim.app
A Warframe calculator that simulates the fight instead of estimating it — builder, simulator, optimizer. Every formula cites its source, and the golden tests ar…
commonplace-webmcp.vercel.app
Commonplace is an editable social reading space built for people and their browser agents.
pixelforge-studio.appcaster.chatgpt.site
A professional browser pixel-art editor for drawing, frame animation, palettes, sprite sheets, GIF export, and WebMCP automation.
pixelite.taskcraft.site
Pixelite