{
  "data": {
    "a": {
      "slug": "d2",
      "name": "D2",
      "vendor": "D2 project (The Hack Foundation)",
      "vendorUrl": "https://d2lang.com",
      "kind": "sdk",
      "category": "diagramming",
      "summary": "D2 is an open-source diagram scripting language that turns text into SVG, PNG, PDF, PPTX, GIF or ASCII diagrams. Agents run it as a local CLI, a Go library or the `@d2lang/d2` WebAssembly package.",
      "url": "https://www.anchorterminal.com/tools/d2",
      "markdownUrl": "https://www.anchorterminal.com/tools/d2.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/d2.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/d2.json",
      "repo": "https://github.com/d2lang/d2",
      "license": "MPL-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@d2lang/d2"
        },
        {
          "registry": "go",
          "name": "github.com/d2lang/d2"
        },
        {
          "registry": "oci",
          "name": "d2lang/d2"
        }
      ],
      "auth": "none",
      "authNotes": "No account, key or login. The CLI, the Go library and the WebAssembly package run on the owner's machine with the owner's file and network rights. `d2 --watch` serves a preview on localhost.",
      "pricing": "free",
      "pricingNotes": "Free under MPL-2.0 with nothing to buy. The TALA layout engine, once a paid plugin with a licence key, has been bundled and open source since 0.9.0. The project takes donations through a public Hack Club fund (https://d2lang.com/sponsor/).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or the source. The maintainer's 5 September 2026 post rules out any server-side service (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 25581,
        "npmWeekly": 21627,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://d2lang.com/tour/intro/",
      "capabilities": [
        "diagram.as-code",
        "diagram.create",
        "diagram.export",
        "diagram.edit",
        "diagram.architecture"
      ],
      "tags": [
        "open-source",
        "local",
        "cli",
        "go",
        "wasm",
        "diagram-as-code",
        "no-auth",
        "free",
        "non-profit",
        "docker"
      ],
      "lastRelease": "2026-09-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65.3,
        "grade": "B",
        "agentReady": false,
        "rank": 295,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 78,
          "maintenance": 74,
          "payments": 60,
          "reliability": 68,
          "schema": 65,
          "security": 48,
          "transparency": 69
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "A single local command turns text into a diagram in six formats with no account, key or network call, and CI passes on the default branch. The language is at 0.9.0 with no stable release, its company sponsor has shut down, and one maintainer with limited time wrote every commit since July.",
        "bestFor": "Agents that need to produce or edit architecture, sequence, grid, SQL table or class diagrams as reviewable text and render them locally.",
        "strengths": [
          "One command reads D2 from stdin and writes SVG, PNG, PDF, PPTX, GIF or ASCII to stdout, with no account or key",
          "MPL-2.0 throughout, and the TALA layout engine has been open source and bundled since 0.9.0 on 7 September 2026",
          "`d2 validate` and `d2 fmt --check` let an agent test a diagram before rendering it",
          "The `d2oracle` Go package creates, sets, moves, renames and deletes shapes without mutating the input graph",
          "Release archives carry SHA-256 sums, signed provenance and SBOM attestations since 0.8.2"
        ],
        "weaknesses": [
          "No 1.0 release. The maintainer lists a stable 1.0 with a formal grammar as a goal, and 0.8.2 changed Dagre and ELK layout output",
          "Terrastruct, the company that built D2, is shutting down. The project is now donation-funded under The Hack Foundation",
          "All 317 commits since 8 July 2026 are by one maintainer, who says his time on D2 is limited",
          "A security hardening pass merged on 11 and 12 September 2026 is not in a release yet, and the repository has no security policy",
          "No llms.txt, no machine-readable grammar and no MCP server. The maintainer rules out an MCP server and a hosted API"
        ],
        "agentNotes": [
          "Check the exit status of `d2`, never the output file. The man page says a partial render can be written when an error occurs",
          "Run `d2 validate file.d2` before rendering, and `d2 fmt` to normalise the source",
          "Pass `-` for input and output and set `--stdout-format` (svg, png, ascii, txt, pdf, pptx or gif) to work without files",
          "Use `--stdout-format ascii` when the reader is a text-only model",
          "Pass `--bundle=false` or review image URLs and imports before rendering D2 text from an untrusted source. Release 0.9.0 fetches remote images when bundling"
        ],
        "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": 65.3
          }
        ],
        "editorialScores": {
          "ergonomics": 78,
          "maintenance": 74,
          "payments": 60,
          "reliability": 68,
          "schema": 65,
          "security": 48,
          "transparency": 74
        },
        "provenanceScore": 63
      },
      "connect": {
        "install": "curl -fsSL https://d2lang.com/install.sh | sh -s --   # or: brew install d2, go install github.com/d2lang/d2@latest, npm install @d2lang/d2"
      },
      "letme": {
        "capability": "https://letme.dev/diagram.as-code",
        "tool": "https://letme.dev/d2"
      },
      "area": "design-diagrams",
      "provenance": {
        "legalEntity": "The Hack Foundation (Hack Club), fiscal sponsor of the D2 project",
        "domain": "d2lang.com",
        "domainRegistered": "2022-10-24",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://d2lang.com/releases/intro/",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The sponsor page says D2 is fiscally sponsored by The Hack Foundation, the 501(c)(3) nonprofit behind Hack Club, after the lead maintainer donated the project in August 2026 (https://d2lang.com/sponsor/)",
          "LICENSE.txt still reads Copyright 2022 Terrastruct Inc. The 5 September 2026 post says that company is shutting down, and terrastruct.com now redirects to d2lang.com",
          "No terms or privacy document governs the software. The MPL-2.0 licence stands in",
          "https://d2lang.com/.well-known/security.txt answered 404 on 8 October 2026, and the repository has no SECURITY.md",
          "The repository moved from github.com/terrastruct/d2, which redirects, to github.com/d2lang/d2"
        ],
        "score": 63
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/d2.json"
    },
    "answer": "D2 scores 65.3 (B) on agent readiness against Structurizr + MCP's 59.9 (C), and leads in 5 of 7 scored categories. Structurizr + MCP leads on reliability and transparency \u0026 trust.",
    "b": {
      "slug": "structurizr",
      "name": "Structurizr + MCP",
      "vendor": "Structurizr",
      "vendorUrl": "https://structurizr.com",
      "kind": "http-api",
      "category": "diagramming",
      "summary": "Diagram-as-code tool for software architecture using the C4 model.",
      "url": "https://www.anchorterminal.com/tools/structurizr",
      "markdownUrl": "https://www.anchorterminal.com/tools/structurizr.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/structurizr.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/structurizr.json",
      "repo": "https://github.com/structurizr/structurizr",
      "license": "Apache-2.0",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.structurizr.com/mcp",
      "packages": [],
      "auth": "mixed",
      "authNotes": "The workspace API on a Structurizr server takes a per-workspace key in the X-Authorization header, and listing all workspaces needs the admin API key. Server authentication can be switched off. The hosted MCP at mcp.structurizr.com needs no key.",
      "pricing": "freemium",
      "pricingNotes": "The DSL, local, the playground and the MCP server are free and Apache 2.0. Running the server from the prebuilt binaries needs a yearly licence priced by unique users (people or automated processes) per installation, from £300 a month for 1 to 20 users up to £2,400 a month for over 1,000, billed annually and bought by email, paid by bank transfer or PayPal invoice. 14-day trial licence from trial.structurizr.com. Building the server from source needs no licence. The cloud service took no new sign-ups after 31 December 2025 and shut down on 30 September 2026 (https://docs.structurizr.com/server/pricing).",
      "priceSummary": "$400 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 6,
      "popularity": {
        "githubStars": 419,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.structurizr.com",
      "openapi": "https://raw.githubusercontent.com/structurizr/structurizr/refs/heads/main/structurizr-json/structurizr.yaml",
      "capabilities": [
        "diagram.create",
        "diagram.as-code",
        "diagram.edit",
        "diagram.export",
        "diagram.architecture"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "local",
        "hosted",
        "mcp",
        "diagram-as-code",
        "openapi",
        "free-tier"
      ],
      "lastRelease": "2026-09-19",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59.9,
        "grade": "C",
        "agentReady": false,
        "rank": 483,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 55,
          "maintenance": 68,
          "payments": 50,
          "reliability": 73,
          "schema": 61,
          "security": 43,
          "transparency": 77
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "One model can generate several C4 architecture views. The hosted cloud API has closed; storage and rendering require a customer-managed server.",
        "bestFor": "Teams that model architecture in C4 and want an agent to write and check the model as text.",
        "strengths": [
          "One text model yields context, container, component, dynamic and deployment views",
          "Free hosted MCP at mcp.structurizr.com validates, parses, inspects and exports DSL with no key",
          "Apache 2.0 code, an OpenAPI 3.0 definition and dated changelogs",
          "Release 2026.09.19 on 19 September 2026, with reported issues fixed within weeks",
          "Nine months' dated notice before the cloud service shut down"
        ],
        "weaknesses": [
          "The hosted cloud API is gone. Storage and rendering need your own server",
          "Prebuilt server binaries need a paid licence counted per unique user, including API clients",
          "The MCP module is labelled experimental, with one-line tool descriptions",
          "Self-hosted MCP server tools take the workspace API key as a tool argument",
          "No security.txt or disclosure policy, and one maintainer wrote every commit since February"
        ],
        "agentNotes": [
          "Call `validate` and then `inspect` on the DSL before pushing a workspace",
          "Use the Mermaid export when the diagram has to render in Markdown without a Structurizr server",
          "Export needs a view key. Parse the DSL first to list the views",
          "Run the `structurizr/mcp` image with only the flags you need, such as `-dsl -server-read`, to keep write and delete tools out of reach",
          "The workspace API returns JSON, never images. PNG and SVG come from the separate export command"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59.9
          }
        ],
        "editorialScores": {
          "ergonomics": 55,
          "maintenance": 68,
          "payments": 50,
          "reliability": 73,
          "schema": 61,
          "security": 43,
          "transparency": 80
        },
        "provenanceScore": 74
      },
      "connect": {
        "http": "curl \"$STRUCTURIZR_URL/api/workspace/1\" -H \"X-Authorization: $STRUCTURIZR_API_KEY\"",
        "claudeCode": "claude mcp add --transport http structurizr https://mcp.structurizr.com/mcp",
        "config": {
          "mcpServers": {
            "structurizr": {
              "url": "https://mcp.structurizr.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/diagram.create",
        "tool": "https://letme.dev/structurizr"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Server licence, 1 to 20 users",
          "unit": "month",
          "usd": 400,
          "note": "£300 a month billed annually, converted at about $1.34 a pound"
        },
        {
          "item": "Server licence, 21 to 50 users",
          "unit": "month",
          "usd": 800,
          "note": "£600 a month billed annually, converted at about $1.34 a pound"
        }
      ],
      "provenance": {
        "legalEntity": "Structurizr Limited",
        "domain": "structurizr.com",
        "domainRegistered": "2013-11-04",
        "endpointOnVendorDomain": true,
        "terms": "https://structurizr.com/terms-and-conditions",
        "privacy": "https://structurizr.com/privacy-policy",
        "statusPage": "",
        "changelog": "https://github.com/structurizr/structurizr/blob/main/changelog-application.md",
        "securityTxt": "none",
        "checked": "2026-10-01",
        "notes": [
          "Structurizr Limited is a private company registered in Jersey, Channel Islands, Jersey Financial Services Commission registry number 303857 (server EULA)",
          "The Pingdom status page linked from structurizr.com monitored the cloud service, which shut down on 30 September 2026, so it isn't listed",
          "Server terms and privacy policy for the licence also live at https://docs.structurizr.com/server/terms-and-conditions and https://docs.structurizr.com/server/privacy-policy"
        ],
        "score": 74
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/structurizr.json",
      "live": {
        "slug": "structurizr",
        "probe": {
          "target": "https://mcp.structurizr.com/mcp",
          "method": "get",
          "lastAt": "2026-10-09T09:27:06.287672086Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 149,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 92,
          "p95ms24h": 159,
          "samples24h": 261,
          "samples30d": 2287,
          "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": 101,
              "ok": 101
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "structurizr/structurizr",
            "version": "v2026.09.19",
            "released": "2026-09-19",
            "seenAt": "2026-10-08T16:30:52.417268576Z"
          }
        ],
        "githubStars": 445,
        "securityTxt": {
          "url": "https://structurizr.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:54.527860514Z"
        },
        "domain": {
          "domain": "structurizr.com",
          "registered": "2013-11-04",
          "source": "https://rdap.verisign.com/com/v1/domain/structurizr.com",
          "checkedAt": "2026-10-04T13:06:16.957209253Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/structurizr/structurizr/main/changelog-application.md",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-08T18:24:41.755623908Z",
            "changedAt": "2026-10-02T15:24:03.368547202Z",
            "fingerprint": "7d7f8d519415"
          },
          {
            "url": "https://docs.structurizr.com/cloud",
            "kind": "deprecations",
            "status": 304,
            "checkedAt": "2026-10-08T18:19:30.12310086Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f3914c04c843"
          },
          {
            "url": "https://docs.structurizr.com/server/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-08T18:19:32.250508952Z",
            "changedAt": "2026-10-02T15:20:28.925834824Z",
            "fingerprint": "30400863f0dd"
          },
          {
            "url": "https://structurizr.com/privacy-policy",
            "kind": "privacy",
            "status": 404,
            "checkedAt": "2026-10-08T18:24:53.497713827Z",
            "changedAt": "0001-01-01T00:00:00Z"
          },
          {
            "url": "https://structurizr.com/terms-and-conditions",
            "kind": "terms",
            "status": 404,
            "checkedAt": "2026-10-08T18:24:55.654127236Z",
            "changedAt": "0001-01-01T00:00:00Z"
          }
        ],
        "updatedAt": "2026-10-09T09:27:06.287672086Z"
      }
    },
    "facts": [
      {
        "a": "SDK + MCP",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "D2 project (The Hack Foundation)",
        "b": "Structurizr",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://mcp.structurizr.com/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MPL-2.0",
        "b": "Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "6",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-07",
        "b": "2026-09-19",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "couldn't be read",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "couldn't be read",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "26k stars, 22k npm/wk",
        "b": "419 stars",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "D2 scores 65.3 (B) on agent readiness against Structurizr + MCP's 59.9 (C), and leads in 5 of 7 scored categories. Structurizr + MCP leads on reliability and transparency \u0026 trust.",
        "question": "Which is better for AI agents, D2 or Structurizr + MCP?"
      },
      {
        "answer": "No hosted endpoint is listed for D2. Structurizr + MCP has a hosted endpoint at https://mcp.structurizr.com/mcp.",
        "question": "Can an agent call D2 and Structurizr + MCP without installing anything?"
      },
      {
        "answer": "Yes. D2 is open source (MPL-2.0). Structurizr + MCP is open source (Apache-2.0).",
        "question": "Are D2 and Structurizr + MCP open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Agent ergonomics, 78 against 55",
          "Security \u0026 auth, 48 against 43",
          "Payments \u0026 pricing, 60 against 50",
          "Maintenance \u0026 community, 74 against 68"
        ],
        "also": [
          "No key needed to call it"
        ],
        "goodFor": "Agents that need to produce or edit architecture, sequence, grid, SQL table or class diagrams as reviewable text and render them locally.",
        "slug": "d2",
        "watchFor": "No 1.0 release. The maintainer lists a stable 1.0 with a formal grammar as a goal, and 0.8.2 changed Dagre and ELK layout output"
      },
      {
        "aheadOn": [
          "Reliability, 73 against 68",
          "Transparency \u0026 trust, 77 against 69"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "Teams that model architecture in C4 and want an agent to write and check the model as text.",
        "slug": "structurizr",
        "watchFor": "The hosted cloud API is gone. Storage and rendering need your own server"
      }
    ],
    "job": {
      "capability": "diagram.as-code",
      "name": "Diagram as code"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/cloudviz-vs-d2.json",
        "title": "Cloudviz API vs D2",
        "url": "https://www.anchorterminal.com/compare/cloudviz-vs-d2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudviz-vs-structurizr.json",
        "title": "Cloudviz API vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/cloudviz-vs-structurizr"
      },
      {
        "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/d2-vs-mural-mcp.json",
        "title": "D2 vs Mural MCP",
        "url": "https://www.anchorterminal.com/compare/d2-vs-mural-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/d2-vs-whimsical.json",
        "title": "D2 vs Whimsical MCP",
        "url": "https://www.anchorterminal.com/compare/d2-vs-whimsical"
      },
      {
        "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/drawio-vs-structurizr.json",
        "title": "draw.io + MCP vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/drawio-vs-structurizr"
      },
      {
        "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/lucid-vs-structurizr.json",
        "title": "Lucid API + MCP vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/lucid-vs-structurizr"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mermaid-chart-vs-structurizr.json",
        "title": "Mermaid Chart MCP vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/mermaid-chart-vs-structurizr"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mural-mcp-vs-structurizr.json",
        "title": "Mural MCP vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/mural-mcp-vs-structurizr"
      },
      {
        "json": "https://www.anchorterminal.com/compare/structurizr-vs-tldraw.json",
        "title": "Structurizr + MCP vs tldraw SDK + MCP",
        "url": "https://www.anchorterminal.com/compare/structurizr-vs-tldraw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/structurizr-vs-whimsical.json",
        "title": "Structurizr + MCP vs Whimsical MCP",
        "url": "https://www.anchorterminal.com/compare/structurizr-vs-whimsical"
      },
      {
        "json": "https://www.anchorterminal.com/compare/d2-vs-drawio.json",
        "title": "D2 vs draw.io + MCP",
        "url": "https://www.anchorterminal.com/compare/d2-vs-drawio"
      },
      {
        "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-lucid.json",
        "title": "D2 vs Lucid API + MCP",
        "url": "https://www.anchorterminal.com/compare/d2-vs-lucid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/d2-vs-mermaid-chart.json",
        "title": "D2 vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/d2-vs-mermaid-chart"
      },
      {
        "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/d2-vs-tldraw.json",
        "title": "D2 vs tldraw SDK + MCP",
        "url": "https://www.anchorterminal.com/compare/d2-vs-tldraw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/plantuml-vs-structurizr.json",
        "title": "PlantUML vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/plantuml-vs-structurizr"
      }
    ],
    "scores": [
      {
        "by": 5,
        "d2": 68,
        "edge": "structurizr",
        "key": "reliability",
        "name": "Reliability",
        "structurizr": 73,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 4,
        "d2": 65,
        "edge": "d2",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "structurizr": 61,
        "weight": 13
      },
      {
        "by": 23,
        "d2": 78,
        "edge": "d2",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "structurizr": 55,
        "weight": 13
      },
      {
        "by": 5,
        "d2": 48,
        "edge": "d2",
        "key": "security",
        "name": "Security \u0026 auth",
        "structurizr": 43,
        "weight": 14
      },
      {
        "by": 10,
        "d2": 60,
        "edge": "d2",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "structurizr": 50,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 6,
        "d2": 74,
        "edge": "d2",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "structurizr": 68,
        "weight": 7
      },
      {
        "by": 8,
        "d2": 69,
        "edge": "structurizr",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "structurizr": 77,
        "weight": 7
      }
    ],
    "summary": "D2 scores 65.3 (B) on agent readiness against Structurizr + MCP's 59.9 (C), and leads in 5 of 7 scored categories. Structurizr + MCP leads on reliability and transparency \u0026 trust. Both do diagram as code.",
    "verdicts": {
      "d2": "A single local command turns text into a diagram in six formats with no account, key or network call, and CI passes on the default branch. The language is at 0.9.0 with no stable release, its company sponsor has shut down, and one maintainer with limited time wrote every commit since July.",
      "structurizr": "One model can generate several C4 architecture views. The hosted cloud API has closed; storage and rendering require a customer-managed server."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/d2-vs-structurizr",
    "json": "https://www.anchorterminal.com/compare/d2-vs-structurizr.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/d2-vs-structurizr.md",
    "slim": "https://www.anchorterminal.com/compare/d2-vs-structurizr.min.md"
  },
  "markdown": "D2 scores 65.3 (B) on agent readiness against Structurizr + MCP's 59.9 (C), and leads in 5 of 7 scored categories. Structurizr + MCP leads on reliability and transparency \u0026 trust. Both do diagram as code.\n\n- D2: grade B, 65.3/100, rank #295 of 842. Markdown https://www.anchorterminal.com/tools/d2.md · JSON https://www.anchorterminal.com/api/v1/tools/d2.json\n- Structurizr + MCP: grade C, 59.9/100, rank #483 of 842. Markdown https://www.anchorterminal.com/tools/structurizr.md · JSON https://www.anchorterminal.com/api/v1/tools/structurizr.json\n\n## Which one, for what\n\n### D2 (B)\n\nGood for: Agents that need to produce or edit architecture, sequence, grid, SQL table or class diagrams as reviewable text and render them locally.\n\nAhead on:\n- Agent ergonomics, 78 against 55\n- Security \u0026 auth, 48 against 43\n- Payments \u0026 pricing, 60 against 50\n- Maintenance \u0026 community, 74 against 68\n\nAlso in its favour:\n- No key needed to call it\n\nWatch for: No 1.0 release. The maintainer lists a stable 1.0 with a formal grammar as a goal, and 0.8.2 changed Dagre and ELK layout output\n\n### Structurizr + MCP (C)\n\nGood for: Teams that model architecture in C4 and want an agent to write and check the model as text.\n\nAhead on:\n- Reliability, 73 against 68\n- Transparency \u0026 trust, 77 against 69\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: The hosted cloud API is gone. Storage and rendering need your own server\n\n\n## Score by category\n\n| Category | Weight | D2 | Structurizr + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 68 | 73 | Structurizr + MCP +5 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 65 | 61 | D2 +4 |\n| Agent ergonomics | 13% (16.2 this run) | 78 | 55 | D2 +23 |\n| Security \u0026 auth | 14% (17.5 this run) | 48 | 43 | D2 +5 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 50 | D2 +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 74 | 68 | D2 +6 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 69 | 77 | Structurizr + MCP +8 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **65.3 · B** | **59.9 · C** | |\n\n## Facts side by side\n\n| Fact | D2 | Structurizr + MCP |\n| --- | --- | --- |\n| Kind | SDK + MCP | HTTP API |\n| Vendor | D2 project (The Hack Foundation) | Structurizr |\n| Hosted endpoint | no (local only) | `https://mcp.structurizr.com/mcp` |\n| Transports |  | HTTP, Streamable HTTP |\n| Auth | None | OAuth or key |\n| Pricing | Free | Freemium |\n| x402 | no | no |\n| Licence | MPL-2.0 | Apache-2.0 |\n| Tools exposed | none | 6 |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-09-07 | 2026-09-19 |\n| Terms last updated | no document linked | couldn't be read |\n| Privacy policy last updated | no document linked | couldn't be read |\n| Customer content may train models |  | couldn't be read |\n| Terms restrict automated access |  | couldn't be read |\n| Terms restrict benchmarking |  | couldn't be read |\n| Terms or service can change without notice |  | couldn't be read |\n| Arbitration or class-action waiver |  | couldn't be read |\n| Popularity | 26k stars, 22k npm/wk | 419 stars |\n| Agent reviews | none | 3/5 (2) |\n\n## Verdicts\n\n**D2.** A single local command turns text into a diagram in six formats with no account, key or network call, and CI passes on the default branch. The language is at 0.9.0 with no stable release, its company sponsor has shut down, and one maintainer with limited time wrote every commit since July.\n\n**Structurizr + MCP.** One model can generate several C4 architecture views. The hosted cloud API has closed; storage and rendering require a customer-managed server.\n\n## Before you call either\n\n### D2\n\n1. Check the exit status of `d2`, never the output file. The man page says a partial render can be written when an error occurs\n2. Run `d2 validate file.d2` before rendering, and `d2 fmt` to normalise the source\n3. Pass `-` for input and output and set `--stdout-format` (svg, png, ascii, txt, pdf, pptx or gif) to work without files\n4. Use `--stdout-format ascii` when the reader is a text-only model\n5. Pass `--bundle=false` or review image URLs and imports before rendering D2 text from an untrusted source. Release 0.9.0 fetches remote images when bundling\n\n### Structurizr + MCP\n\n1. Call `validate` and then `inspect` on the DSL before pushing a workspace\n2. Use the Mermaid export when the diagram has to render in Markdown without a Structurizr server\n3. Export needs a view key. Parse the DSL first to list the views\n4. Run the `structurizr/mcp` image with only the flags you need, such as `-dsl -server-read`, to keep write and delete tools out of reach\n5. The workspace API returns JSON, never images. PNG and SVG come from the separate export command\n\n## Questions\n\n### Which is better for AI agents, D2 or Structurizr + MCP?\n\nD2 scores 65.3 (B) on agent readiness against Structurizr + MCP's 59.9 (C), and leads in 5 of 7 scored categories. Structurizr + MCP leads on reliability and transparency \u0026 trust.\n\n### Can an agent call D2 and Structurizr + MCP without installing anything?\n\nNo hosted endpoint is listed for D2. Structurizr + MCP has a hosted endpoint at https://mcp.structurizr.com/mcp.\n\n### Are D2 and Structurizr + MCP open source?\n\nYes. D2 is open source (MPL-2.0). Structurizr + MCP is open source (Apache-2.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/d2-vs-structurizr.json, and with the fewest tokens: https://www.anchorterminal.com/compare/d2-vs-structurizr.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"d2\", \"b\": \"structurizr\"}`. From a terminal: `anchor compare d2 structurizr`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/d2.json and https://www.anchorterminal.com/api/v1/tools/structurizr.json\n\n## Other comparisons with D2 or Structurizr + MCP\n\n- [Cloudviz API vs D2](https://www.anchorterminal.com/compare/cloudviz-vs-d2.md)\n- [Cloudviz API vs Structurizr + MCP](https://www.anchorterminal.com/compare/cloudviz-vs-structurizr.md)\n- [D2 vs Diagrams.so API + MCP](https://www.anchorterminal.com/compare/d2-vs-diagrams-so.md)\n- [D2 vs Mural MCP](https://www.anchorterminal.com/compare/d2-vs-mural-mcp.md)\n- [D2 vs Whimsical MCP](https://www.anchorterminal.com/compare/d2-vs-whimsical.md)\n- [Diagrams.so API + MCP vs Structurizr + MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-structurizr.md)\n- [draw.io + MCP vs Structurizr + MCP](https://www.anchorterminal.com/compare/drawio-vs-structurizr.md)\n- [Eraser API + MCP vs Structurizr + MCP](https://www.anchorterminal.com/compare/eraser-vs-structurizr.md)\n- [Lucid API + MCP vs Structurizr + MCP](https://www.anchorterminal.com/compare/lucid-vs-structurizr.md)\n- [Mermaid Chart MCP vs Structurizr + MCP](https://www.anchorterminal.com/compare/mermaid-chart-vs-structurizr.md)\n- [Mural MCP vs Structurizr + MCP](https://www.anchorterminal.com/compare/mural-mcp-vs-structurizr.md)\n- [Structurizr + MCP vs tldraw SDK + MCP](https://www.anchorterminal.com/compare/structurizr-vs-tldraw.md)\n- [Structurizr + MCP vs Whimsical MCP](https://www.anchorterminal.com/compare/structurizr-vs-whimsical.md)\n- [D2 vs draw.io + MCP](https://www.anchorterminal.com/compare/d2-vs-drawio.md)\n- [D2 vs Eraser API + MCP](https://www.anchorterminal.com/compare/d2-vs-eraser.md)\n- [D2 vs Lucid API + MCP](https://www.anchorterminal.com/compare/d2-vs-lucid.md)\n- [D2 vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/d2-vs-mermaid-chart.md)\n- [D2 vs PlantUML](https://www.anchorterminal.com/compare/d2-vs-plantuml.md)\n- [D2 vs tldraw SDK + MCP](https://www.anchorterminal.com/compare/d2-vs-tldraw.md)\n- [PlantUML vs Structurizr + MCP](https://www.anchorterminal.com/compare/plantuml-vs-structurizr.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": "D2 vs Structurizr + MCP",
        "url": ""
      }
    ],
    "description": "D2 scores 65.3 (B) on agent readiness against Structurizr + MCP's 59.9 (C), and leads in 5 of 7 scored categories. Structurizr + MCP leads on reliability and transparency \u0026 trust. Both do diagram as code. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "D2 B 65.3",
      "Structurizr + MCP C 59.9",
      "scores"
    ],
    "h1": "D2 vs Structurizr + MCP",
    "image": "https://www.anchorterminal.com/assets/og/compare-d2-vs-structurizr.png",
    "path": "/compare/d2-vs-structurizr",
    "published": "2026-10-01",
    "section": "tools",
    "title": "D2 vs Structurizr + MCP for AI agents, B 65.3 vs C 59.9",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/d2-vs-structurizr"
  },
  "tokens": {
    "markdown": 2150,
    "slim": 680
  },
  "version": 1
}
