Flowgraf
Server Details
Create and edit architecture diagrams from your AI agent; get an SVG and a live editable canvas.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 3 of 3 tools scored.
Each tool has a clearly distinct purpose: create for new diagrams, get for retrieving existing ones, and edit for modifying them. No ambiguity or overlap.
All tool names follow the 'verb_diagram' pattern consistently: create_diagram, edit_diagram, get_diagram, making it easy to predict and remember.
Three tools is slightly thin but appropriate for the focused domain of diagram creation and editing. Each tool encapsulates rich functionality.
The set lacks a tool for listing or deleting diagrams, which would be expected for a complete CRUD surface. Core create/read/update is covered, but missing delete and list are significant gaps.
Available Tools
3 toolscreate_diagramCreate architecture diagramAInspect
Create a NEW architecture diagram from a graph that YOU author, and get back a shareable, editable canvas URL plus a rendered SVG and Mermaid.
You produce only the SEMANTICS — nodes, the groups (VPC/cluster/...) they live in, and the directed edges between them. You do NOT lay anything out: never send x/y/position/pinned. A deterministic layout engine computes all geometry and an icon layer picks the pictures from each node's kind.
kind.catalog is one of aws | gcp | azure | k8s | saas | generic, each with rich per-catalog kind.types (e.g. aws:lambda, gcp:bigquery, azure:cosmos_db, k8s:deployment, saas:kafka):
"aws" (api_gateway, lambda, s3, rds, dynamodb, sqs, bedrock, kinesis, fargate, eventbridge, aurora, ...).
"gcp" (compute_engine, gke, cloud_run, cloud_sql, spanner, firestore, bigquery, pubsub, dataflow, vertex_ai, ...).
"azure" (virtual_machine, aks, app_service, functions, blob_storage, sql_database, cosmos_db, service_bus, event_hubs, key_vault, ...).
"k8s" (pod, deployment, statefulset, daemonset, job, cronjob, service, ingress, configmap, secret, hpa, ...).
"saas" for hosted third-parties (redis, postgresql, mysql, mongodb, kafka, stripe, twilio, auth0, github, cloudflare, ...).
"generic" primitive when nothing branded fits: service, database, cache, queue, user, external_system, storage, gateway, function, note.
"generic" FLOWCHART kinds for processes/flowcharts: process, decision, terminator, data, document, subprocess. edge.kind is one of: request, response, async_event, data_flow, dependency, network, generic.
WORKED EXAMPLE — a user hitting an API in a VPC that talks to Postgres: { "title": "Web API", "domain": "cloud_architecture", "graph": { "groups": [{ "id": "g_vpc", "label": "VPC", "type": "vpc" }], "nodes": [ { "id": "n_user", "label": "User", "kind": { "catalog": "generic", "type": "user" } }, { "id": "n_api", "label": "API", "kind": { "catalog": "aws", "type": "api_gateway" }, "parentId": "g_vpc" }, { "id": "n_db", "label": "Postgres", "kind": { "catalog": "aws", "type": "rds" }, "parentId": "g_vpc" } ], "edges": [ { "id": "e1", "source": "n_user", "target": "n_api", "kind": "request" }, { "id": "e2", "source": "n_api", "target": "n_db", "kind": "data_flow" } ] } }
Returns { diagramId, url, svg, mermaid, version }. Give the user the url — opening it shows the same diagram on an editable canvas (anonymous; it's theirs to claim by signing in). To change the diagram afterwards, use get_diagram then edit_diagram.
| Name | Required | Description | Default |
|---|---|---|---|
| graph | Yes | ||
| title | Yes | A short title for the diagram. | |
| domain | No | Optional domain hint (default: generic). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the engine computes layout, the diagram is anonymous until signed in, and it return an editable canvas. However, it does not mention rate limits or authentication requirements, though these are not critical for creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headers, bullet points, and a worked example, but it is verbose. Every sentence adds value, but some could be more concise. The front-loading of purpose is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (nested objects, many enums, no output schema), the description is thorough. It explains the graph structure, catalogs/types, edge kinds, return values, and provides a full example. No gaps are evident for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description greatly enriches the input schema by listing all supported catalogs and types for nodes, edge kinds, and group types. It provides a worked example and explains the structure of the graph object, compensating for the schema's 67% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool creates a new architecture diagram from a user-authored graph, and returns a shareable URL, SVG, and Mermaid. It distinguishes from sibling tools edit_diagram and get_diagram by noting that for changes, one should use those tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool (creating new diagrams), what to provide (semantics only, no layout), and directs users to sibling tools for editing or retrieving diagrams. It also includes a worked example and detailed instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_diagramEdit architecture diagramAInspect
Apply a list of operations to an EXISTING diagram. The ops re-use this tool's op vocabulary; you author them, we validate + apply + re-layout + re-render.
ALWAYS call get_diagram(diagramId) first: it returns the current ids and the version. Pass that version as baseVersion. If the diagram changed since you fetched it, you get a STALE_VERSION error telling you the current version — refetch with get_diagram, recompute your ops, and retry.
The operations (each element of ops):
add_node { op, node:{ id, label, kind, parentId? } }
remove_node { op, id } (also drops edges touching the node)
update_node { op, id, patch:{ label?, kind?, parentId?, metadata? } }
add_edge { op, edge:{ id, source, target, kind, label?, directed? } }
remove_edge { op, id }
update_edge { op, id, patch:{ source?, target?, label?, kind?, directed? } }
add_group { op, group:{ id, label, type, parentId? } }
remove_group{ op, id }
move_to_group { op, nodeId, groupId } (groupId null un-nests the node)
set_layout { op, patch:{ direction?, spacing? } }
insert_between { op, newNode:{ id, label, kind, parentId? }, sourceId, targetId, inKind?, outKind? }
insert_between IS THE KEY OP for "add X between A and B" requests. It splices newNode onto the existing A→B edge: removes that edge, adds the node, and wires A→newNode→B so the connection re-routes through it automatically.
WORKED EXAMPLE — "add a Redis cache between the API and the DB" on the diagram above:
get_diagram(diagramId) → shows nodes n_api, n_db and version 1.
edit_diagram({ diagramId, baseVersion: 1, ops: [ { "op": "insert_between", "sourceId": "n_api", "targetId": "n_db", "newNode": { "id": "n_redis", "label": "Redis", "kind": { "catalog": "saas", "type": "redis" }, "parentId": "g_vpc" }, "inKind": "request", "outKind": "data_flow" } ] }) The API→DB edge is gone and now flows API→Redis→DB. Never send x/y/position — geometry is computed for you.
Node kinds: catalog ∈ {aws, gcp, azure, k8s, saas, generic} with rich per-catalog types (e.g. aws:lambda, gcp:bigquery, azure:cosmos_db, k8s:deployment, saas:kafka), plus generic flowchart kinds (process, decision, terminator, data, document, subprocess).
Returns { url, svg, mermaid, appliedOps, version }.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | ||
| diagramId | Yes | The diagram to edit (from create_diagram or get_diagram). | |
| baseVersion | Yes | The version you are editing against — get it from get_diagram. Stale → STALE_VERSION. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses re-layout/re-render, version conflict handling (STALE_VERSION), and that geometry is computed. No annotations provided, so description bears full burden. Lacks explicit mutation warning or permissions, but adequately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with summary, guidelines, operation list, example, and output description. Slightly verbose but every sentence contributes. Could tighten, but complexity justifies length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main behaviors, error handling (STALE_VERSION), and return values. No output schema, so description explains url, svg, etc. Missing edge case errors for invalid ops, but overall complete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds heavy value beyond schema: details each operation type, provides worked example, explains insert_between key op, mentions node kinds, and warns not to send x/y/position. Compensates for low schema coverage (67%) on ops array items.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool applies a list of operations to an EXISTING diagram, using a specific verb and resource. It distinguishes from siblings (create_diagram, get_diagram) by focusing on modification of existing diagrams.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call get_diagram first and explains versioning. Provides a worked example. Could explicitly state not to use for creation, but context and sibling names make it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_diagramGet architecture diagramAInspect
Fetch a diagram's raw IR (nodes, groups, edges with their real ids) and its current version. Call this before edit_diagram so your ops reference ids that actually exist and you pass the correct baseVersion. Returns { diagram, version }.
| Name | Required | Description | Default |
|---|---|---|---|
| diagramId | Yes | The diagram to fetch. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return format { diagram, version } and mentions raw IR with real ids. With no annotations, the description carries the burden; it implies read-only but could explicitly state 'read-only operation'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. First sentence states purpose and return, second gives usage guidance. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter, the description fully covers purpose, return, and usage context. No output schema needed as the return shape is described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one parameter described). The description adds no extra semantics beyond the schema's 'The diagram to fetch.' Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches a diagram's raw IR and version. It uses specific verbs and resources, and distinguishes from siblings (create_diagram, edit_diagram) by being a read-only precursor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call this before edit_diagram' and explains why (real ids, baseVersion). No other usage guidance needed; this is precise and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityDmaintenanceVisual architecture canvas that updates in real-time. Agents can build, read, and modify system design diagrams — services, databases, queues, APIs, entities — all linked to actual code paths in your repo.Last updated734MIT
- Alicense-qualityCmaintenanceEnables AI agents to build, edit, organize, and export Excalidraw diagrams (architecture, flowcharts, etc.) entirely headless, producing .excalidraw files, SVG, and PNG renders.Last updated3,975MIT
- Alicense-qualityDmaintenanceEnables AI agents to programmatically control a live Excalidraw canvas with element-level CRUD operations and real-time synchronization. It supports iterative diagramming through scene descriptions, screenshots, and advanced layout tools for collaborative AI-human workflows.Last updated2,001MIT

Rayzia MCPofficial
Alicense-qualityCmaintenanceEnables AI agents to drive a live SVG/vector editor, allowing a full observe-and-act loop on a canvas with real tools, state reading, and PNG rendering.Last updatedMIT