Koskamo

Zovo Swimlane MCP

Converts business process steps into cross-functional flowcharts with lanes for roles or teams. Supports geometry and process checks, and exports to PDF, SVG, and CSV formats.

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.

Zovo Swimlane MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-08Published by Zovo
MCP endpoint (Streamable HTTP)
https://swimlane.zovo.one/mcp
Vendor documentation

What its tools do

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

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

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Turn process steps into cross-functional flowcharts
  • Check processes for unreachable steps or missing branches
  • Draw hiring processes as vertical swimlane PDFs
  • Export flowcharts to PDF, SVG, or CSV

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
swimlane 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
2 advertised
Resources
1 advertised
Resource templates
1 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.

Zovo Swimlane draws a cross-functional (swimlane) flowchart from lanes, steps and links, with PDF, SVG and CSV downloads. Use make_swimlane to draw it and check_swimlane to review the process without drawing (unknown lanes or step ids, steps not reachable from a start, decisions with fewer than 2 labeled branches, steps with no path to an end, loops). Each step sits in the lane of its owner; the flow runs left to right or top down. Files of large diagrams are kept for 1 hour so the download links work, then deleted.

Tools

2 advertised

make_swimlane — Make swimlane diagram
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a swimlane diagram, cross-functional flowchart or process map with roles, teams or systems as lanes, for example "draw our order process as a swimlane" or "make a swimlane PDF of who does what". Takes lanes in order, steps (id, lane, text, kind: step, decision, start or end) and links (from, to, label; branches that leave a decision need labels), plus orientation (horizontal: lanes as rows, flow left to right; vertical: lanes as columns, flow top down), page size and title. Returns counts, each step's lane and flow position, unreachable steps, steps with no path to an end, loops, a geometry check (steps outside their lane, overlapping steps and labels, lines crossing a step), an interactive diagram, and PDF, SVG and CSV downloads. Refuses, with the reason: unknown lanes or step ids, duplicate lanes, ids or links, a link from a step to itself, a missing start or end step, an end step with outgoing links, decisions with fewer than 2 outgoing links or with unlabeled or repeated branch labels. When one step with its branch labels is wider than the page at 6 pt, it returns the SVG and CSV without a PDF and says why. Up to 12 lanes, 150 steps, 300 links. Does not draw plain flowcharts without lanes, BPMN message flows, org charts or sequence diagrams. Download links of large diagrams expire after about 1 hour.

