{
  "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": 343,
        "ranked": true,
        "rankOf": 1084,
        "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",
      "live": {
        "slug": "d2",
        "versions": [
          {
            "registry": "github",
            "name": "d2lang/d2",
            "version": "v0.9.0",
            "released": "2026-09-07",
            "seenAt": "2026-10-13T22:51:50.235585192Z"
          },
          {
            "registry": "npm",
            "name": "@d2lang/d2",
            "version": "0.1.34",
            "seenAt": "2026-10-13T22:51:49.313227859Z"
          }
        ],
        "githubStars": 25611,
        "npmWeekly": 17251,
        "securityTxt": {
          "url": "https://d2lang.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-14T15:46:22.820656696Z"
        },
        "domain": {
          "domain": "d2lang.com",
          "registered": "2022-10-24",
          "source": "https://rdap.verisign.com/com/v1/domain/d2lang.com",
          "checkedAt": "2026-10-11T13:15:39.842559297Z"
        },
        "pages": [
          {
            "url": "https://d2lang.com/releases/intro/",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-14T20:55:53.390471778Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "9eb891f2acbe"
          }
        ],
        "updatedAt": "2026-10-14T20:55:53.390471778Z"
      }
    },
    "answer": "D2 scores 65.3 (B) on agent readiness against ExcaliClaw's 51.4 (D), and leads in every scored category.",
    "b": {
      "slug": "excaliclaw",
      "name": "ExcaliClaw",
      "vendor": "ExcaliClaw",
      "vendorUrl": "https://excaliclaw.com",
      "kind": "mcp",
      "category": "diagramming",
      "summary": "ExcaliClaw is a hosted workspace for hand-drawn diagrams built on the Excalidraw editor, with collections, search and live collaboration. Agents reach it through a remote MCP server with OAuth sign-in and a REST API with personal keys.",
      "url": "https://www.anchorterminal.com/tools/excaliclaw",
      "markdownUrl": "https://www.anchorterminal.com/tools/excaliclaw.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/excaliclaw.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/excaliclaw.json",
      "repo": "https://github.com/mounirb-dev/ExcaliClaw-frontend",
      "license": "The hosted service, its API and its MCP server are closed, under ExcaliClaw's terms of service. The web client is published as LGPL-3.0, as a modified version of ExcaliDash",
      "transports": [
        "streamable-http",
        "http"
      ],
      "remoteUrl": "https://excaliclaw.com/mcp",
      "packages": [],
      "auth": "mixed",
      "authNotes": "The MCP server takes OAuth 2.1 tokens only, with dynamic client registration and PKCE (S256). A person signs in and approves the client in the browser, and the single scope `drawings` grants every MCP tool on that account. The REST API takes personal keys (`Authorization: Bearer exc_...`) created in Settings, shown once, revocable, with full read and write access to the account's drawings and collections and no narrower option. REST keys are refused by the MCP server.",
      "pricing": "freemium",
      "pricingNotes": "Free €0 with 200 drawings, Starter €9 a month (€90 a year, up to 5 members), Pro €29 a month (€290 a year, up to 20 members, extra members €3 a month), Enterprise on request. Prices exclude VAT. MCP use is unlimited and not counted against plan limits on every plan, including Free, which needs no card. Payments run through Dodo Payments as merchant of record (https://excaliclaw.com/pricing, checked 2026-10-14).",
      "priceSummary": "Freemium",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms.txt, the manual, the MCP reference, the REST API page or the pricing page. The REST API answers 402 only for an unpaid subscription (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": 37,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://excaliclaw.com/manual/mcp-referencia",
      "llmsTxt": "https://excaliclaw.com/llms.txt",
      "registryName": "com.excaliclaw/excaliclaw",
      "capabilities": [
        "diagram.create",
        "diagram.edit",
        "diagram.as-code",
        "diagram.export",
        "diagram.architecture"
      ],
      "tags": [
        "hosted",
        "mcp",
        "oauth",
        "llms-txt",
        "freemium",
        "status-page",
        "eu",
        "new",
        "closed-source"
      ],
      "lastRelease": "2026-10-03",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 51.4,
        "grade": "D",
        "agentReady": false,
        "rank": 804,
        "ranked": true,
        "rankOf": 1084,
        "categoryRank": 12,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 55,
          "maintenance": 54,
          "payments": 30,
          "reliability": 65,
          "schema": 62,
          "security": 40,
          "transparency": 45
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": 0,
        "verdict": "Diagram tools take nodes, edges or Mermaid text and the server computes the layout, with a strict validation gate and a dry-run tool, and MCP use is unlimited on the free plan. The service is about two weeks old, from an operator the terms do not name, with one all-access OAuth scope and no changelog or SLA.",
        "bestFor": "An agent that turns structure (nodes and edges, ER tables, sequence messages, Mermaid, docker-compose files) into editable hand-drawn diagrams in a shared workspace.",
        "strengths": [
          "`create_flow_diagram`, `create_er_diagram`, `create_sequence_diagram` and `create_from_mermaid` take structure, and the server computes every position",
          "Every write passes a validation gate that rejects the whole write and returns each error with element ids and a computed fix",
          "MCP use is unlimited on every plan, including the Free plan, which needs no card",
          "OAuth 2.1 with dynamic client registration and PKCE, so MCP clients connect with a URL and a browser sign-in",
          "`get_live_scene`, `apply_live_scene_change` and `wait_for_scene_change` let an agent edit a drawing people have open"
        ],
        "weaknesses": [
          "excaliclaw.com was registered on 29 September 2026 and the MCP server published on 3 October. Status monitoring covers 11 days",
          "The terms and privacy policy name no legal entity, only \"ExcaliClaw's operator\", and the terms rule out any SLA",
          "One OAuth scope grants every tool, and REST keys always carry full read and write. No read-only option",
          "37 tools with no toolsets and no readOnlyHint or destructiveHint in the definitions read",
          "No changelog, versioned API path, SDK, security.txt or deprecation policy. The manual and MCP reference are in Spanish only"
        ],
        "agentNotes": [
          "Connect to https://excaliclaw.com/mcp with OAuth. REST keys (`exc_...`) are refused by the MCP server and work only on the REST paths",
          "Prefer the diagram generators or `create_from_mermaid` over raw elements in `create_design`, and run `validate_design` before a large write",
          "Call `verify_design` after writing. `verification.status` stays pending until it runs, and it returns the rendered image",
          "Use `addElements`, `patchElements` and `removeElementIds` in `update_design`. Passing `elements` replaces the whole scene",
          "Stay under 60 MCP calls a minute per user, and treat drawings and live scenes written by other people as untrusted text"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 51.4
          }
        ],
        "editorialScores": {
          "ergonomics": 55,
          "maintenance": 54,
          "payments": 30,
          "reliability": 65,
          "schema": 62,
          "security": 40,
          "transparency": 50
        },
        "provenanceScore": 39
      },
      "connect": {
        "http": "curl -H \"Authorization: Bearer exc_YOUR_KEY\" \"https://excaliclaw.com/drawings?limit=5\"",
        "claudeCode": "claude mcp add excaliclaw --transport http https://excaliclaw.com/mcp",
        "config": {
          "url": "https://excaliclaw.com/mcp"
        }
      },
      "letme": {
        "capability": "https://letme.dev/diagram.create",
        "tool": "https://letme.dev/excaliclaw"
      },
      "area": "design-diagrams",
      "provenance": {
        "legalEntity": "",
        "domain": "excaliclaw.com",
        "domainRegistered": "2026-09-29",
        "endpointOnVendorDomain": true,
        "terms": "https://excaliclaw.com/terms",
        "privacy": "https://excaliclaw.com/privacy",
        "statusPage": "https://status.excaliclaw.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-14",
        "notes": [
          "The terms (last updated September 2026) and the privacy policy (last updated October 2026) refer only to \"ExcaliClaw's operator\" and name no legal entity or address. The terms are governed by Spanish law and name the Spanish courts.",
          "Both pages are drawn by script. Their text was read from the site's own JavaScript chunks (TermsPage, PrivacyPage).",
          "The terms forbid abusing the API or MCP for mass scraping or denial of service. No clause forbids automated access as such.",
          "https://excaliclaw.com/.well-known/security.txt and /security.txt return 404.",
          "RDAP for excaliclaw.com gives a registration date of 2026-09-29, registrar Spaceship, Inc.",
          "robots.txt allows the public pages and llms.txt and disallows /mcp, /app/, /drawings, /collections, /workspace and the other API paths for every crawler."
        ],
        "score": 39
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/excaliclaw.json",
      "live": {
        "slug": "excaliclaw",
        "probe": {
          "target": "https://excaliclaw.com/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-10-14T22:57:38.020617805Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 420,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 227,
          "p95ms24h": 420,
          "samples24h": 31,
          "samples30d": 31,
          "days": [
            {
              "date": "2026-10-14",
              "probes": 31,
              "ok": 31
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.excaliclaw.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-14T21:45:20.394295982Z"
        },
        "pages": [
          {
            "url": "https://excaliclaw.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-14T21:00:21.854880731Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e3b0c44298fc"
          },
          {
            "url": "https://excaliclaw.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-14T21:00:23.985844439Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e3b0c44298fc"
          },
          {
            "url": "https://excaliclaw.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-14T21:00:25.910952606Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e3b0c44298fc"
          }
        ],
        "mcpTools": {
          "url": "https://excaliclaw.com/mcp",
          "checkedAt": "2026-10-14T22:17:37.024266286Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-10-14T22:17:37.024266286Z"
        },
        "updatedAt": "2026-10-14T22:57:38.020617805Z"
      }
    },
    "facts": [
      {
        "a": "SDK + MCP",
        "b": "MCP server",
        "name": "Kind"
      },
      {
        "a": "D2 project (The Hack Foundation)",
        "b": "ExcaliClaw",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://excaliclaw.com/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "Streamable HTTP, 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": "The hosted service, its API and its MCP server are closed, under ExcaliClaw's terms of service. The web client is published as LGPL-3.0, as a modified version of ExcaliDash",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "37",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "com.excaliclaw/excaliclaw",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-07",
        "b": "2026-10-03",
        "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": "0 stars",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "D2 scores 65.3 (B) on agent readiness against ExcaliClaw's 51.4 (D), and leads in every scored category.",
        "question": "Which is better for AI agents, D2 or ExcaliClaw?"
      },
      {
        "answer": "No hosted endpoint is listed for D2. ExcaliClaw has a hosted endpoint at https://excaliclaw.com/mcp.",
        "question": "Can an agent call D2 and ExcaliClaw without installing anything?"
      },
      {
        "answer": "D2 is open source (MPL-2.0). No open-source release is listed for ExcaliClaw.",
        "question": "Are D2 and ExcaliClaw open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Agent ergonomics, 78 against 55",
          "Security \u0026 auth, 48 against 40",
          "Payments \u0026 pricing, 60 against 30",
          "Maintenance \u0026 community, 74 against 54",
          "Transparency \u0026 trust, 69 against 45"
        ],
        "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": null,
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "An agent that turns structure (nodes and edges, ER tables, sequence messages, Mermaid, docker-compose files) into editable hand-drawn diagrams in a shared workspace.",
        "slug": "excaliclaw",
        "watchFor": "excaliclaw.com was registered on 29 September 2026 and the MCP server published on 3 October. Status monitoring covers 11 days"
      }
    ],
    "job": {
      "capability": "diagram.as-code",
      "name": "Diagrams 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-excaliclaw.json",
        "title": "Cloudviz API vs ExcaliClaw",
        "url": "https://www.anchorterminal.com/compare/cloudviz-vs-excaliclaw"
      },
      {
        "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-mumble.json",
        "title": "D2 vs Mumble",
        "url": "https://www.anchorterminal.com/compare/d2-vs-mumble"
      },
      {
        "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-excaliclaw.json",
        "title": "Diagrams.so API + MCP vs ExcaliClaw",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-excaliclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/drawio-vs-excaliclaw.json",
        "title": "draw.io + MCP vs ExcaliClaw",
        "url": "https://www.anchorterminal.com/compare/drawio-vs-excaliclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eraser-vs-excaliclaw.json",
        "title": "Eraser API + MCP vs ExcaliClaw",
        "url": "https://www.anchorterminal.com/compare/eraser-vs-excaliclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-excalidraw.json",
        "title": "ExcaliClaw vs Excalidraw",
        "url": "https://www.anchorterminal.com/compare/excaliclaw-vs-excalidraw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-kroki.json",
        "title": "ExcaliClaw vs Kroki",
        "url": "https://www.anchorterminal.com/compare/excaliclaw-vs-kroki"
      },
      {
        "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-lucid.json",
        "title": "ExcaliClaw vs Lucid API + MCP",
        "url": "https://www.anchorterminal.com/compare/excaliclaw-vs-lucid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-mermaid-chart.json",
        "title": "ExcaliClaw vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/excaliclaw-vs-mermaid-chart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-mumble.json",
        "title": "ExcaliClaw vs Mumble",
        "url": "https://www.anchorterminal.com/compare/excaliclaw-vs-mumble"
      },
      {
        "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-mural-mcp.json",
        "title": "ExcaliClaw vs Mural MCP",
        "url": "https://www.anchorterminal.com/compare/excaliclaw-vs-mural-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-plantuml.json",
        "title": "ExcaliClaw vs PlantUML",
        "url": "https://www.anchorterminal.com/compare/excaliclaw-vs-plantuml"
      },
      {
        "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-structurizr.json",
        "title": "ExcaliClaw vs Structurizr + MCP",
        "url": "https://www.anchorterminal.com/compare/excaliclaw-vs-structurizr"
      },
      {
        "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-tldraw.json",
        "title": "ExcaliClaw vs tldraw SDK + MCP",
        "url": "https://www.anchorterminal.com/compare/excaliclaw-vs-tldraw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-whimsical.json",
        "title": "ExcaliClaw vs Whimsical MCP",
        "url": "https://www.anchorterminal.com/compare/excaliclaw-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-excalidraw.json",
        "title": "D2 vs Excalidraw",
        "url": "https://www.anchorterminal.com/compare/d2-vs-excalidraw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/d2-vs-kroki.json",
        "title": "D2 vs Kroki",
        "url": "https://www.anchorterminal.com/compare/d2-vs-kroki"
      },
      {
        "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": 3,
        "d2": 68,
        "edge": "d2",
        "excaliclaw": 65,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 3,
        "d2": 65,
        "edge": "d2",
        "excaliclaw": 62,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 23,
        "d2": 78,
        "edge": "d2",
        "excaliclaw": 55,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 8,
        "d2": 48,
        "edge": "d2",
        "excaliclaw": 40,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 30,
        "d2": 60,
        "edge": "d2",
        "excaliclaw": 30,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 20,
        "d2": 74,
        "edge": "d2",
        "excaliclaw": 54,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 24,
        "d2": 69,
        "edge": "d2",
        "excaliclaw": 45,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "D2 scores 65.3 (B) on agent readiness against ExcaliClaw's 51.4 (D), and leads in every scored category. Both do diagrams 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.",
      "excaliclaw": "Diagram tools take nodes, edges or Mermaid text and the server computes the layout, with a strict validation gate and a dry-run tool, and MCP use is unlimited on the free plan. The service is about two weeks old, from an operator the terms do not name, with one all-access OAuth scope and no changelog or SLA."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/d2-vs-excaliclaw",
    "json": "https://www.anchorterminal.com/compare/d2-vs-excaliclaw.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/d2-vs-excaliclaw.md",
    "slim": "https://www.anchorterminal.com/compare/d2-vs-excaliclaw.min.md"
  },
  "markdown": "D2 scores 65.3 (B) on agent readiness against ExcaliClaw's 51.4 (D), and leads in every scored category. Both do diagrams as code.\n\n- D2: grade B, 65.3/100, rank #343 of 1084. Markdown https://www.anchorterminal.com/tools/d2.md · JSON https://www.anchorterminal.com/api/v1/tools/d2.json\n- ExcaliClaw: grade D, 51.4/100, rank #804 of 1084. Markdown https://www.anchorterminal.com/tools/excaliclaw.md · JSON https://www.anchorterminal.com/api/v1/tools/excaliclaw.json\n- Best diagramming APIs and diagram-as-code for AI agents: https://www.anchorterminal.com/best/diagramming/index.md\n- All 128 diagrams comparisons: https://www.anchorterminal.com/compare/diagramming/index.md\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 40\n- Payments \u0026 pricing, 60 against 30\n- Maintenance \u0026 community, 74 against 54\n- Transparency \u0026 trust, 69 against 45\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### ExcaliClaw (D)\n\nGood for: An agent that turns structure (nodes and edges, ER tables, sequence messages, Mermaid, docker-compose files) into editable hand-drawn diagrams in a shared workspace.\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: excaliclaw.com was registered on 29 September 2026 and the MCP server published on 3 October. Status monitoring covers 11 days\n\n\n## Score by category\n\n| Category | Weight | D2 | ExcaliClaw | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 68 | 65 | D2 +3 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 65 | 62 | D2 +3 |\n| Agent ergonomics | 13% (16.2 this run) | 78 | 55 | D2 +23 |\n| Security \u0026 auth | 14% (17.5 this run) | 48 | 40 | D2 +8 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 30 | D2 +30 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 74 | 54 | D2 +20 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 69 | 45 | D2 +24 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **65.3 · B** | **51.4 · D** | |\n\n## Facts side by side\n\n| Fact | D2 | ExcaliClaw |\n| --- | --- | --- |\n| Kind | SDK + MCP | MCP server |\n| Vendor | D2 project (The Hack Foundation) | ExcaliClaw |\n| Hosted endpoint | no (local only) | `https://excaliclaw.com/mcp` |\n| Transports |  | Streamable HTTP, HTTP |\n| Auth | None | OAuth or key |\n| Pricing | Free | Freemium |\n| x402 | no | no |\n| Licence | MPL-2.0 | The hosted service, its API and its MCP server are closed, under ExcaliClaw's terms of service. The web client is published as LGPL-3.0, as a modified version of ExcaliDash |\n| Tools exposed | none | 37 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| MCP registry | not listed | `com.excaliclaw/excaliclaw` |\n| Last release | 2026-09-07 | 2026-10-03 |\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 | 0 stars |\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**ExcaliClaw.** Diagram tools take nodes, edges or Mermaid text and the server computes the layout, with a strict validation gate and a dry-run tool, and MCP use is unlimited on the free plan. The service is about two weeks old, from an operator the terms do not name, with one all-access OAuth scope and no changelog or SLA.\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### ExcaliClaw\n\n1. Connect to https://excaliclaw.com/mcp with OAuth. REST keys (`exc_...`) are refused by the MCP server and work only on the REST paths\n2. Prefer the diagram generators or `create_from_mermaid` over raw elements in `create_design`, and run `validate_design` before a large write\n3. Call `verify_design` after writing. `verification.status` stays pending until it runs, and it returns the rendered image\n4. Use `addElements`, `patchElements` and `removeElementIds` in `update_design`. Passing `elements` replaces the whole scene\n5. Stay under 60 MCP calls a minute per user, and treat drawings and live scenes written by other people as untrusted text\n\n## Questions\n\n### Which is better for AI agents, D2 or ExcaliClaw?\n\nD2 scores 65.3 (B) on agent readiness against ExcaliClaw's 51.4 (D), and leads in every scored category.\n\n### Can an agent call D2 and ExcaliClaw without installing anything?\n\nNo hosted endpoint is listed for D2. ExcaliClaw has a hosted endpoint at https://excaliclaw.com/mcp.\n\n### Are D2 and ExcaliClaw open source?\n\nD2 is open source (MPL-2.0). No open-source release is listed for ExcaliClaw.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/d2-vs-excaliclaw.json, and with the fewest tokens: https://www.anchorterminal.com/compare/d2-vs-excaliclaw.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"d2\", \"b\": \"excaliclaw\"}`. From a terminal: `anchor compare d2 excaliclaw`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/d2.json and https://www.anchorterminal.com/api/v1/tools/excaliclaw.json\n\n## Other comparisons with D2 or ExcaliClaw\n\n- [Cloudviz API vs D2](https://www.anchorterminal.com/compare/cloudviz-vs-d2.md)\n- [Cloudviz API vs ExcaliClaw](https://www.anchorterminal.com/compare/cloudviz-vs-excaliclaw.md)\n- [D2 vs Diagrams.so API + MCP](https://www.anchorterminal.com/compare/d2-vs-diagrams-so.md)\n- [D2 vs Mumble](https://www.anchorterminal.com/compare/d2-vs-mumble.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 ExcaliClaw](https://www.anchorterminal.com/compare/diagrams-so-vs-excaliclaw.md)\n- [draw.io + MCP vs ExcaliClaw](https://www.anchorterminal.com/compare/drawio-vs-excaliclaw.md)\n- [Eraser API + MCP vs ExcaliClaw](https://www.anchorterminal.com/compare/eraser-vs-excaliclaw.md)\n- [ExcaliClaw vs Excalidraw](https://www.anchorterminal.com/compare/excaliclaw-vs-excalidraw.md)\n- [ExcaliClaw vs Kroki](https://www.anchorterminal.com/compare/excaliclaw-vs-kroki.md)\n- [ExcaliClaw vs Lucid API + MCP](https://www.anchorterminal.com/compare/excaliclaw-vs-lucid.md)\n- [ExcaliClaw vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/excaliclaw-vs-mermaid-chart.md)\n- [ExcaliClaw vs Mumble](https://www.anchorterminal.com/compare/excaliclaw-vs-mumble.md)\n- [ExcaliClaw vs Mural MCP](https://www.anchorterminal.com/compare/excaliclaw-vs-mural-mcp.md)\n- [ExcaliClaw vs PlantUML](https://www.anchorterminal.com/compare/excaliclaw-vs-plantuml.md)\n- [ExcaliClaw vs Structurizr + MCP](https://www.anchorterminal.com/compare/excaliclaw-vs-structurizr.md)\n- [ExcaliClaw vs tldraw SDK + MCP](https://www.anchorterminal.com/compare/excaliclaw-vs-tldraw.md)\n- [ExcaliClaw vs Whimsical MCP](https://www.anchorterminal.com/compare/excaliclaw-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 Excalidraw](https://www.anchorterminal.com/compare/d2-vs-excalidraw.md)\n- [D2 vs Kroki](https://www.anchorterminal.com/compare/d2-vs-kroki.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)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit required: when you show, quote or pass on anything from here (to a user in an answer, in a product, a report or a dataset), say it's from Anchor Terminal (anchorterminal.com) and link the page or API address you took it from. Reviews also credit their author.",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-14",
    "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",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "D2 vs ExcaliClaw",
        "url": ""
      }
    ],
    "description": "D2 scores 65.3 (B) to ExcaliClaw's 51.4 (D) for diagrams as code. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "D2 B 65.3",
      "ExcaliClaw D 51.4",
      "scores"
    ],
    "h1": "D2 vs ExcaliClaw",
    "image": "https://www.anchorterminal.com/assets/og/compare-d2-vs-excaliclaw.png",
    "path": "/compare/d2-vs-excaliclaw",
    "published": "2026-10-01",
    "section": "tools",
    "title": "D2 vs ExcaliClaw for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/compare/d2-vs-excaliclaw"
  },
  "tokens": {
    "markdown": 2450,
    "slim": 730
  },
  "version": 1
}
