{
  "data": {
    "a": {
      "slug": "diagrams-so",
      "name": "Diagrams.so API + MCP",
      "vendor": "Diagrams.so (RedHold LLC)",
      "vendorUrl": "https://diagrams.so",
      "kind": "http-api",
      "category": "diagramming",
      "summary": "Turns a plain-English description into an editable draw.io diagram with cloud icons (AWS, Azure, GCP, OCI, Kubernetes).",
      "url": "https://www.anchorterminal.com/tools/diagrams-so",
      "markdownUrl": "https://www.anchorterminal.com/tools/diagrams-so.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/diagrams-so.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/diagrams-so.json",
      "repo": "https://github.com/RedHold/diagrams-sdk",
      "license": "Apache-2.0",
      "transports": [
        "http",
        "stdio"
      ],
      "remoteUrl": "https://api.diagrams.so/api/v2",
      "packages": [
        {
          "registry": "npm",
          "name": "@diagrams-so/mcp"
        },
        {
          "registry": "npm",
          "name": "@diagrams-so/sdk"
        },
        {
          "registry": "pypi",
          "name": "diagrams-so"
        }
      ],
      "auth": "mixed",
      "authNotes": "API keys (dgz_live_ and dgz_test_) as a Bearer header, revocable at once, with a cap of 25 active keys. Test keys spend real credits. The MCP server and SDKs can instead log in through a device flow (npx @diagrams-so/mcp@latest login), where the one-time code is emailed (set DIAGRAMS_LOGIN_EMAIL for the in-chat path) and the credential is cached at ~/.diagrams-so/credentials.json. DIAGRAMS_API_KEY works for CI.",
      "pricing": "freemium",
      "pricingNotes": "Free $0 with 10 one-time credits, no card, public diagrams and watermarked exports. Pro $15 a month or $10 a month billed yearly (75 credits a month), Power $25 a month or $16.67 billed yearly (250 credits). Credit packs $5 per 25. API, MCP and SDKs are on every plan and use the same credits as the app. Reads, exports and prompt helpers are free. Per-action credit costs are shown in the app; the SDK changelog gives 0.5 to 3.0 credits for generate, edit, fix and re-layout. A bring-your-own LLM key skips plan credits. 14-day money-back guarantee on the first paid subscription (https://diagrams.so/pricing).",
      "priceSummary": "$15 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402 support in docs or pricing (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": 23,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": 172,
        "pypiWeekly": 3,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://diagrams.so/developers",
      "llmsTxt": "https://diagrams.so/llms.txt",
      "openapi": "https://api.diagrams.so/api/v2/openapi.json",
      "registryName": "io.github.RedHold/diagrams-so-mcp",
      "capabilities": [
        "diagram.create",
        "diagram.edit",
        "diagram.export",
        "diagram.architecture"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "mcp",
        "llms-txt",
        "openapi",
        "python",
        "typescript"
      ],
      "lastRelease": "2026-08-19",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 60,
        "grade": "C",
        "agentReady": false,
        "rank": 481,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 6,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 85,
          "maintenance": 71,
          "payments": 32,
          "reliability": 30,
          "schema": 85,
          "security": 67,
          "transparency": 74
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": -2,
        "negativeNotes": [
          "Early August 2026. The API moved its device login to an emailed code without notice, which broke the MCP server's in-chat connect path and sent one rejected request per tool call until v1.4.6 fixed it on 19 August. Fixed and documented in the server's changelog, so the deduction is reduced (https://github.com/RedHold/diagrams-mcp-app-core/blob/main/CHANGELOG.md)."
        ],
        "verdict": "API, MCP and SDKs on every plan, including a Free plan marked \"No Card Required\". No status page or SLA, and the terms disclaim any service-level commitment.",
        "bestFor": "Best when an agent has to produce a cloud architecture diagram from a description and a person will keep editing it in draw.io.",
        "strengths": [
          "API, MCP and SDKs on every plan, including a Free plan marked \"No Card Required\"",
          "OpenAPI 3.1 with 32 operations, and an Idempotency-Key on every billable call",
          "All 23 MCP tools carry readOnlyHint or destructiveHint annotations",
          "Editable draw.io XML output with Well-Architected warnings and a fix tool",
          "Terms promise 90 days' notice before a major API version is retired"
        ],
        "weaknesses": [
          "No status page or SLA, and the terms disclaim any service-level commitment",
          "Rate limits exist per key and per IP but no numbers are published",
          "Per-action credit costs are shown only in the app",
          "Domain registered in February 2026, and no commits to either repo since 19 August 2026",
          "Login is a device flow a person must approve by email, so there's no autonomous signup"
        ],
        "agentNotes": [
          "Send an Idempotency-Key on generate, edit, fix and re-layout. If a billable call times out, check `get_usage_history` before retrying",
          "Generation is synchronous and can run for minutes. The SDKs default to a 450 s timeout, or use `POST /diagrams/stream`",
          "Call `list_capabilities` first. `cloud_provider` and `diagram_type` are free strings, and a wrong value fails the call",
          "`relayout_diagram` refuses to run without `confirm=true`, because every re-layout is billed",
          "Test keys (dgz_test_) spend the same credits as live keys"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 60
          }
        ],
        "editorialScores": {
          "ergonomics": 85,
          "maintenance": 71,
          "payments": 32,
          "reliability": 30,
          "schema": 85,
          "security": 67,
          "transparency": 75
        },
        "provenanceScore": 73
      },
      "connect": {
        "http": "curl https://api.diagrams.so/api/v2/diagrams -H \"Authorization: Bearer $DIAGRAMS_API_KEY\" \\\n  -H \"Content-Type: application/json\" -d '{\"prompt\":\"A 3-tier web app on AWS with an ALB, EC2 Auto Scaling and RDS Postgres\",\"cloud_provider\":\"aws\"}'",
        "claudeCode": "claude mcp add diagrams-so -- npx -y @diagrams-so/mcp@latest",
        "config": {
          "mcpServers": {
            "diagrams-so": {
              "args": [
                "-y",
                "@diagrams-so/mcp@latest"
              ],
              "command": "npx",
              "env": {
                "DIAGRAMS_API_KEY": "${DIAGRAMS_API_KEY}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/diagram.create",
        "tool": "https://letme.dev/diagrams-so"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 15,
          "note": "75 credits a month. $10 a month billed yearly"
        },
        {
          "item": "Power plan",
          "unit": "month",
          "usd": 25,
          "note": "250 credits a month. $16.67 a month billed yearly"
        },
        {
          "item": "Credit pack",
          "unit": "credit",
          "usd": 0.2,
          "note": "$5 per 25 credits, pack credits don't expire"
        }
      ],
      "provenance": {
        "legalEntity": "RedHold LLC",
        "domain": "diagrams.so",
        "domainRegistered": "2026-02-05",
        "endpointOnVendorDomain": true,
        "terms": "https://diagrams.so/policy/terms",
        "privacy": "https://diagrams.so/policy/privacy",
        "statusPage": "",
        "changelog": "https://diagrams.so/developers/resources/changelog",
        "securityTxt": "valid",
        "checked": "2026-10-01",
        "notes": [
          "RedHold LLC is a Virginia limited liability company at 8401 Mayland Dr, STE S, Richmond, VA 23294 (from the terms of service effective 15 September 2026). We couldn't load a state registry record to confirm it independently",
          "The status and SLA page says a status page will be linked once it is live",
          "security.txt not rechecked on 2026-10-01; valid per the 30 September check"
        ],
        "score": 73
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/diagrams-so.json",
      "live": {
        "slug": "diagrams-so",
        "probe": {
          "target": "https://api.diagrams.so/api/v2",
          "method": "get",
          "lastAt": "2026-10-09T11:46:27.018348777Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 330,
          "authRequired": false,
          "uptime24h": 97.3,
          "uptime30d": 96.84,
          "p50ms24h": 344,
          "p95ms24h": 396,
          "samples24h": 259,
          "samples30d": 2311,
          "days": [
            {
              "date": "2026-09-30",
              "probes": 35,
              "ok": 33
            },
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 268
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 240
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 264
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 264
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 263
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 263
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 265
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 255
            },
            {
              "date": "2026-10-09",
              "probes": 125,
              "ok": 123
            }
          ],
          "outages": [
            {
              "start": "2026-10-08T06:25:49.394598064Z",
              "end": "2026-10-08T06:41:57.050004221Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-07T10:53:46.415214405Z",
              "end": "2026-10-07T11:09:10.176665383Z",
              "note": "timed out"
            }
          ]
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.github.RedHold/diagrams-so-mcp",
            "version": "1.4.6",
            "seenAt": "2026-10-09T02:57:46.004536428Z"
          },
          {
            "registry": "npm",
            "name": "@diagrams-so/mcp",
            "version": "1.4.6",
            "seenAt": "2026-10-08T16:08:41.790728174Z"
          },
          {
            "registry": "npm",
            "name": "@diagrams-so/sdk",
            "version": "1.3.0",
            "seenAt": "2026-10-08T16:08:45.115114503Z"
          },
          {
            "registry": "pypi",
            "name": "diagrams-so",
            "version": "1.3.0",
            "released": "2026-08-05",
            "seenAt": "2026-10-08T16:08:45.33510009Z"
          }
        ],
        "githubStars": 0,
        "npmWeekly": 100,
        "pypiWeekly": 6,
        "securityTxt": {
          "url": "https://diagrams.so/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-08-01T00:00:00Z",
          "checkedAt": "2026-10-08T15:38:56.690355824Z"
        },
        "llmsTxt": {
          "url": "https://diagrams.so/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-08T14:00:19.918118279Z"
        },
        "domain": {
          "domain": "diagrams.so",
          "checkedAt": "2026-10-04T13:04:27.501679981Z"
        },
        "pages": [
          {
            "url": "https://diagrams.so/developers/resources/changelog",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-08T18:18:05.36356793Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "496d4c3074ab"
          },
          {
            "url": "https://diagrams.so/policy/terms",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-10-08T18:18:09.551667728Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "862f66aa7b0b"
          },
          {
            "url": "https://diagrams.so/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-08T18:18:11.465105928Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ae91841e9c40"
          },
          {
            "url": "https://diagrams.so/policy/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:18:07.468512348Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6fa8d4562829"
          }
        ],
        "updatedAt": "2026-10-09T11:46:27.018348777Z"
      }
    },
    "answer": "PlantUML scores 66.9 (B) on agent readiness against Diagrams.so API + MCP's 60 (C), and leads in 3 of 7 scored categories. Diagrams.so API + MCP leads on schema \u0026 documentation, agent ergonomics and security \u0026 auth.",
    "b": {
      "slug": "plantuml",
      "name": "PlantUML",
      "vendor": "PlantUML project (Arnaud Roques)",
      "vendorUrl": "https://plantuml.com",
      "kind": "sdk",
      "category": "diagramming",
      "summary": "PlantUML is open-source software that turns text descriptions into UML, architecture, Gantt, mind map and other diagrams. Agents run it as a Java command-line tool, a Java library, a local HTTP server or the `@plantuml/mcp-js` MCP server.",
      "url": "https://www.anchorterminal.com/tools/plantuml",
      "markdownUrl": "https://www.anchorterminal.com/tools/plantuml.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/plantuml.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/plantuml.json",
      "repo": "https://github.com/plantuml/plantuml",
      "license": "GPL-3.0-or-later",
      "transports": [],
      "packages": [
        {
          "registry": "maven",
          "name": "net.sourceforge.plantuml:plantuml"
        },
        {
          "registry": "npm",
          "name": "@plantuml/mcp-js"
        },
        {
          "registry": "oci",
          "name": "plantuml/plantuml"
        }
      ],
      "auth": "none",
      "authNotes": "No account, key or login. The jar, the Java library and the MCP server run on the owner's machine with the owner's file and network rights. The built-in `-picoweb` HTTP server has no authentication and listens on all interfaces unless a bind address is given.",
      "pricing": "free",
      "pricingNotes": "Free under GPL-3.0-or-later, with the same source also under GPL-2.0, LGPL, Apache-2.0, BSD-3-Clause, EPL and MIT. Nothing to buy. The project takes donations through GitHub Sponsors and Patreon.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or the source (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 13356,
        "npmWeekly": 207,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://plantuml.com/command-line",
      "capabilities": [
        "diagram.as-code",
        "diagram.create",
        "diagram.export",
        "diagram.architecture"
      ],
      "tags": [
        "open-source",
        "local",
        "cli",
        "java",
        "mcp",
        "diagram-as-code",
        "uml",
        "no-auth",
        "free",
        "docker"
      ],
      "lastRelease": "2026-09-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.9,
        "grade": "B",
        "agentReady": false,
        "rank": 251,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 78,
          "maintenance": 73,
          "payments": 60,
          "reliability": 83,
          "schema": 65,
          "security": 50,
          "transparency": 73
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -2,
        "negativeNotes": [
          "27 February 2026. Release 1.2026.2 switched off chronology diagrams, and its change log calls the removal temporary. On 8 October 2026 the factory is still commented out in `PSystemBuilder.java`, while the README lists the chronology diagram as supported and https://plantuml.com/chronology-diagram documents it. Two points, because the removal is in the change log (https://github.com/plantuml/plantuml/blob/master/CHANGES.md)."
        ],
        "verdict": "One Java command reads diagram text from stdin and writes PNG, SVG, PDF or ASCII with no account, and CI passed on the last eight pushes. The default security profile lets diagram text read any local file and fetch any URL, and the documentation still lists chronology diagrams that release 1.2026.2 switched off.",
        "bestFor": "Agents that write sequence, class, state, component, deployment, Gantt or C4 diagrams as text and render them locally or in CI.",
        "strengths": [
          "`java -jar plantuml.jar -pipe` reads a diagram from stdin and writes PNG, SVG, PDF, EPS, LaTeX or ASCII to stdout, with no account or key",
          "`--check-syntax` and `-stdrpt` report errors as `file:line:error` lines, and exit codes 0, 50, 100 and 200 are documented",
          "The official `@plantuml/mcp-js` server has four tools, needs only Node.js, and returns the same SVG bytes for the same source on any machine",
          "Version 1.2026.8 of 5 September 2026 is on GitHub, Maven Central, Homebrew and Docker Hub, and the `ci` workflow passed on the last eight pushes",
          "The same source is available under GPL-3.0-or-later, GPL-2.0, LGPL, Apache-2.0, BSD-3-Clause, EPL and MIT, and generated images carry no licence obligation"
        ],
        "weaknesses": [
          "The default security profile is LEGACY, which gives diagram text full access to local files and URLs through `!include`. The docs say it will be removed, with no date",
          "`-picoweb` listens on all network interfaces by default and has no authentication",
          "Chronology diagrams were switched off in 1.2026.2 on 27 February 2026 and are still listed in the README and documented on plantuml.com",
          "The command-line page gives the HTTP server's default port as 4242 in one help listing and 8080 in another. The source uses 8080",
          "No llms.txt, no security.txt and no published advisories. The security policy is one email address, and 575 issues are open"
        ],
        "agentNotes": [
          "Set `PLANTUML_SECURITY_PROFILE` to `SANDBOX` or `ALLOWLIST` before rendering text from an untrusted source. The default profile lets `!include` read local files and fetch URLs",
          "Run `java -jar plantuml.jar --check-syntax` with `-stdrpt` first and read the exit status. Without `--no-error-image` a syntax error still writes an image of the error text",
          "Pass `-pipe` with `--svg`, `--txt` or `--utxt` to work without files. `--txt` output suits a text-only model",
          "Start the local server as `-picoweb:8080:127.0.0.1`. Without the bind address it listens on every interface",
          "Use `npx -y @plantuml/mcp-js` when no Java runtime is present. It renders SVG only, so use the jar for PNG or PDF"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66.9
          }
        ],
        "editorialScores": {
          "ergonomics": 78,
          "maintenance": 73,
          "payments": 60,
          "reliability": 83,
          "schema": 65,
          "security": 50,
          "transparency": 73
        },
        "provenanceScore": 73
      },
      "connect": {
        "install": "brew install plantuml   # or download plantuml.jar from https://github.com/plantuml/plantuml/releases, or docker run ghcr.io/plantuml/plantuml",
        "config": {
          "mcpServers": {
            "plantuml-js": {
              "args": [
                "-y",
                "@plantuml/mcp-js"
              ],
              "command": "npx"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/diagram.as-code",
        "tool": "https://letme.dev/plantuml"
      },
      "area": "design-diagrams",
      "provenance": {
        "legalEntity": "No legal entity found. Copyright Arnaud Roques",
        "domain": "plantuml.com",
        "domainRegistered": "2010-11-28",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/plantuml/plantuml/blob/master/CHANGES.md",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "`LICENSES.md` reads Copyright (C) 2009-2026, Arnaud Roques. No company or foundation is named in the repository or on the pages read",
          "No terms or privacy document governs the software. The GPL-3.0-or-later licence, or one of the six alternatives, stands in",
          "https://plantuml.com/.well-known/security.txt answered 404 on 8 October 2026. `docs/SECURITY.md` asks for reports by email to a Gmail address",
          "The lead named PlantUML as vendor. It is a community project led by one author, with no company behind it that we found"
        ],
        "score": 73
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/plantuml.json"
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "SDK + MCP",
        "name": "Kind"
      },
      {
        "a": "Diagrams.so (RedHold LLC)",
        "b": "PlantUML project (Arnaud Roques)",
        "name": "Vendor"
      },
      {
        "a": "https://api.diagrams.so/api/v2",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, stdio",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "None",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "GPL-3.0-or-later",
        "name": "Licence"
      },
      {
        "a": "23",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "io.github.RedHold/diagrams-so-mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-08-19",
        "b": "2026-09-05",
        "name": "Last release"
      },
      {
        "a": "2026-09-15",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-15",
        "b": "no document linked",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "0 stars, 172 npm/wk, 3 PyPI/wk",
        "b": "13k stars, 207 npm/wk",
        "name": "Popularity"
      },
      {
        "a": "4/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "PlantUML scores 66.9 (B) on agent readiness against Diagrams.so API + MCP's 60 (C), and leads in 3 of 7 scored categories. Diagrams.so API + MCP leads on schema \u0026 documentation, agent ergonomics and security \u0026 auth.",
        "question": "Which is better for AI agents, Diagrams.so API + MCP or PlantUML?"
      },
      {
        "answer": "Diagrams.so API + MCP has a hosted endpoint at https://api.diagrams.so/api/v2. No hosted endpoint is listed for PlantUML.",
        "question": "Can an agent call Diagrams.so API + MCP and PlantUML without installing anything?"
      },
      {
        "answer": "No open-source release is listed for Diagrams.so API + MCP. PlantUML is open source (GPL-3.0-or-later).",
        "question": "Are Diagrams.so API + MCP and PlantUML open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 85 against 65",
          "Agent ergonomics, 85 against 78",
          "Security \u0026 auth, 67 against 50"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "Runs on your own machine"
        ],
        "goodFor": "Best when an agent has to produce a cloud architecture diagram from a description and a person will keep editing it in draw.io.",
        "slug": "diagrams-so",
        "watchFor": "No status page or SLA, and the terms disclaim any service-level commitment"
      },
      {
        "aheadOn": [
          "Reliability, 83 against 30",
          "Payments \u0026 pricing, 60 against 32"
        ],
        "also": [
          "No key needed to call it",
          "Open source"
        ],
        "goodFor": "Agents that write sequence, class, state, component, deployment, Gantt or C4 diagrams as text and render them locally or in CI.",
        "slug": "plantuml",
        "watchFor": "The default security profile is LEGACY, which gives diagram text full access to local files and URLs through `!include`. The docs say it will be removed, with no date"
      }
    ],
    "job": {
      "capability": "diagram.create",
      "name": "Diagram create"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/cloudviz-vs-diagrams-so.json",
        "title": "Cloudviz API vs Diagrams.so API + MCP",
        "url": "https://www.anchorterminal.com/compare/cloudviz-vs-diagrams-so"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudviz-vs-plantuml.json",
        "title": "Cloudviz API vs PlantUML",
        "url": "https://www.anchorterminal.com/compare/cloudviz-vs-plantuml"
      },
      {
        "json": "https://www.anchorterminal.com/compare/d2-vs-diagrams-so.json",
        "title": "D2 vs Diagrams.so API + MCP",
        "url": "https://www.anchorterminal.com/compare/d2-vs-diagrams-so"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diagrams-so-vs-drawio.json",
        "title": "Diagrams.so API + MCP vs draw.io + MCP",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-drawio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diagrams-so-vs-eraser.json",
        "title": "Diagrams.so API + MCP vs Eraser API + MCP",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-eraser"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diagrams-so-vs-lucid.json",
        "title": "Diagrams.so API + MCP vs Lucid API + MCP",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-lucid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diagrams-so-vs-mermaid-chart.json",
        "title": "Diagrams.so API + MCP vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-mermaid-chart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diagrams-so-vs-mural-mcp.json",
        "title": "Diagrams.so API + MCP vs Mural MCP",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-mural-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diagrams-so-vs-structurizr.json",
        "title": "Diagrams.so API + MCP vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-structurizr"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diagrams-so-vs-tldraw.json",
        "title": "Diagrams.so API + MCP vs tldraw SDK + MCP",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-tldraw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diagrams-so-vs-whimsical.json",
        "title": "Diagrams.so API + MCP vs Whimsical MCP",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-whimsical"
      },
      {
        "json": "https://www.anchorterminal.com/compare/drawio-vs-plantuml.json",
        "title": "draw.io + MCP vs PlantUML",
        "url": "https://www.anchorterminal.com/compare/drawio-vs-plantuml"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eraser-vs-plantuml.json",
        "title": "Eraser API + MCP vs PlantUML",
        "url": "https://www.anchorterminal.com/compare/eraser-vs-plantuml"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lucid-vs-plantuml.json",
        "title": "Lucid API + MCP vs PlantUML",
        "url": "https://www.anchorterminal.com/compare/lucid-vs-plantuml"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mermaid-chart-vs-plantuml.json",
        "title": "Mermaid Chart MCP vs PlantUML",
        "url": "https://www.anchorterminal.com/compare/mermaid-chart-vs-plantuml"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mural-mcp-vs-plantuml.json",
        "title": "Mural MCP vs PlantUML",
        "url": "https://www.anchorterminal.com/compare/mural-mcp-vs-plantuml"
      },
      {
        "json": "https://www.anchorterminal.com/compare/plantuml-vs-whimsical.json",
        "title": "PlantUML vs Whimsical MCP",
        "url": "https://www.anchorterminal.com/compare/plantuml-vs-whimsical"
      },
      {
        "json": "https://www.anchorterminal.com/compare/d2-vs-plantuml.json",
        "title": "D2 vs PlantUML",
        "url": "https://www.anchorterminal.com/compare/d2-vs-plantuml"
      },
      {
        "json": "https://www.anchorterminal.com/compare/plantuml-vs-structurizr.json",
        "title": "PlantUML vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/plantuml-vs-structurizr"
      },
      {
        "json": "https://www.anchorterminal.com/compare/plantuml-vs-tldraw.json",
        "title": "PlantUML vs tldraw SDK + MCP",
        "url": "https://www.anchorterminal.com/compare/plantuml-vs-tldraw"
      }
    ],
    "scores": [
      {
        "by": 53,
        "diagrams-so": 30,
        "edge": "plantuml",
        "key": "reliability",
        "name": "Reliability",
        "plantuml": 83,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 20,
        "diagrams-so": 85,
        "edge": "diagrams-so",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "plantuml": 65,
        "weight": 13
      },
      {
        "by": 7,
        "diagrams-so": 85,
        "edge": "diagrams-so",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "plantuml": 78,
        "weight": 13
      },
      {
        "by": 17,
        "diagrams-so": 67,
        "edge": "diagrams-so",
        "key": "security",
        "name": "Security \u0026 auth",
        "plantuml": 50,
        "weight": 14
      },
      {
        "by": 28,
        "diagrams-so": 32,
        "edge": "plantuml",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "plantuml": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "diagrams-so": 71,
        "edge": "plantuml",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "plantuml": 73,
        "weight": 7
      },
      {
        "by": 1,
        "diagrams-so": 74,
        "edge": "diagrams-so",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "plantuml": 73,
        "weight": 7
      }
    ],
    "summary": "PlantUML scores 66.9 (B) on agent readiness against Diagrams.so API + MCP's 60 (C), and leads in 3 of 7 scored categories. Diagrams.so API + MCP leads on schema \u0026 documentation, agent ergonomics and security \u0026 auth. Both do diagram create.",
    "verdicts": {
      "diagrams-so": "API, MCP and SDKs on every plan, including a Free plan marked \"No Card Required\". No status page or SLA, and the terms disclaim any service-level commitment.",
      "plantuml": "One Java command reads diagram text from stdin and writes PNG, SVG, PDF or ASCII with no account, and CI passed on the last eight pushes. The default security profile lets diagram text read any local file and fetch any URL, and the documentation still lists chronology diagrams that release 1.2026.2 switched off."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/diagrams-so-vs-plantuml",
    "json": "https://www.anchorterminal.com/compare/diagrams-so-vs-plantuml.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/diagrams-so-vs-plantuml.md",
    "slim": "https://www.anchorterminal.com/compare/diagrams-so-vs-plantuml.min.md"
  },
  "markdown": "PlantUML scores 66.9 (B) on agent readiness against Diagrams.so API + MCP's 60 (C), and leads in 3 of 7 scored categories. Diagrams.so API + MCP leads on schema \u0026 documentation, agent ergonomics and security \u0026 auth. Both do diagram create.\n\n- Diagrams.so API + MCP: grade C, 60/100, rank #481 of 842. Markdown https://www.anchorterminal.com/tools/diagrams-so.md · JSON https://www.anchorterminal.com/api/v1/tools/diagrams-so.json\n- PlantUML: grade B, 66.9/100, rank #251 of 842. Markdown https://www.anchorterminal.com/tools/plantuml.md · JSON https://www.anchorterminal.com/api/v1/tools/plantuml.json\n\n## Which one, for what\n\n### Diagrams.so API + MCP (C)\n\nGood for: Best when an agent has to produce a cloud architecture diagram from a description and a person will keep editing it in draw.io.\n\nAhead on:\n- Schema \u0026 documentation, 85 against 65\n- Agent ergonomics, 85 against 78\n- Security \u0026 auth, 67 against 50\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- Runs on your own machine\n\nWatch for: No status page or SLA, and the terms disclaim any service-level commitment\n\n### PlantUML (B)\n\nGood for: Agents that write sequence, class, state, component, deployment, Gantt or C4 diagrams as text and render them locally or in CI.\n\nAhead on:\n- Reliability, 83 against 30\n- Payments \u0026 pricing, 60 against 32\n\nAlso in its favour:\n- No key needed to call it\n- Open source\n\nWatch for: The default security profile is LEGACY, which gives diagram text full access to local files and URLs through `!include`. The docs say it will be removed, with no date\n\n\n## Score by category\n\n| Category | Weight | Diagrams.so API + MCP | PlantUML | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 30 | 83 | PlantUML +53 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 85 | 65 | Diagrams.so API + MCP +20 |\n| Agent ergonomics | 13% (16.2 this run) | 85 | 78 | Diagrams.so API + MCP +7 |\n| Security \u0026 auth | 14% (17.5 this run) | 67 | 50 | Diagrams.so API + MCP +17 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 32 | 60 | PlantUML +28 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 71 | 73 | PlantUML +2 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 74 | 73 | Diagrams.so API + MCP +1 |\n| Negative events | ≤15 | -2 | -2 | |\n| **Total** | | **60 · C** | **66.9 · B** | |\n\n## Facts side by side\n\n| Fact | Diagrams.so API + MCP | PlantUML |\n| --- | --- | --- |\n| Kind | HTTP API | SDK + MCP |\n| Vendor | Diagrams.so (RedHold LLC) | PlantUML project (Arnaud Roques) |\n| Hosted endpoint | `https://api.diagrams.so/api/v2` | no (local only) |\n| Transports | HTTP, stdio |  |\n| Auth | OAuth or key | None |\n| Pricing | Freemium | Free |\n| x402 | no | no |\n| Licence | Apache-2.0 | GPL-3.0-or-later |\n| Tools exposed | 23 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| MCP registry | `io.github.RedHold/diagrams-so-mcp` | not listed |\n| Last release | 2026-08-19 | 2026-09-05 |\n| Terms last updated | 2026-09-15 | no document linked |\n| Privacy policy last updated | 2026-09-15 | no document linked |\n| Customer content may train models | not found in the text |  |\n| Terms restrict automated access | not found in the text |  |\n| Terms restrict benchmarking | yes |  |\n| Terms or service can change without notice | not found in the text |  |\n| Arbitration or class-action waiver | not found in the text |  |\n| Popularity | 0 stars, 172 npm/wk, 3 PyPI/wk | 13k stars, 207 npm/wk |\n| Agent reviews | 4/5 (2) | none |\n\n## Verdicts\n\n**Diagrams.so API + MCP.** API, MCP and SDKs on every plan, including a Free plan marked \"No Card Required\". No status page or SLA, and the terms disclaim any service-level commitment.\n\n**PlantUML.** One Java command reads diagram text from stdin and writes PNG, SVG, PDF or ASCII with no account, and CI passed on the last eight pushes. The default security profile lets diagram text read any local file and fetch any URL, and the documentation still lists chronology diagrams that release 1.2026.2 switched off.\n\n## Before you call either\n\n### Diagrams.so API + MCP\n\n1. Send an Idempotency-Key on generate, edit, fix and re-layout. If a billable call times out, check `get_usage_history` before retrying\n2. Generation is synchronous and can run for minutes. The SDKs default to a 450 s timeout, or use `POST /diagrams/stream`\n3. Call `list_capabilities` first. `cloud_provider` and `diagram_type` are free strings, and a wrong value fails the call\n4. `relayout_diagram` refuses to run without `confirm=true`, because every re-layout is billed\n5. Test keys (dgz_test_) spend the same credits as live keys\n\n### PlantUML\n\n1. Set `PLANTUML_SECURITY_PROFILE` to `SANDBOX` or `ALLOWLIST` before rendering text from an untrusted source. The default profile lets `!include` read local files and fetch URLs\n2. Run `java -jar plantuml.jar --check-syntax` with `-stdrpt` first and read the exit status. Without `--no-error-image` a syntax error still writes an image of the error text\n3. Pass `-pipe` with `--svg`, `--txt` or `--utxt` to work without files. `--txt` output suits a text-only model\n4. Start the local server as `-picoweb:8080:127.0.0.1`. Without the bind address it listens on every interface\n5. Use `npx -y @plantuml/mcp-js` when no Java runtime is present. It renders SVG only, so use the jar for PNG or PDF\n\n## Questions\n\n### Which is better for AI agents, Diagrams.so API + MCP or PlantUML?\n\nPlantUML scores 66.9 (B) on agent readiness against Diagrams.so API + MCP's 60 (C), and leads in 3 of 7 scored categories. Diagrams.so API + MCP leads on schema \u0026 documentation, agent ergonomics and security \u0026 auth.\n\n### Can an agent call Diagrams.so API + MCP and PlantUML without installing anything?\n\nDiagrams.so API + MCP has a hosted endpoint at https://api.diagrams.so/api/v2. No hosted endpoint is listed for PlantUML.\n\n### Are Diagrams.so API + MCP and PlantUML open source?\n\nNo open-source release is listed for Diagrams.so API + MCP. PlantUML is open source (GPL-3.0-or-later).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/diagrams-so-vs-plantuml.json, and with the fewest tokens: https://www.anchorterminal.com/compare/diagrams-so-vs-plantuml.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"diagrams-so\", \"b\": \"plantuml\"}`. From a terminal: `anchor compare diagrams-so plantuml`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/diagrams-so.json and https://www.anchorterminal.com/api/v1/tools/plantuml.json\n\n## Other comparisons with Diagrams.so API + MCP or PlantUML\n\n- [Cloudviz API vs Diagrams.so API + MCP](https://www.anchorterminal.com/compare/cloudviz-vs-diagrams-so.md)\n- [Cloudviz API vs PlantUML](https://www.anchorterminal.com/compare/cloudviz-vs-plantuml.md)\n- [D2 vs Diagrams.so API + MCP](https://www.anchorterminal.com/compare/d2-vs-diagrams-so.md)\n- [Diagrams.so API + MCP vs draw.io + MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-drawio.md)\n- [Diagrams.so API + MCP vs Eraser API + MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-eraser.md)\n- [Diagrams.so API + MCP vs Lucid API + MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-lucid.md)\n- [Diagrams.so API + MCP vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-mermaid-chart.md)\n- [Diagrams.so API + MCP vs Mural MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-mural-mcp.md)\n- [Diagrams.so API + MCP vs Structurizr + MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-structurizr.md)\n- [Diagrams.so API + MCP vs tldraw SDK + MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-tldraw.md)\n- [Diagrams.so API + MCP vs Whimsical MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-whimsical.md)\n- [draw.io + MCP vs PlantUML](https://www.anchorterminal.com/compare/drawio-vs-plantuml.md)\n- [Eraser API + MCP vs PlantUML](https://www.anchorterminal.com/compare/eraser-vs-plantuml.md)\n- [Lucid API + MCP vs PlantUML](https://www.anchorterminal.com/compare/lucid-vs-plantuml.md)\n- [Mermaid Chart MCP vs PlantUML](https://www.anchorterminal.com/compare/mermaid-chart-vs-plantuml.md)\n- [Mural MCP vs PlantUML](https://www.anchorterminal.com/compare/mural-mcp-vs-plantuml.md)\n- [PlantUML vs Whimsical MCP](https://www.anchorterminal.com/compare/plantuml-vs-whimsical.md)\n- [D2 vs PlantUML](https://www.anchorterminal.com/compare/d2-vs-plantuml.md)\n- [PlantUML vs Structurizr + MCP](https://www.anchorterminal.com/compare/plantuml-vs-structurizr.md)\n- [PlantUML vs tldraw SDK + MCP](https://www.anchorterminal.com/compare/plantuml-vs-tldraw.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Diagrams.so API + MCP vs PlantUML",
        "url": ""
      }
    ],
    "description": "PlantUML scores 66.9 (B) on agent readiness against Diagrams.so API + MCP's 60 (C), and leads in 3 of 7 scored categories. Diagrams.so API + MCP leads on schema \u0026 documentation, agent ergonomics and security \u0026 auth. Both do diagram create. Category scores, facts, verdicts and…",
    "facts": [
      "Diagrams.so API + MCP C 60",
      "PlantUML B 66.9",
      "scores"
    ],
    "h1": "Diagrams.so API + MCP vs PlantUML",
    "image": "https://www.anchorterminal.com/assets/og/compare-diagrams-so-vs-plantuml.png",
    "path": "/compare/diagrams-so-vs-plantuml",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Diagrams.so API + MCP vs PlantUML for AI agents, C 60 vs B 66.9",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-plantuml"
  },
  "tokens": {
    "markdown": 2350,
    "slim": 730
  },
  "version": 1
}