make_swimlane input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "lanes",
    "steps"
  ],
  "properties": {
    "lanes": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 400
      },
      "maxItems": 60,
      "description": "Lane names in display order, 2 to 12, each up to 40 characters, e.g. [\"Customer\", \"Sales\", \"Warehouse\"]. A lane is usually a role, team or system."
    },
    "links": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "from",
          "to"
        ],
        "properties": {
          "to": {
            "type": "string",
            "maxLength": 400,
            "description": "Id of the step the arrow points to, e.g. \"s3\"."
          },
          "from": {
            "type": "string",
            "maxLength": 400,
            "description": "Id of the step the arrow starts at, e.g. \"s2\"."
          },
          "label": {
            "type": "string",
            "maxLength": 400,
            "description": "Label up to 40 characters, e.g. \"yes\". Required on links that leave a decision."
          }
        }
      },
      "maxItems": 2000,
      "description": "Arrows between step ids, up to 300, e.g. [{\"from\":\"s1\",\"to\":\"s2\"},{\"from\":\"s2\",\"to\":\"s3\",\"label\":\"yes\"}]."
    },
    "steps": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "lane"
        ],
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 400,
            "description": "Short unique id used in links, up to 32 characters, e.g. \"s1\"."
          },
          "kind": {
            "type": "string",
            "maxLength": 40,
            "description": "step (default), decision, start or end, e.g. decision. A decision needs 2 or more labeled outgoing links."
          },
          "lane": {
            "type": "string",
            "maxLength": 400,
            "description": "Name of the lane (one of lanes) that owns the step, e.g. \"Sales\"."
          },
          "text": {
            "type": "string",
            "maxLength": 1000,
            "description": "Text in the box, up to 120 characters, e.g. \"Check credit limit\". Defaults to the id."
          }
        }
      },
      "maxItems": 1000,
      "description": "Steps, 1 to 150, e.g. [{\"id\":\"s1\",\"lane\":\"Customer\",\"text\":\"Place order\",\"kind\":\"start\"},{\"id\":\"s2\",\"lane\":\"Sales\",\"text\":\"Credit OK?\",\"kind\":\"decision\"}]."
    },
    "title": {
      "type": "string",
      "maxLength": 400,
      "description": "Title on the diagram and in file names, up to 80 characters, e.g. \"Order to cash\"."
    },
    "page_size": {
      "enum": [
        "letter",
        "a4",
        "tabloid"
      ],
      "type": "string",
      "description": "PDF page: letter (default), a4 or tabloid (11 x 17 in). Landscape unless portrait needs fewer pages."
    },
    "orientation": {
      "enum": [
        "horizontal",
        "vertical"
      ],
      "type": "string",
      "description": "horizontal (default): lanes are rows and the flow runs left to right. vertical: lanes are columns and the flow runs top down."
    }
  }
}
make_swimlane output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "title",
    "orientation",
    "counts",
    "flow_positions",
    "lanes",
    "steps",
    "unreachable",
    "no_path_to_end",
    "loops",
    "issues",
    "layout_check",
    "pdf",
    "warnings",
    "downloads"
  ],
  "properties": {
    "pdf": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "lanes": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "loops": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "shown": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "steps": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "title": {
      "type": "string"
    },
    "counts": {
      "type": "object",
      "required": [
        "lanes",
        "steps",
        "links",
        "decisions",
        "start_steps",
        "end_steps",
        "loops",
        "errors",
        "warnings"
      ],
      "properties": {
        "lanes": {
          "type": "number"
        },
        "links": {
          "type": "number"
        },
        "loops": {
          "type": "number"
        },
        "steps": {
          "type": "number"
        },
        "errors": {
          "type": "number"
        },
        "warnings": {
          "type": "number"
        },
        "decisions": {
          "type": "number"
        },
        "end_steps": {
          "type": "number"
        },
        "start_steps": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "downloads": {
      "type": "object",
      "properties": {
        "csv": {
          "type": "string"
        },
        "pdf": {
          "type": "string"
        },
        "svg": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "orientation": {
      "type": "string"
    },
    "unreachable": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "layout_check": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "flow_positions": {
      "type": "number"
    },
    "no_path_to_end": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
make_swimlane annotations
{
  "title": "Make swimlane diagram",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_swimlane — Check swimlane process
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a process with lanes checked without a drawing, for example "check my process for steps that do not reach the end" or "which steps are unreachable". Takes the same lanes, steps and links as make_swimlane. Returns unknown lanes and step ids, duplicate ids, steps not reachable from a start step, steps with no path to an end step, decisions with fewer than 2 outgoing links or unlabeled branches, end steps with outgoing links, and loops (allowed, listed). Draws nothing and makes no files. Up to 12 lanes, 150 steps, 300 links. Does not rewrite or fix the process; do not use it for plain flowcharts without lanes.

check_swimlane input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "lanes",
    "steps"
  ],
  "properties": {
    "lanes": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 400
      },
      "maxItems": 60,
      "description": "Lane names in display order, 2 to 12, each up to 40 characters, e.g. [\"Customer\", \"Sales\", \"Warehouse\"]. A lane is usually a role, team or system."
    },
    "links": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "from",
          "to"
        ],
        "properties": {
          "to": {
            "type": "string",
            "maxLength": 400,
            "description": "Id of the step the arrow points to, e.g. \"s3\"."
          },
          "from": {
            "type": "string",
            "maxLength": 400,
            "description": "Id of the step the arrow starts at, e.g. \"s2\"."
          },
          "label": {
            "type": "string",
            "maxLength": 400,
            "description": "Label up to 40 characters, e.g. \"yes\". Required on links that leave a decision."
          }
        }
      },
      "maxItems": 2000,
      "description": "Arrows between step ids, up to 300, e.g. [{\"from\":\"s1\",\"to\":\"s2\"},{\"from\":\"s2\",\"to\":\"s3\",\"label\":\"yes\"}]."
    },
    "steps": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "lane"
        ],
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 400,
            "description": "Short unique id used in links, up to 32 characters, e.g. \"s1\"."
          },
          "kind": {
            "type": "string",
            "maxLength": 40,
            "description": "step (default), decision, start or end, e.g. decision. A decision needs 2 or more labeled outgoing links."
          },
          "lane": {
            "type": "string",
            "maxLength": 400,
            "description": "Name of the lane (one of lanes) that owns the step, e.g. \"Sales\"."
          },
          "text": {
            "type": "string",
            "maxLength": 1000,
            "description": "Text in the box, up to 120 characters, e.g. \"Check credit limit\". Defaults to the id."
          }
        }
      },
      "maxItems": 1000,
      "description": "Steps, 1 to 150, e.g. [{\"id\":\"s1\",\"lane\":\"Customer\",\"text\":\"Place order\",\"kind\":\"start\"},{\"id\":\"s2\",\"lane\":\"Sales\",\"text\":\"Credit OK?\",\"kind\":\"decision\"}]."
    }
  }
}
check_swimlane output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ready",
    "counts",
    "start_steps",
    "end_steps",
    "unreachable",
    "no_path_to_end",
    "loops",
    "decisions",
    "issues",
    "notes",
    "limits"
  ],
  "properties": {
    "loops": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "ready": {
      "type": "boolean"
    },
    "shown": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "counts": {
      "type": "object",
      "required": [
        "lanes",
        "steps",
        "links",
        "decisions",
        "start_steps",
        "end_steps",
        "loops",
        "errors",
        "warnings"
      ],
      "properties": {
        "lanes": {
          "type": "number"
        },
        "links": {
          "type": "number"
        },
        "loops": {
          "type": "number"
        },
        "steps": {
          "type": "number"
        },
        "errors": {
          "type": "number"
        },
        "warnings": {
          "type": "number"
        },
        "decisions": {
          "type": "number"
        },
        "end_steps": {
          "type": "number"
        },
        "start_steps": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "limits": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "decisions": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "end_steps": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "start_steps": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "unreachable": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "no_path_to_end": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
check_swimlane annotations
{
  "title": "Check swimlane process",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

swimlane-widget — Zovo Swimlane view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Swimlane.

swimlane-widget URI
ui://widget/swimlane-v1-1.0.0-9dcfc8303d8339c251b3208d68db19519689047326bd593a8fa251ea17dd82f7.html

MIME type: text/html;profile=mcp-app

swimlane-widget-legacy — Zovo Swimlane view (previous versions)

Advertised by the server during the last successful anonymous check.

swimlane-widget-legacy URI template
ui://widget/swimlane-{version}.html

MIME type: text/html;profile=mcp-app

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
1663 ms
95th percentile latency
1663 ms

Maintenance history

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

  • · probe · passed · 1663 ms · metadata changed · 2 tool(s), 1 resource(s), 1 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 zovo-swimlane-mcp https://swimlane.zovo.one/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 zovo-swimlane-mcp --url https://swimlane.zovo.one/mcp

Cursor

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

Cline

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

VS Code

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

Let your agent find its tools

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