Make editable flowcharts, process charts, funnels, timelines and data models from plain language.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your CalderFlow key (cfk_...). Sign in free at calderflow.com, then open the chart menu and choose Copy MCP URL.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a sequential/chevron chart: a linear sequence of steps, phases, or stages (e.g. onboarding steps, project phases). NOT for branching logic — use create_flowchart for that. Include a 1-2 sentence description per step to make it presentation-ready. Aim for 4-6 steps: Presentation is one slide of at most 6. For a longer process, follow up with edit_chart set_presentation_steps choosing the 4-6 most important step IDs.
Ordered list of steps. 3-7 is ideal.
Chart title shown in the app and share page.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http calderflow https://www.calderflow.com/mcp \ --header 'X-API-Key: YOUR_X_API_KEY'
Headers
X-API-Key (required): Your CalderFlow key (cfk_...). Sign in free at calderflow.com, then open the chart menu and choose Copy MCP URL.Create a sequential/chevron chart: a linear sequence of steps, phases, or stages (e.g. onboarding steps, project phases). NOT for branching logic — use create_flowchart for that. Include a 1-2 sentence description per step to make it presentation-ready. Aim for 4-6 steps: Presentation is one slide of at most 6. For a longer process, follow up with edit_chart set_presentation_steps choosing the 4-6 most important step IDs.
| Argument | Type | Description |
|---|---|---|
| steps* | array | Ordered list of steps. 3-7 is ideal. |
| title* | string | Chart title shown in the app and share page. |
{
"type": "object",
"required": [
"title",
"steps"
],
"properties": {
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"label"
],
"properties": {
"id": {
"type": "string",
"description": "Short unique ID (lowercase, underscores). Optional."
},
"key": {
"type": "boolean",
"description": "true on the single item the audience should remember (one per chart, 4+ items)."
},
"icon": {
"enum": [
"user",
"users",
"user-plus",
"user-check",
"log-in",
"log-out",
"lock",
"unlock",
"key",
"shield-check",
"fingerprint",
"mail",
"send",
"message-square",
"bell",
"phone",
"building-2",
"briefcase",
"landmark",
"store",
"credit-card",
"wallet",
"receipt",
"dollar-sign",
"shopping-cart",
"package",
"truck",
"gift",
"check-circle",
"x-circle",
"alert-triangle",
"info",
"help-circle",
"ban",
"clock",
"calendar",
"timer",
"hourglass",
"file-text",
"clipboard-check",
"file-signature",
"book-open",
"folder",
"database",
"server",
"cloud",
"code",
"git-branch",
"git-merge",
"terminal",
"cpu",
"bug",
"settings",
"sliders-horizontal",
"search",
"filter",
"eye",
"upload",
"download",
"refresh-cw",
"repeat",
"link",
"share-2",
"rocket",
"flag",
"target",
"trophy",
"star",
"thumbs-up",
"heart",
"sparkles",
"zap",
"bar-chart-3",
"trending-up",
"trending-down",
"pie-chart",
"activity",
"layout-dashboard",
"home",
"globe",
"map-pin",
"smartphone",
"monitor",
"list-checks",
"layers",
"inbox",
"archive",
"handshake",
"lightbulb",
"megaphone",
"graduation-cap"
],
"type": "string",
"description": "Icon shown beside this item in Polished Presentation."
},
"label": {
"type": "string",
"description": "Short step name (1-4 words). Supports markdown."
},
"description": {
"type": "string",
"description": "1-2 sentence description. Supports markdown. Put \\n before and after structured labels such as **Goal:**, **KPI:**, and *Success signals:* so each label occupies its own line."
}
}
},
"description": "Ordered list of steps. 3-7 is ideal."
},
"title": {
"type": "string",
"description": "Chart title shown in the app and share page."
}
}
}Create an entity-relationship diagram (database schema / data model) with typed fields, PK/FK markers, and crow's-foot relationships. Entity names UPPER_SNAKE_CASE, 3-8 focused fields each.
| Argument | Type | Description |
|---|---|---|
| title* | string | Chart title shown in the app and share page. |
| entities* | array | Entities (tables). 2-8 is ideal. |
| relationships | array | Relationships with cardinality. |
{
"type": "object",
"required": [
"title",
"entities"
],
"properties": {
"title": {
"type": "string",
"description": "Chart title shown in the app and share page."
},
"entities": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Entity name, e.g. 'CUSTOMER'. Letters/digits/underscores only."
},
"attributes": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"name"
],
"properties": {
"key": {
"type": "string",
"description": "'PK', 'FK', 'UK', or comma list. Omit for plain fields."
},
"name": {
"type": "string",
"description": "Field name, e.g. 'customer_id'."
},
"type": {
"type": "string",
"description": "e.g. 'string', 'int', 'date', 'decimal', 'bool'."
},
"comment": {
"type": "string",
"description": "Optional short note."
}
}
},
"description": "Typed fields, keys first."
}
}
},
"description": "Entities (tables). 2-8 is ideal."
},
"relationships": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to",
"cardinality"
],
"properties": {
"to": {
"type": "string",
"description": "Target entity name."
},
"from": {
"type": "string",
"description": "Source entity name."
},
"label": {
"type": "string",
"description": "Verb phrase, e.g. 'places', 'contains'."
},
"cardinality": {
"enum": [
"one-to-one",
"one-to-many",
"many-to-one",
"many-to-many"
],
"type": "string"
}
}
},
"description": "Relationships with cardinality."
}
}
}Create a presentation-ready flowchart or architecture diagram from Mermaid source. Use for branching processes, decision trees, and system architecture. Rules: start with 'flowchart TD' or 'flowchart LR'; solid arrows only (-->, optionally with |labels|); node shapes: A[Process] B{Decision} C([Start/End]). CalderFlow presents decisions as compact amber cards and terminals as green states, so use shapes semantically and do not add decorative classDef noise. CALIBRATE DETAIL: vague/ideation ask → 4-7 nodes, happy path + at most 2 essential decisions, NO subgraphs; detailed/spec-driven ask → subgraphs as phases, <=7 nodes per subgraph, <=18 nodes total (split the story into an overview plus detail chart beyond that). Consolidate checks that lead to the same outcome. If any subgraph is used, EVERY node—including starts, errors, and final outcomes—must be declared inside exactly one subgraph. Put internal edges inside their subgraph and cross-phase edges outside. Node labels 1-4 words; label every decision branch. Connect phases that hand off to each other. Returns the chart id + share URL. Give every node an icon with a %% nodeIcon <nodeId> <icon> line and mark the one step to remember with class <nodeId> keyStep (see the server instructions for icon names).
| Argument | Type | Description |
|---|---|---|
| title* | string | Chart title shown in the app and share page. |
| mermaid* | string | Mermaid flowchart source code. |
{
"type": "object",
"required": [
"title",
"mermaid"
],
"properties": {
"title": {
"type": "string",
"description": "Chart title shown in the app and share page."
},
"mermaid": {
"type": "string",
"description": "Mermaid flowchart source code."
}
}
}Create a funnel chart for filtering/narrowing processes where quantities reduce per stage (conversion funnels, pipelines). Include stage values when numbers are available; set conversionRates for proportional widths.
| Argument | Type | Description |
|---|---|---|
| title* | string | Chart title shown in the app and share page. |
| stages* | array | Ordered stages from widest (top) to narrowest (bottom). 3-6 is ideal. |
| conversionRates | array | Conversion percentages between adjacent stages (length = stages - 1), e.g. [75, 50, 30]. |
{
"type": "object",
"required": [
"title",
"stages"
],
"properties": {
"title": {
"type": "string",
"description": "Chart title shown in the app and share page."
},
"stages": {
"type": "array",
"items": {
"type": "object",
"required": [
"label"
],
"properties": {
"id": {
"type": "string",
"description": "Short unique ID. Optional."
},
"key": {
"type": "boolean",
"description": "true on the single item the audience should remember (one per chart, 4+ items)."
},
"icon": {
"enum": [
"user",
"users",
"user-plus",
"user-check",
"log-in",
"log-out",
"lock",
"unlock",
"key",
"shield-check",
"fingerprint",
"mail",
"send",
"message-square",
"bell",
"phone",
"building-2",
"briefcase",
"landmark",
"store",
"credit-card",
"wallet",
"receipt",
"dollar-sign",
"shopping-cart",
"package",
"truck",
"gift",
"check-circle",
"x-circle",
"alert-triangle",
"info",
"help-circle",
"ban",
"clock",
"calendar",
"timer",
"hourglass",
"file-text",
"clipboard-check",
"file-signature",
"book-open",
"folder",
"database",
"server",
"cloud",
"code",
"git-branch",
"git-merge",
"terminal",
"cpu",
"bug",
"settings",
"sliders-horizontal",
"search",
"filter",
"eye",
"upload",
"download",
"refresh-cw",
"repeat",
"link",
"share-2",
"rocket",
"flag",
"target",
"trophy",
"star",
"thumbs-up",
"heart",
"sparkles",
"zap",
"bar-chart-3",
"trending-up",
"trending-down",
"pie-chart",
"activity",
"layout-dashboard",
"home",
"globe",
"map-pin",
"smartphone",
"monitor",
"list-checks",
"layers",
"inbox",
"archive",
"handshake",
"lightbulb",
"megaphone",
"graduation-cap"
],
"type": "string",
"description": "Icon shown beside this item in Polished Presentation."
},
"label": {
"type": "string",
"description": "Stage name (1-4 words). Supports markdown."
},
"value": {
"type": "string",
"description": "Metric shown below the label, e.g. '1,000 leads', '25%'."
},
"description": {
"type": "string",
"description": "1-2 sentence description shown beside the stage."
}
}
},
"description": "Ordered stages from widest (top) to narrowest (bottom). 3-6 is ideal."
},
"conversionRates": {
"type": "array",
"items": {
"type": "number"
},
"description": "Conversion percentages between adjacent stages (length = stages - 1), e.g. [75, 50, 30]."
}
}
}Create a lifecycle chart: phases across the top and milestones plotted on a curve. Each milestone has a level 1-10 setting its height — bell curves, S-curves, dips all emerge from levels. Use for product lifecycles, customer journeys, adoption/maturity curves. Every milestone needs a phaseId.
| Argument | Type | Description |
|---|---|---|
| title* | string | Chart title shown in the app and share page. |
| phases* | array | 2-5 phases shown as headers. |
| timeLabel | string | X-axis label (e.g. 'Time'). |
| curveLabel | string | Y-axis label (e.g. 'Value', 'Adoption'). |
| milestones* | array | 4-8 milestones on the curve. |
{
"type": "object",
"required": [
"title",
"phases",
"milestones"
],
"properties": {
"title": {
"type": "string",
"description": "Chart title shown in the app and share page."
},
"phases": {
"type": "array",
"items": {
"type": "object",
"required": [
"label"
],
"properties": {
"id": {
"type": "string",
"description": "Short unique ID."
},
"label": {
"type": "string",
"description": "Phase name (1-3 words)."
}
}
},
"description": "2-5 phases shown as headers."
},
"timeLabel": {
"type": "string",
"description": "X-axis label (e.g. 'Time')."
},
"curveLabel": {
"type": "string",
"description": "Y-axis label (e.g. 'Value', 'Adoption')."
},
"milestones": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"level",
"phaseId"
],
"properties": {
"id": {
"type": "string",
"description": "Short unique ID."
},
"key": {
"type": "boolean",
"description": "true on the single item the audience should remember (one per chart, 4+ items)."
},
"icon": {
"enum": [
"user",
"users",
"user-plus",
"user-check",
"log-in",
"log-out",
"lock",
"unlock",
"key",
"shield-check",
"fingerprint",
"mail",
"send",
"message-square",
"bell",
"phone",
"building-2",
"briefcase",
"landmark",
"store",
"credit-card",
"wallet",
"receipt",
"dollar-sign",
"shopping-cart",
"package",
"truck",
"gift",
"check-circle",
"x-circle",
"alert-triangle",
"info",
"help-circle",
"ban",
"clock",
"calendar",
"timer",
"hourglass",
"file-text",
"clipboard-check",
"file-signature",
"book-open",
"folder",
"database",
"server",
"cloud",
"code",
"git-branch",
"git-merge",
"terminal",
"cpu",
"bug",
"settings",
"sliders-horizontal",
"search",
"filter",
"eye",
"upload",
"download",
"refresh-cw",
"repeat",
"link",
"share-2",
"rocket",
"flag",
"target",
"trophy",
"star",
"thumbs-up",
"heart",
"sparkles",
"zap",
"bar-chart-3",
"trending-up",
"trending-down",
"pie-chart",
"activity",
"layout-dashboard",
"home",
"globe",
"map-pin",
"smartphone",
"monitor",
"list-checks",
"layers",
"inbox",
"archive",
"handshake",
"lightbulb",
"megaphone",
"graduation-cap"
],
"type": "string",
"description": "Icon shown beside this item in Polished Presentation."
},
"label": {
"type": "string",
"description": "Milestone name (1-4 words)."
},
"level": {
"type": "number",
"description": "1 (low) to 10 (high) — curve height at this point. Unless the user gives values, span most of the range and step at least 2 levels between neighbours so the shape is visible."
},
"phaseId": {
"type": "string",
"description": "ID of the phase this milestone belongs to."
},
"description": {
"type": "string",
"description": "Optional brief description (5-10 words)."
}
}
},
"description": "4-8 milestones on the curve."
}
}
}Create a timeline of events in chronological order (roadmaps, company history, sprint/release schedules). Every event needs a marker: supplied dates, relative time for a proposed plan, or Phase 1, Phase 2, etc. for an undated process. Never invent factual dates or measured durations. Include concise descriptions; group related events into eras.
| Argument | Type | Description |
|---|---|---|
| eras | array | Optional named periods grouping events (background bands). |
| title* | string | Chart title shown in the app and share page. |
| events* | array | Chronological events. 4-10 is ideal. |
| direction | string | Layout direction; horizontal is default. |
{
"type": "object",
"required": [
"title",
"events"
],
"properties": {
"eras": {
"type": "array",
"items": {
"type": "object",
"required": [
"label"
],
"properties": {
"id": {
"type": "string",
"description": "Short unique ID."
},
"label": {
"type": "string",
"description": "Era name (1-3 words)."
}
}
},
"description": "Optional named periods grouping events (background bands)."
},
"title": {
"type": "string",
"description": "Chart title shown in the app and share page."
},
"events": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"date"
],
"properties": {
"id": {
"type": "string",
"description": "Short unique ID. Optional."
},
"key": {
"type": "boolean",
"description": "true on the single item the audience should remember (one per chart, 4+ items)."
},
"date": {
"type": "string",
"minLength": 1,
"description": "Required timeline marker including units: 'Jan 15, 2027', 'Week 1', 'Second 5', or 'Phase 1'. Shared units are auto-extracted. Preserve supplied dates; disclose proposed relative timing as estimated; use ordinal phases for undated processes or TBD for unknown dates in an otherwise dated chart. Never fabricate factual dates/durations."
},
"icon": {
"enum": [
"user",
"users",
"user-plus",
"user-check",
"log-in",
"log-out",
"lock",
"unlock",
"key",
"shield-check",
"fingerprint",
"mail",
"send",
"message-square",
"bell",
"phone",
"building-2",
"briefcase",
"landmark",
"store",
"credit-card",
"wallet",
"receipt",
"dollar-sign",
"shopping-cart",
"package",
"truck",
"gift",
"check-circle",
"x-circle",
"alert-triangle",
"info",
"help-circle",
"ban",
"clock",
"calendar",
"timer",
"hourglass",
"file-text",
"clipboard-check",
"file-signature",
"book-open",
"folder",
"database",
"server",
"cloud",
"code",
"git-branch",
"git-merge",
"terminal",
"cpu",
"bug",
"settings",
"sliders-horizontal",
"search",
"filter",
"eye",
"upload",
"download",
"refresh-cw",
"repeat",
"link",
"share-2",
"rocket",
"flag",
"target",
"trophy",
"star",
"thumbs-up",
"heart",
"sparkles",
"zap",
"bar-chart-3",
"trending-up",
"trending-down",
"pie-chart",
"activity",
"layout-dashboard",
"home",
"globe",
"map-pin",
"smartphone",
"monitor",
"list-checks",
"layers",
"inbox",
"archive",
"handshake",
"lightbulb",
"megaphone",
"graduation-cap"
],
"type": "string",
"description": "Icon shown beside this item in Polished Presentation."
},
"eraId": {
"type": "string",
"description": "Optional era this event belongs to."
},
"label": {
"type": "string",
"description": "Event name (1-5 words)."
},
"description": {
"type": "string",
"description": "Brief 1-sentence description."
}
}
},
"description": "Chronological events. 4-10 is ideal."
},
"direction": {
"enum": [
"horizontal",
"vertical"
],
"type": "string",
"description": "Layout direction; horizontal is default."
}
}
}Permanently delete a chart you own.
| Argument | Type | Description |
|---|---|---|
| chart_id* | string |
{
"type": "object",
"required": [
"chart_id"
],
"properties": {
"chart_id": {
"type": "string"
}
}
}Edit an existing chart. Call get_chart first to see its current spec, then pass tool_calls (surgical edits) and/or mermaid (full source replacement, flowchart/ERD only). A create_* tool call replaces the chart's data wholesale and can switch its type. Valid tool names — flowchart: style_chart, update_node, delete_node, add_node, connect_nodes, delete_edge, organize_sections, add_section, update_section, delete_section, move_node_to_section, set_node_icon ({nodeId, icon} or icon "none" to remove), set_key_step ({nodeId} or "none"); process/funnel/timeline/lifecycle: set_item_icon ({itemId, icon} or icon "none") and set_key_item ({itemId} or "none"), plus icon on add_* calls; any type: set_slide_text ({headline, takeaway}) for the Designed presentation slide and set_walkthrough ({steps:[{id, caption}]}) for the Walkthrough (a flowchart with 2+ sections walks one step per section, using subgraph IDs; otherwise use node or item IDs); chevron: create_chevron_chart, add_step, update_step, delete_step, reorder_steps, set_presentation_steps, style_chevron_chart; funnel: create_funnel_chart, add_funnel_stage, update_funnel_stage, delete_funnel_stage, reorder_funnel_stages, style_funnel_chart; lifecycle: create_lifecycle_chart, add_lifecycle_milestone, update_lifecycle_milestone, delete_lifecycle_milestone, update_lifecycle_phase, style_lifecycle_chart; timeline: create_timeline_chart, add_timeline_event, update_timeline_event, delete_timeline_event, reorder_timeline_events, style_timeline_chart; erd: create_erd_chart, add_erd_entity, update_erd_entity, delete_erd_entity, add_erd_attribute, update_erd_attribute, delete_erd_attribute, add_erd_relationship, update_erd_relationship, delete_erd_relationship, set_erd_direction, style_erd_chart (set_erd_direction takes {direction: "vertical"|"horizontal"}). For chevron Presentation-only selection/order edits, use set_presentation_steps with {stepIds:[up to 6 existing IDs in featured order]} (or null to reset to all); never reorder_steps, delete_step, or rename Full steps to change a Presentation summary. Use organize_sections with {sections:[{sectionId,title,nodeIds}], ungroupedNodeIds?} for a complete multi-section regroup; omitted nodes are placed with their closest connected section. Input shapes otherwise match the get_chart spec data (e.g. add_node takes {nodeId, label, shape?, connectFrom?, connectTo?}; style_chart takes {target: '<nodeId>'|'all', bgColor?, textColor?, borderColor?}).
| Argument | Type |
|---|
Fetch a chart's current spec (JSON) and editable source text, plus its share URL.
| Argument | Type | Description |
|---|---|---|
| chart_id* | string |
{
"type": "object",
"required": [
"chart_id"
],
"properties": {
"chart_id": {
"type": "string"
}
}
}List your CalderFlow charts (id, title, type, share URL), newest first.
No arguments.
{
"type": "object",
"properties": {}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 15, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
| Description |
|---|
| title | string | New title (optional). |
| mermaid | string | Full replacement mermaid source (flowchart/ERD charts only). |
| chart_id* | string | Chart id from create_* / list_charts. |
| tool_calls | array | Ordered edit operations: [{tool, input}]. |
{
"type": "object",
"required": [
"chart_id"
],
"properties": {
"title": {
"type": "string",
"description": "New title (optional)."
},
"mermaid": {
"type": "string",
"description": "Full replacement mermaid source (flowchart/ERD charts only)."
},
"chart_id": {
"type": "string",
"description": "Chart id from create_* / list_charts."
},
"tool_calls": {
"type": "array",
"items": {
"type": "object",
"required": [
"tool",
"input"
],
"properties": {
"tool": {
"type": "string"
},
"input": {
"type": "object"
}
}
},
"description": "Ordered edit operations: [{tool, input}]."
}
}
}