{
  "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 Mural MCP's 41.9 (E), and leads in 5 of 7 scored categories. Mural MCP leads on security \u0026 auth.",
    "b": {
      "slug": "mural-mcp",
      "name": "Mural MCP",
      "vendor": "Tactivos, Inc. (d/b/a Mural)",
      "vendorUrl": "https://www.mural.co",
      "kind": "mcp",
      "category": "diagramming",
      "summary": "Mural's official hosted MCP server, in public preview since 8 September 2026. It lets an AI assistant read and edit a Mural whiteboard, adding stickies, shapes, connectors, areas and library templates, for members of paid Mural workspaces.",
      "url": "https://www.anchorterminal.com/tools/mural-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/mural-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/mural-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mural-mcp.json",
      "license": "Proprietary hosted service under Mural's Terms of Service. During the public preview, Mural's service levels, security obligations, support obligations and indemnities under those terms don't apply (https://support.mural.co/s/article/MCP-preview)",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://mcp-canvas.mural.co/mcp",
      "packages": [],
      "auth": "oauth",
      "authNotes": "OAuth only, no API keys. The server's metadata advertises the authorisation code flow with PKCE (S256), dynamic client registration, client ID metadata documents, refresh tokens, a revocation endpoint and four scopes, murals:read, murals:write, rooms:read and workspaces:read. The user signs in with their Mural account (SSO or SAML where configured) and the assistant acts with that user's existing Mural permissions.",
      "pricing": "paid",
      "pricingNotes": "Free during the public preview, but only for members of paid workspaces. Team+ is $9.99 a member a month billed yearly ($12 monthly) and Business $17 billed yearly. The Free plan is excluded. Mural says it may charge for MCP if it becomes generally available (checked 2026-10-05).",
      "priceSummary": "$9.99 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the MCP help article, the MCP landing page, the pricing page or the server's OAuth metadata (checked 2026-10-05).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-05"
      },
      "docsUrl": "https://support.mural.co/s/article/MCP-preview",
      "registryName": "co.mural/mural",
      "capabilities": [
        "diagram.create",
        "diagram.edit",
        "design.canvas"
      ],
      "tags": [
        "hosted",
        "mcp",
        "oauth",
        "preview",
        "closed-source",
        "paid-plan",
        "status-page",
        "bug-bounty",
        "soc2"
      ],
      "lastRelease": "2026-10-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 41.9,
        "grade": "E",
        "agentReady": false,
        "rank": 795,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 9,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 26,
          "maintenance": 75,
          "payments": 10,
          "reliability": 35,
          "schema": 30,
          "security": 72,
          "transparency": 61
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-10-05"
        },
        "negative": 0,
        "verdict": "Mural's own MCP server signs in by OAuth with read and write scopes and logs every agent action in the mural's audit trail. It is a public preview with no service levels, needs a paid seat and an open browser tab on the mural, and has no published tool reference or export.",
        "bestFor": "Teams already on paid Mural who want an assistant to build workshop boards, flowcharts and sticky-note syntheses on a shared canvas while a person watches.",
        "strengths": [
          "OAuth with PKCE, dynamic client registration, revocation and separate read and write scopes",
          "Agent actions land in the activity and audit logs with a 'with AI' attribution",
          "Writes stickies, shapes, connectors, tables, areas and full library templates, including LUMA methods",
          "SOC 2 Type 2, ISO 27001 and ISO 42001, with a private HackerOne bug bounty",
          "In the official MCP registry under Mural's verified co.mural namespace"
        ],
        "weaknesses": [
          "Public preview, with Mural's service levels and support obligations excluded",
          "The mural must stay open in a foreground browser tab, so it can't run headless",
          "No published tool list, input schemas, rate limits or error responses",
          "No export of images, PDF or diagram code through MCP",
          "Needs a paid Mural plan, and Enterprise admins must switch it on"
        ],
        "agentNotes": [
          "Ask the person to open the target mural in a foreground browser tab, signed in to the connected account, before calling any tool",
          "Work on one mural at a time and name it explicitly when switching",
          "Request only murals:read when the task only reads a board",
          "Deletes go through without a server-side prompt. Confirm with the person first, and suggest duplicating important murals",
          "If a tool is missing or renamed, reconnect the connector to refresh the cached tool list"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 1,
        "avgRating": 2,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 41.9
          }
        ],
        "editorialScores": {
          "ergonomics": 26,
          "maintenance": 75,
          "payments": 10,
          "reliability": 35,
          "schema": 30,
          "security": 72,
          "transparency": 51
        },
        "provenanceScore": 70
      },
      "connect": {
        "config": {
          "mcpServers": {
            "mural": {
              "url": "https://mcp-canvas.mural.co/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/diagram.create",
        "tool": "https://letme.dev/mural-mcp"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Team+ plan",
          "unit": "seat-month",
          "usd": 9.99,
          "note": "per member, billed yearly ($12 billed monthly). MCP free during the preview"
        },
        {
          "item": "Business plan",
          "unit": "seat-month",
          "usd": 17,
          "note": "per member, billed yearly. Adds SAML SSO"
        }
      ],
      "provenance": {
        "legalEntity": "Tactivos, Inc. (d/b/a Mural)",
        "domain": "mural.co",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://www.mural.co/terms/terms-of-service",
        "privacy": "https://www.mural.co/terms/privacy-statement",
        "statusPage": "https://status.mural.co",
        "changelog": "https://www.mural.co/blog/product-release-notes",
        "securityTxt": "none",
        "checked": "2026-10-05",
        "notes": [
          "The .co registry has no RDAP service we could query, so the registration date is blank. The MCP server runs on mcp-canvas.mural.co",
          "The site footer names Tactivos, Inc. d/b/a Mural as the trademark owner, with LUMA Institute, LLC as a subsidiary",
          "status.mural.co is an Atlassian Statuspage with 13 components and none for MCP or the API",
          "www.mural.co/.well-known/security.txt returns 404 and app.mural.co returns the web app's HTML. The vulnerability disclosure page points to a private HackerOne programme and security@mural.co",
          "Product release notes are weekly posts on the Mural blog. The developer API changelog's last entry is from December 2023"
        ],
        "score": 70
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/mural-mcp.json",
      "live": {
        "slug": "mural-mcp",
        "probe": {
          "target": "https://mcp-canvas.mural.co/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-10-09T11:46:34.788464809Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 283,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 264,
          "p95ms24h": 318,
          "samples24h": 259,
          "samples30d": 935,
          "days": [
            {
              "date": "2026-10-06",
              "probes": 270,
              "ok": 270
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 125,
              "ok": 125
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.mural.co",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-09T11:39:55.714903492Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "co.mural/mural",
            "version": "1.0.1",
            "seenAt": "2026-10-09T02:57:46.004536428Z"
          }
        ],
        "securityTxt": {
          "url": "https://mural.co/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:55.792528011Z"
        },
        "pages": [
          {
            "url": "https://www.mural.co/blog/product-release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:17.45539765Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "5afa57548ce4"
          },
          {
            "url": "https://www.mural.co/terms/privacy-statement",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:19.507374563Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "53fe9282321a"
          },
          {
            "url": "https://www.mural.co/terms/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:21.49757281Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f28ed9ca6ffd"
          }
        ],
        "mcpTools": {
          "url": "https://mcp-canvas.mural.co/mcp",
          "checkedAt": "2026-10-08T21:33:54.445681207Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-10-06T22:38:15.17024466Z"
        },
        "updatedAt": "2026-10-09T11:46:34.788464809Z"
      }
    },
    "facts": [
      {
        "a": "SDK + MCP",
        "b": "MCP server",
        "name": "Kind"
      },
      {
        "a": "D2 project (The Hack Foundation)",
        "b": "Tactivos, Inc. (d/b/a Mural)",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://mcp-canvas.mural.co/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MPL-2.0",
        "b": "Proprietary hosted service under Mural's Terms of Service. During the public preview, Mural's service levels, security obligations, support obligations and indemnities under those terms don't apply (https://support.mural.co/s/article/MCP-preview)",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "co.mural/mural",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-07",
        "b": "2026-10-05",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "2026-07-01",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "couldn't be read",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "26k stars, 22k npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2/5 (1)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "D2 scores 65.3 (B) on agent readiness against Mural MCP's 41.9 (E), and leads in 5 of 7 scored categories. Mural MCP leads on security \u0026 auth.",
        "question": "Which is better for AI agents, D2 or Mural MCP?"
      },
      {
        "answer": "No hosted endpoint is listed for D2. Mural MCP has a hosted endpoint at https://mcp-canvas.mural.co/mcp.",
        "question": "Can an agent call D2 and Mural MCP without installing anything?"
      },
      {
        "answer": "D2 is open source (MPL-2.0). No open-source release is listed for Mural MCP.",
        "question": "Are D2 and Mural MCP open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 68 against 35",
          "Schema \u0026 documentation, 65 against 30",
          "Agent ergonomics, 78 against 26",
          "Payments \u0026 pricing, 60 against 10",
          "Transparency \u0026 trust, 69 against 61"
        ],
        "also": [
          "No key needed to call it",
          "Open source"
        ],
        "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": [
          "Security \u0026 auth, 72 against 48"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "Teams already on paid Mural who want an assistant to build workshop boards, flowcharts and sticky-note syntheses on a shared canvas while a person watches.",
        "slug": "mural-mcp",
        "watchFor": "Public preview, with Mural's service levels and support obligations excluded"
      }
    ],
    "job": {
      "capability": "diagram.create",
      "name": "Diagram create"
    },
    "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-mural-mcp.json",
        "title": "Cloudviz API vs Mural MCP",
        "url": "https://www.anchorterminal.com/compare/cloudviz-vs-mural-mcp"
      },
      {
        "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-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-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/drawio-vs-mural-mcp.json",
        "title": "draw.io + MCP vs Mural MCP",
        "url": "https://www.anchorterminal.com/compare/drawio-vs-mural-mcp"
      },
      {
        "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/lucid-vs-mural-mcp.json",
        "title": "Lucid API + MCP vs Mural MCP",
        "url": "https://www.anchorterminal.com/compare/lucid-vs-mural-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mermaid-chart-vs-mural-mcp.json",
        "title": "Mermaid Chart MCP vs Mural MCP",
        "url": "https://www.anchorterminal.com/compare/mermaid-chart-vs-mural-mcp"
      },
      {
        "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/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/mural-mcp-vs-tldraw.json",
        "title": "Mural MCP vs tldraw SDK + MCP",
        "url": "https://www.anchorterminal.com/compare/mural-mcp-vs-tldraw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mural-mcp-vs-whimsical.json",
        "title": "Mural MCP vs Whimsical MCP",
        "url": "https://www.anchorterminal.com/compare/mural-mcp-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-structurizr.json",
        "title": "D2 vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/d2-vs-structurizr"
      },
      {
        "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"
      }
    ],
    "scores": [
      {
        "by": 33,
        "d2": 68,
        "edge": "d2",
        "key": "reliability",
        "mural-mcp": 35,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 35,
        "d2": 65,
        "edge": "d2",
        "key": "schema",
        "mural-mcp": 30,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 52,
        "d2": 78,
        "edge": "d2",
        "key": "ergonomics",
        "mural-mcp": 26,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 24,
        "d2": 48,
        "edge": "mural-mcp",
        "key": "security",
        "mural-mcp": 72,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 50,
        "d2": 60,
        "edge": "d2",
        "key": "payments",
        "mural-mcp": 10,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "d2": 74,
        "edge": "mural-mcp",
        "key": "maintenance",
        "mural-mcp": 75,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 8,
        "d2": 69,
        "edge": "d2",
        "key": "transparency",
        "mural-mcp": 61,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "D2 scores 65.3 (B) on agent readiness against Mural MCP's 41.9 (E), and leads in 5 of 7 scored categories. Mural MCP leads on security \u0026 auth. Both do diagram create.",
    "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.",
      "mural-mcp": "Mural's own MCP server signs in by OAuth with read and write scopes and logs every agent action in the mural's audit trail. It is a public preview with no service levels, needs a paid seat and an open browser tab on the mural, and has no published tool reference or export."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/d2-vs-mural-mcp",
    "json": "https://www.anchorterminal.com/compare/d2-vs-mural-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/d2-vs-mural-mcp.md",
    "slim": "https://www.anchorterminal.com/compare/d2-vs-mural-mcp.min.md"
  },
  "markdown": "D2 scores 65.3 (B) on agent readiness against Mural MCP's 41.9 (E), and leads in 5 of 7 scored categories. Mural MCP leads on security \u0026 auth. Both do diagram create.\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- Mural MCP: grade E, 41.9/100, rank #795 of 842. Markdown https://www.anchorterminal.com/tools/mural-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/mural-mcp.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- Reliability, 68 against 35\n- Schema \u0026 documentation, 65 against 30\n- Agent ergonomics, 78 against 26\n- Payments \u0026 pricing, 60 against 10\n- Transparency \u0026 trust, 69 against 61\n\nAlso in its favour:\n- No key needed to call it\n- Open source\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### Mural MCP (E)\n\nGood for: Teams already on paid Mural who want an assistant to build workshop boards, flowcharts and sticky-note syntheses on a shared canvas while a person watches.\n\nAhead on:\n- Security \u0026 auth, 72 against 48\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: Public preview, with Mural's service levels and support obligations excluded\n\n\n## Score by category\n\n| Category | Weight | D2 | Mural MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 68 | 35 | D2 +33 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 65 | 30 | D2 +35 |\n| Agent ergonomics | 13% (16.2 this run) | 78 | 26 | D2 +52 |\n| Security \u0026 auth | 14% (17.5 this run) | 48 | 72 | Mural MCP +24 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 10 | D2 +50 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 74 | 75 | Mural MCP +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 69 | 61 | D2 +8 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **65.3 · B** | **41.9 · E** | |\n\n## Facts side by side\n\n| Fact | D2 | Mural MCP |\n| --- | --- | --- |\n| Kind | SDK + MCP | MCP server |\n| Vendor | D2 project (The Hack Foundation) | Tactivos, Inc. (d/b/a Mural) |\n| Hosted endpoint | no (local only) | `https://mcp-canvas.mural.co/mcp` |\n| Transports |  | Streamable HTTP |\n| Auth | None | OAuth |\n| Pricing | Free | Paid |\n| x402 | no | no |\n| Licence | MPL-2.0 | Proprietary hosted service under Mural's Terms of Service. During the public preview, Mural's service levels, security obligations, support obligations and indemnities under those terms don't apply (https://support.mural.co/s/article/MCP-preview) |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| MCP registry | not listed | `co.mural/mural` |\n| Last release | 2026-09-07 | 2026-10-05 |\n| Terms last updated | no document linked | 2026-07-01 |\n| Privacy policy last updated | no document linked | couldn't be read |\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 | 26k stars, 22k npm/wk | none |\n| Agent reviews | none | 2/5 (1) |\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**Mural MCP.** Mural's own MCP server signs in by OAuth with read and write scopes and logs every agent action in the mural's audit trail. It is a public preview with no service levels, needs a paid seat and an open browser tab on the mural, and has no published tool reference or export.\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### Mural MCP\n\n1. Ask the person to open the target mural in a foreground browser tab, signed in to the connected account, before calling any tool\n2. Work on one mural at a time and name it explicitly when switching\n3. Request only murals:read when the task only reads a board\n4. Deletes go through without a server-side prompt. Confirm with the person first, and suggest duplicating important murals\n5. If a tool is missing or renamed, reconnect the connector to refresh the cached tool list\n\n## Questions\n\n### Which is better for AI agents, D2 or Mural MCP?\n\nD2 scores 65.3 (B) on agent readiness against Mural MCP's 41.9 (E), and leads in 5 of 7 scored categories. Mural MCP leads on security \u0026 auth.\n\n### Can an agent call D2 and Mural MCP without installing anything?\n\nNo hosted endpoint is listed for D2. Mural MCP has a hosted endpoint at https://mcp-canvas.mural.co/mcp.\n\n### Are D2 and Mural MCP open source?\n\nD2 is open source (MPL-2.0). No open-source release is listed for Mural MCP.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/d2-vs-mural-mcp.json, and with the fewest tokens: https://www.anchorterminal.com/compare/d2-vs-mural-mcp.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"d2\", \"b\": \"mural-mcp\"}`. From a terminal: `anchor compare d2 mural-mcp`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/d2.json and https://www.anchorterminal.com/api/v1/tools/mural-mcp.json\n\n## Other comparisons with D2 or Mural MCP\n\n- [Cloudviz API vs D2](https://www.anchorterminal.com/compare/cloudviz-vs-d2.md)\n- [Cloudviz API vs Mural MCP](https://www.anchorterminal.com/compare/cloudviz-vs-mural-mcp.md)\n- [D2 vs Diagrams.so API + MCP](https://www.anchorterminal.com/compare/d2-vs-diagrams-so.md)\n- [D2 vs Whimsical MCP](https://www.anchorterminal.com/compare/d2-vs-whimsical.md)\n- [Diagrams.so API + MCP vs Mural MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-mural-mcp.md)\n- [draw.io + MCP vs Mural MCP](https://www.anchorterminal.com/compare/drawio-vs-mural-mcp.md)\n- [Eraser API + MCP vs Mural MCP](https://www.anchorterminal.com/compare/eraser-vs-mural-mcp.md)\n- [Lucid API + MCP vs Mural MCP](https://www.anchorterminal.com/compare/lucid-vs-mural-mcp.md)\n- [Mermaid Chart MCP vs Mural MCP](https://www.anchorterminal.com/compare/mermaid-chart-vs-mural-mcp.md)\n- [Mural MCP vs PlantUML](https://www.anchorterminal.com/compare/mural-mcp-vs-plantuml.md)\n- [Mural MCP vs Structurizr + MCP](https://www.anchorterminal.com/compare/mural-mcp-vs-structurizr.md)\n- [Mural MCP vs tldraw SDK + MCP](https://www.anchorterminal.com/compare/mural-mcp-vs-tldraw.md)\n- [Mural MCP vs Whimsical MCP](https://www.anchorterminal.com/compare/mural-mcp-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 Structurizr + MCP](https://www.anchorterminal.com/compare/d2-vs-structurizr.md)\n- [D2 vs tldraw SDK + MCP](https://www.anchorterminal.com/compare/d2-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": "D2 vs Mural MCP",
        "url": ""
      }
    ],
    "description": "D2 scores 65.3 (B) on agent readiness against Mural MCP's 41.9 (E), and leads in 5 of 7 scored categories. Mural MCP leads on security \u0026 auth. Both do diagram create. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "D2 B 65.3",
      "Mural MCP E 41.9",
      "scores"
    ],
    "h1": "D2 vs Mural MCP",
    "image": "https://www.anchorterminal.com/assets/og/compare-d2-vs-mural-mcp.png",
    "path": "/compare/d2-vs-mural-mcp",
    "published": "2026-10-01",
    "section": "tools",
    "title": "D2 vs Mural MCP for AI agents, B 65.3 vs E 41.9 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/d2-vs-mural-mcp"
  },
  "tokens": {
    "markdown": 2200,
    "slim": 780
  },
  "version": 1
}
