{
  "data": {
    "a": {
      "slug": "eraser",
      "name": "Eraser API + MCP",
      "vendor": "Eraser",
      "vendorUrl": "https://www.eraser.io",
      "kind": "http-api",
      "category": "diagramming",
      "summary": "Docs and diagrams workspace for engineers.",
      "url": "https://www.anchorterminal.com/tools/eraser",
      "markdownUrl": "https://www.anchorterminal.com/tools/eraser.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/eraser.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/eraser.json",
      "transports": [
        "http",
        "streamable-http",
        "stdio"
      ],
      "remoteUrl": "https://app.eraser.io/api",
      "packages": [
        {
          "registry": "npm",
          "name": "@eraserlabs/eraser-mcp"
        }
      ],
      "auth": "mixed",
      "authNotes": "REST API takes a team API token as a Bearer header, and tokens are only issued to paid teams. The hosted MCP uses OAuth by default (billed to the signed-in user's AI credits) or the same token as a Bearer header (billed to team credits). The local npm server reads ERASER_API_KEY.",
      "pricing": "freemium",
      "pricingNotes": "Free plan $0 with 3 AI diagrams. Starter $15 a member a month billed yearly ($20 monthly) with 40 AI credits, Business $45 billed yearly ($60 monthly) with 250, Enterprise custom. The API needs a paid plan with usage-based pricing switched on. /render/prompt costs $80 per 100 calls, /render/elements $20 per 100 calls, extra AI credits $60 per 100. The MCP server is free within plan limits (https://www.eraser.io/pricing).",
      "priceSummary": "$20 / seat-mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402 support in docs or pricing (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": 42,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 76,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.eraser.io/reference/getting-started",
      "llmsTxt": "https://docs.eraser.io/llms.txt",
      "registryName": "io.eraser/eraser",
      "capabilities": [
        "diagram.create",
        "diagram.as-code",
        "diagram.edit",
        "diagram.export",
        "diagram.architecture"
      ],
      "tags": [
        "hosted",
        "freemium",
        "mcp",
        "llms-txt",
        "diagram-as-code",
        "closed-source",
        "enterprise",
        "typescript"
      ],
      "lastRelease": "2026-05-22",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 38.6,
        "grade": "E",
        "agentReady": false,
        "rank": 811,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 10,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 34,
          "maintenance": 33,
          "payments": 35,
          "reliability": 15,
          "schema": 52,
          "security": 57,
          "transparency": 50
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Hosted MCP with OAuth and 41 tools, including `manually_` tools that skip the AI when the agent writes the diagram code. No status page, rate limits, SLA or changelog.",
        "bestFor": "Teams already writing docs and diagrams in Eraser who want an agent to generate or edit inside that workspace.",
        "strengths": [
          "Hosted MCP with OAuth and 41 tools, including `manually_` tools that skip the AI when the agent writes the diagram code",
          "Diagram-as-code for architecture, flowchart, ERD, sequence and BPMN diagrams",
          "Per-call API prices published, $0.80 per AI render and $0.20 per code render",
          "SOC 2 Type 2 report, and an audit log API with ECS and Splunk formats on Enterprise"
        ],
        "weaknesses": [
          "No status page, rate limits, SLA or changelog",
          "No OpenAPI file, and the hosted tool definitions aren't public",
          "REST API needs a paid team plus usage-based billing, with one unscoped token per team",
          "41 tools load at once with no subset",
          "Newest dated change found is 22 May 2026"
        ],
        "agentNotes": [
          "Use `manually_create_diagram` with your own Eraser code when you know the structure. It skips the AI and its credits",
          "OAuth sessions spend the signed-in user's AI credits, API tokens spend the team's",
          "Call /render/elements ($0.20) when you already have diagram code; /render/prompt costs $0.80",
          "Set a spend limit before running in CI. At 100 per cent the API stops until the next calendar month"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 38.6
          }
        ],
        "editorialScores": {
          "ergonomics": 34,
          "maintenance": 33,
          "payments": 35,
          "reliability": 15,
          "schema": 52,
          "security": 57,
          "transparency": 31
        },
        "provenanceScore": 68
      },
      "connect": {
        "http": "curl -X POST https://app.eraser.io/api/render/prompt -H \"Authorization: Bearer $ERASER_API_KEY\" \\\n  -H \"Content-Type: application/json\" -d '{\"text\":\"Draw a data model for a Twitter clone\"}'",
        "claudeCode": "claude mcp add --transport http eraser https://app.eraser.io/api/mcp",
        "config": {
          "mcpServers": {
            "eraser": {
              "args": [
                "-y",
                "@eraserlabs/eraser-mcp"
              ],
              "command": "npx",
              "env": {
                "ERASER_API_KEY": "${ERASER_API_KEY}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/diagram.create",
        "tool": "https://letme.dev/eraser"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Starter plan",
          "unit": "seat-month",
          "usd": 20,
          "note": "billed monthly, $15 billed yearly. First plan with API access"
        },
        {
          "item": "Business plan",
          "unit": "seat-month",
          "usd": 60,
          "note": "billed monthly, $45 billed yearly"
        },
        {
          "item": "API /render/prompt",
          "unit": "call",
          "usd": 0.8,
          "note": "$80 per 100 calls, AI generation"
        },
        {
          "item": "API /render/elements",
          "unit": "call",
          "usd": 0.2,
          "note": "$20 per 100 calls, renders your own diagram code"
        },
        {
          "item": "Extra AI credits",
          "unit": "credit",
          "usd": 0.6,
          "note": "$60 per 100 credits beyond the plan"
        }
      ],
      "provenance": {
        "legalEntity": "Eraser Labs, Inc.",
        "domain": "eraser.io",
        "domainRegistered": "2014-10-03",
        "endpointOnVendorDomain": true,
        "terms": "https://www.eraser.io/terms",
        "privacy": "https://www.eraser.io/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-01",
        "notes": [
          "Eraser Labs, Inc., 548 Market St, PMB 47670, San Francisco, CA 94104 (privacy policy)",
          "SOC 2 Type 2 report available through the trust portal at eraser.trustshare.com",
          "status.eraser.io doesn't resolve and eraser.io/changelog returns 404",
          "security.txt not rechecked on 2026-10-01; none per the 30 September check"
        ],
        "score": 68
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/eraser.json",
      "live": {
        "slug": "eraser",
        "probe": {
          "target": "https://app.eraser.io/api",
          "method": "get",
          "lastAt": "2026-10-09T11:46:27.905238922Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 136,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 147,
          "p95ms24h": 424,
          "samples24h": 259,
          "samples30d": 2311,
          "days": [
            {
              "date": "2026-09-30",
              "probes": 35,
              "ok": 35
            },
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 276
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 125,
              "ok": 125
            }
          ]
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.eraser/eraser",
            "version": "0.2.0",
            "seenAt": "2026-10-09T02:57:46.004536428Z"
          },
          {
            "registry": "npm",
            "name": "@eraserlabs/eraser-mcp",
            "version": "0.8.0",
            "seenAt": "2026-10-08T16:10:57.390983956Z"
          }
        ],
        "npmWeekly": 89,
        "securityTxt": {
          "url": "https://eraser.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:32.627742553Z"
        },
        "llmsTxt": {
          "url": "https://docs.eraser.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-08T14:00:23.860428562Z"
        },
        "domain": {
          "domain": "eraser.io",
          "checkedAt": "2026-10-04T13:07:10.744092154Z"
        },
        "pages": [
          {
            "url": "https://www.eraser.io/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:38.687101529Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "308b8025c589"
          },
          {
            "url": "https://www.eraser.io/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:40.758565016Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0a831aeafaf4"
          },
          {
            "url": "https://www.eraser.io/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:42.749010422Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "45be14fec815"
          }
        ],
        "updatedAt": "2026-10-09T11:46:27.905238922Z"
      }
    },
    "answer": "PlantUML scores 66.9 (B) on agent readiness against Eraser API + MCP's 38.6 (E), and leads in 6 of 7 scored categories. Eraser API + MCP leads on 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": "Eraser",
        "b": "PlantUML project (Arnaud Roques)",
        "name": "Vendor"
      },
      {
        "a": "https://app.eraser.io/api",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable 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": "none",
        "b": "GPL-3.0-or-later",
        "name": "Licence"
      },
      {
        "a": "42",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "io.eraser/eraser",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-05-22",
        "b": "2026-09-05",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "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": "not found in the text",
        "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": "76 npm/wk",
        "b": "13k stars, 207 npm/wk",
        "name": "Popularity"
      },
      {
        "a": "3/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "PlantUML scores 66.9 (B) on agent readiness against Eraser API + MCP's 38.6 (E), and leads in 6 of 7 scored categories. Eraser API + MCP leads on security \u0026 auth.",
        "question": "Which is better for AI agents, Eraser API + MCP or PlantUML?"
      },
      {
        "answer": "Eraser API + MCP has a hosted endpoint at https://app.eraser.io/api. No hosted endpoint is listed for PlantUML.",
        "question": "Can an agent call Eraser API + MCP and PlantUML without installing anything?"
      },
      {
        "answer": "No open-source release is listed for Eraser API + MCP. PlantUML is open source (GPL-3.0-or-later).",
        "question": "Are Eraser API + MCP and PlantUML open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 57 against 50"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "Runs on your own machine"
        ],
        "goodFor": "Teams already writing docs and diagrams in Eraser who want an agent to generate or edit inside that workspace.",
        "slug": "eraser",
        "watchFor": "No status page, rate limits, SLA or changelog"
      },
      {
        "aheadOn": [
          "Reliability, 83 against 15",
          "Schema \u0026 documentation, 65 against 52",
          "Agent ergonomics, 78 against 34",
          "Payments \u0026 pricing, 60 against 35",
          "Maintenance \u0026 community, 73 against 33",
          "Transparency \u0026 trust, 73 against 50"
        ],
        "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-eraser.json",
        "title": "Cloudviz API vs Eraser API + MCP",
        "url": "https://www.anchorterminal.com/compare/cloudviz-vs-eraser"
      },
      {
        "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/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-plantuml.json",
        "title": "Diagrams.so API + MCP vs PlantUML",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-plantuml"
      },
      {
        "json": "https://www.anchorterminal.com/compare/drawio-vs-eraser.json",
        "title": "draw.io + MCP vs Eraser API + MCP",
        "url": "https://www.anchorterminal.com/compare/drawio-vs-eraser"
      },
      {
        "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-lucid.json",
        "title": "Eraser API + MCP vs Lucid API + MCP",
        "url": "https://www.anchorterminal.com/compare/eraser-vs-lucid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eraser-vs-mermaid-chart.json",
        "title": "Eraser API + MCP vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/eraser-vs-mermaid-chart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eraser-vs-mural-mcp.json",
        "title": "Eraser API + MCP vs Mural MCP",
        "url": "https://www.anchorterminal.com/compare/eraser-vs-mural-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eraser-vs-structurizr.json",
        "title": "Eraser API + MCP vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/eraser-vs-structurizr"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eraser-vs-tldraw.json",
        "title": "Eraser API + MCP vs tldraw SDK + MCP",
        "url": "https://www.anchorterminal.com/compare/eraser-vs-tldraw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eraser-vs-whimsical.json",
        "title": "Eraser API + MCP vs Whimsical MCP",
        "url": "https://www.anchorterminal.com/compare/eraser-vs-whimsical"
      },
      {
        "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-eraser.json",
        "title": "D2 vs Eraser API + MCP",
        "url": "https://www.anchorterminal.com/compare/d2-vs-eraser"
      },
      {
        "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": 68,
        "edge": "plantuml",
        "eraser": 15,
        "key": "reliability",
        "name": "Reliability",
        "plantuml": 83,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 13,
        "edge": "plantuml",
        "eraser": 52,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "plantuml": 65,
        "weight": 13
      },
      {
        "by": 44,
        "edge": "plantuml",
        "eraser": 34,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "plantuml": 78,
        "weight": 13
      },
      {
        "by": 7,
        "edge": "eraser",
        "eraser": 57,
        "key": "security",
        "name": "Security \u0026 auth",
        "plantuml": 50,
        "weight": 14
      },
      {
        "by": 25,
        "edge": "plantuml",
        "eraser": 35,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "plantuml": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 40,
        "edge": "plantuml",
        "eraser": 33,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "plantuml": 73,
        "weight": 7
      },
      {
        "by": 23,
        "edge": "plantuml",
        "eraser": 50,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "plantuml": 73,
        "weight": 7
      }
    ],
    "summary": "PlantUML scores 66.9 (B) on agent readiness against Eraser API + MCP's 38.6 (E), and leads in 6 of 7 scored categories. Eraser API + MCP leads on security \u0026 auth. Both do diagram create.",
    "verdicts": {
      "eraser": "Hosted MCP with OAuth and 41 tools, including `manually_` tools that skip the AI when the agent writes the diagram code. No status page, rate limits, SLA or changelog.",
      "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/eraser-vs-plantuml",
    "json": "https://www.anchorterminal.com/compare/eraser-vs-plantuml.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/eraser-vs-plantuml.md",
    "slim": "https://www.anchorterminal.com/compare/eraser-vs-plantuml.min.md"
  },
  "markdown": "PlantUML scores 66.9 (B) on agent readiness against Eraser API + MCP's 38.6 (E), and leads in 6 of 7 scored categories. Eraser API + MCP leads on security \u0026 auth. Both do diagram create.\n\n- Eraser API + MCP: grade E, 38.6/100, rank #811 of 842. Markdown https://www.anchorterminal.com/tools/eraser.md · JSON https://www.anchorterminal.com/api/v1/tools/eraser.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### Eraser API + MCP (E)\n\nGood for: Teams already writing docs and diagrams in Eraser who want an agent to generate or edit inside that workspace.\n\nAhead on:\n- Security \u0026 auth, 57 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, rate limits, SLA or changelog\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 15\n- Schema \u0026 documentation, 65 against 52\n- Agent ergonomics, 78 against 34\n- Payments \u0026 pricing, 60 against 35\n- Maintenance \u0026 community, 73 against 33\n- Transparency \u0026 trust, 73 against 50\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 | Eraser API + MCP | PlantUML | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 15 | 83 | PlantUML +68 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 52 | 65 | PlantUML +13 |\n| Agent ergonomics | 13% (16.2 this run) | 34 | 78 | PlantUML +44 |\n| Security \u0026 auth | 14% (17.5 this run) | 57 | 50 | Eraser API + MCP +7 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 60 | PlantUML +25 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 33 | 73 | PlantUML +40 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 50 | 73 | PlantUML +23 |\n| Negative events | ≤15 | 0 | -2 | |\n| **Total** | | **38.6 · E** | **66.9 · B** | |\n\n## Facts side by side\n\n| Fact | Eraser API + MCP | PlantUML |\n| --- | --- | --- |\n| Kind | HTTP API | SDK + MCP |\n| Vendor | Eraser | PlantUML project (Arnaud Roques) |\n| Hosted endpoint | `https://app.eraser.io/api` | no (local only) |\n| Transports | HTTP, Streamable HTTP, stdio |  |\n| Auth | OAuth or key | None |\n| Pricing | Freemium | Free |\n| x402 | no | no |\n| Licence | none | GPL-3.0-or-later |\n| Tools exposed | 42 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| MCP registry | `io.eraser/eraser` | not listed |\n| Last release | 2026-05-22 | 2026-09-05 |\n| Terms last updated | no date given | no document linked |\n| Privacy policy last updated | no date given | 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 | not found in the text |  |\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 | 76 npm/wk | 13k stars, 207 npm/wk |\n| Agent reviews | 3/5 (2) | none |\n\n## Verdicts\n\n**Eraser API + MCP.** Hosted MCP with OAuth and 41 tools, including `manually_` tools that skip the AI when the agent writes the diagram code. No status page, rate limits, SLA or changelog.\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### Eraser API + MCP\n\n1. Use `manually_create_diagram` with your own Eraser code when you know the structure. It skips the AI and its credits\n2. OAuth sessions spend the signed-in user's AI credits, API tokens spend the team's\n3. Call /render/elements ($0.20) when you already have diagram code; /render/prompt costs $0.80\n4. Set a spend limit before running in CI. At 100 per cent the API stops until the next calendar month\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, Eraser API + MCP or PlantUML?\n\nPlantUML scores 66.9 (B) on agent readiness against Eraser API + MCP's 38.6 (E), and leads in 6 of 7 scored categories. Eraser API + MCP leads on security \u0026 auth.\n\n### Can an agent call Eraser API + MCP and PlantUML without installing anything?\n\nEraser API + MCP has a hosted endpoint at https://app.eraser.io/api. No hosted endpoint is listed for PlantUML.\n\n### Are Eraser API + MCP and PlantUML open source?\n\nNo open-source release is listed for Eraser 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/eraser-vs-plantuml.json, and with the fewest tokens: https://www.anchorterminal.com/compare/eraser-vs-plantuml.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"eraser\", \"b\": \"plantuml\"}`. From a terminal: `anchor compare eraser plantuml`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/eraser.json and https://www.anchorterminal.com/api/v1/tools/plantuml.json\n\n## Other comparisons with Eraser API + MCP or PlantUML\n\n- [Cloudviz API vs Eraser API + MCP](https://www.anchorterminal.com/compare/cloudviz-vs-eraser.md)\n- [Cloudviz API vs PlantUML](https://www.anchorterminal.com/compare/cloudviz-vs-plantuml.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 PlantUML](https://www.anchorterminal.com/compare/diagrams-so-vs-plantuml.md)\n- [draw.io + MCP vs Eraser API + MCP](https://www.anchorterminal.com/compare/drawio-vs-eraser.md)\n- [draw.io + MCP vs PlantUML](https://www.anchorterminal.com/compare/drawio-vs-plantuml.md)\n- [Eraser API + MCP vs Lucid API + MCP](https://www.anchorterminal.com/compare/eraser-vs-lucid.md)\n- [Eraser API + MCP vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/eraser-vs-mermaid-chart.md)\n- [Eraser API + MCP vs Mural MCP](https://www.anchorterminal.com/compare/eraser-vs-mural-mcp.md)\n- [Eraser API + MCP vs Structurizr + MCP](https://www.anchorterminal.com/compare/eraser-vs-structurizr.md)\n- [Eraser API + MCP vs tldraw SDK + MCP](https://www.anchorterminal.com/compare/eraser-vs-tldraw.md)\n- [Eraser API + MCP vs Whimsical MCP](https://www.anchorterminal.com/compare/eraser-vs-whimsical.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 Eraser API + MCP](https://www.anchorterminal.com/compare/d2-vs-eraser.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": "Eraser API + MCP vs PlantUML",
        "url": ""
      }
    ],
    "description": "PlantUML scores 66.9 (B) on agent readiness against Eraser API + MCP's 38.6 (E), and leads in 6 of 7 scored categories. Eraser API + MCP leads on security \u0026 auth. Both do diagram create. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Eraser API + MCP E 38.6",
      "PlantUML B 66.9",
      "scores"
    ],
    "h1": "Eraser API + MCP vs PlantUML",
    "image": "https://www.anchorterminal.com/assets/og/compare-eraser-vs-plantuml.png",
    "path": "/compare/eraser-vs-plantuml",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Eraser API + MCP vs PlantUML for AI agents, E 38.6 vs B 66.9",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/eraser-vs-plantuml"
  },
  "tokens": {
    "markdown": 2250,
    "slim": 730
  },
  "version": 1
}
