{
  "data": {
    "a": {
      "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"
      }
    },
    "answer": "ExcaliClaw scores 51.4 (D) on agent readiness against Mermaid Chart MCP's 31.4 (F), and leads in 5 of 7 scored categories. Mermaid Chart MCP leads on payments \u0026 pricing.",
    "b": {
      "slug": "mermaid-chart",
      "name": "Mermaid Chart MCP",
      "vendor": "Mermaid Chart",
      "vendorUrl": "https://mermaid.ai",
      "kind": "mcp",
      "category": "diagramming",
      "summary": "Hosted MCP server for Mermaid diagrams from mermaid.ai.",
      "url": "https://www.anchorterminal.com/tools/mermaid-chart",
      "markdownUrl": "https://www.anchorterminal.com/tools/mermaid-chart.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/mermaid-chart.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mermaid-chart.json",
      "transports": [
        "streamable-http",
        "sse"
      ],
      "remoteUrl": "https://mcp.mermaid.ai/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "@mermaidchart/sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "Render and validation tools need no auth. Account tools need a Mermaid Chart token generated in account settings and sent as the Authorization header (the docs show the raw token, no Bearer prefix). The TypeScript SDK uses OAuth.",
      "pricing": "freemium",
      "pricingNotes": "Basic $0 with 3 diagrams and 15 AI credits. Plus $10 a user a month billed yearly ($12 monthly) with unlimited diagrams and 300 AI credits a year. Premium $20 billed yearly ($24 monthly) with 2,000 AI credits a year and free viewer seats. Enterprise custom. The render tools on the MCP server are free without an account (https://mermaid.ai/pricing).",
      "priceSummary": "$12 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402 support in docs or pricing (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": 25,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 395,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://mermaid.ai/docs/ai/mcp-server",
      "registryName": "com.mermaidchart/mermaid-mcp",
      "capabilities": [
        "diagram.create",
        "diagram.as-code",
        "diagram.edit",
        "diagram.export"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "mcp",
        "diagram-as-code",
        "closed-source"
      ],
      "lastRelease": "2026-09-17",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 31.4,
        "grade": "F",
        "agentReady": false,
        "rank": 1028,
        "ranked": true,
        "rankOf": 1084,
        "categoryRank": 16,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 34,
          "maintenance": 53,
          "payments": 45,
          "reliability": 15,
          "schema": 32,
          "security": 20,
          "transparency": 45
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Validation and rendering work with no account or key. Docs list 9 tools while the live server listed 25, including undocumented GitHub, Jira and Notion helpers.",
        "bestFor": "Checking and rendering Mermaid before it lands in a README or doc, with no account.",
        "strengths": [
          "Validation and rendering work with no account or key",
          "Mermaid is plain-text diagram-as-code that renders natively on GitHub and many docs tools",
          "Hosted, nothing to install, streamable HTTP and SSE",
          "Official MIT TypeScript SDK, release 0.2.8 on 17 September 2026"
        ],
        "weaknesses": [
          "Docs list 9 tools while the live server listed 25, including undocumented GitHub, Jira and Notion helpers",
          "Account tools take a raw token in the Authorization header, with no OAuth or scopes",
          "No status page, rate limits, changelog, security page or SLA",
          "Privacy policy last updated September 2024 and names no AI provider",
          "No public REST API reference, and API access is by application form"
        ],
        "agentNotes": [
          "Call `validate_and_render_mermaid_diagram` to check syntax before committing Mermaid to a repo. It needs no token",
          "Only add the token if you need to save into Mermaid Chart projects. It reaches every project on the account",
          "If you only need a picture, the open-source mermaid-cli renders locally with no network call",
          "Use mcp.mermaid.ai. The registry still lists the older mcp.mermaidchart.com host"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "F",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 31.4
          }
        ],
        "editorialScores": {
          "ergonomics": 34,
          "maintenance": 53,
          "payments": 45,
          "reliability": 15,
          "schema": 32,
          "security": 20,
          "transparency": 29
        },
        "provenanceScore": 60
      },
      "connect": {
        "claudeCode": "claude mcp add --transport http mermaid https://mcp.mermaid.ai/mcp --header \"Authorization: $MERMAID_CHART_TOKEN\"",
        "config": {
          "mcpServers": {
            "mermaid": {
              "headers": {
                "Authorization": "${MERMAID_CHART_TOKEN}"
              },
              "type": "http",
              "url": "https://mcp.mermaid.ai/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/diagram.create",
        "tool": "https://letme.dev/mermaid-chart"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Plus plan",
          "unit": "seat-month",
          "usd": 12,
          "note": "billed monthly, $10 billed yearly. 300 AI credits a year"
        },
        {
          "item": "Premium plan",
          "unit": "seat-month",
          "usd": 24,
          "note": "billed monthly, $20 billed yearly. 2,000 AI credits a year"
        }
      ],
      "provenance": {
        "legalEntity": "Mermaid Chart Inc.",
        "domain": "mermaid.ai",
        "domainRegistered": "2017-12-16",
        "domainNote": "mermaid.ai was registered in 2017 and transferred on 2025-06-02. The company's earlier domain, mermaidchart.com, was registered on 2022-06-14 and now redirects here.",
        "endpointOnVendorDomain": true,
        "terms": "https://mermaid.ai/terms-and-conditions",
        "privacy": "https://mermaid.ai/web/privacy-policy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "unknown",
        "checked": "2026-10-01",
        "notes": [
          "Mermaid Chart Inc., 548 Market Street, PMB 75432, San Francisco, CA 94104-5401 (privacy policy, last updated 13 September 2024)",
          "The terms are governed by Delaware law and give no postal address",
          "/.well-known/security.txt and /llms.txt on mermaid.ai returned 401 on 30 September, so neither could be read",
          "The official MCP registry entry, published 2025-09-18, still points at mcp.mermaidchart.com"
        ],
        "score": 60
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/mermaid-chart.json",
      "live": {
        "slug": "mermaid-chart",
        "probe": {
          "target": "https://mcp.mermaid.ai/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-10-14T22:57:45.761141208Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 443,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 461,
          "p95ms24h": 542,
          "samples24h": 250,
          "samples30d": 3664,
          "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": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 239,
              "ok": 239
            }
          ]
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "com.mermaidchart/mermaid-mcp",
            "version": "1.0.0",
            "seenAt": "2026-10-14T04:18:30.41681267Z"
          },
          {
            "registry": "npm",
            "name": "@mermaidchart/sdk",
            "version": "0.2.8",
            "seenAt": "2026-10-13T23:08:48.735693153Z"
          }
        ],
        "npmWeekly": 233,
        "securityTxt": {
          "url": "https://mermaid.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-14T15:46:18.92924064Z"
        },
        "domain": {
          "domain": "mermaid.ai",
          "registered": "2017-12-16",
          "source": "https://rdap.identitydigital.services/rdap/domain/mermaid.ai",
          "checkedAt": "2026-10-11T13:23:29.855709337Z"
        },
        "pages": [
          {
            "url": "https://mermaid.ai/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-14T21:03:18.117579816Z",
            "changedAt": "2026-10-12T19:54:48.201311819Z",
            "fingerprint": "cfc3318f5f45"
          },
          {
            "url": "https://mermaid.ai/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-01T13:14:15.99559282Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6adb40a489d6"
          },
          {
            "url": "https://mermaid.ai/web/privacy-policy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-14T21:03:22.125575765Z",
            "changedAt": "2026-10-12T19:54:52.466986573Z",
            "fingerprint": "5dc8e9b3ead1"
          },
          {
            "url": "https://mermaid.ai/terms-and-conditions",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-14T21:03:20.126369028Z",
            "changedAt": "2026-10-12T19:54:50.39187049Z",
            "fingerprint": "e5bd53cfebc8"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.mermaid.ai/mcp",
          "checkedAt": "2026-10-14T22:17:46.096792931Z",
          "status": "ok",
          "note": "last answer auth: asks for credentials before listing its tools; tools as last listed",
          "protocol": "2025-11-25",
          "tools": [
            {
              "name": "validate_and_render_mermaid_diagram",
              "description": "SIMPLE RENDER TOOL - Renders Mermaid diagrams directly (Mermaid automatically validates during rendering). If successful, returns diagram image. If Mermaid validation fails, returns error details for fixing. One tool, one call, simple workflow.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server (e.g., 'claude', 'cursor', 'vscode', 'chatgpt', 'copilot') for analytics tracking.",
                    "type": "string"
                  },
                  "diagramType": {
                    "description": "The type of Mermaid diagram (e.g., 'flowchart', 'sequenceDiagram', 'gantt').",
                    "type": "string"
                  },
                  "mermaidCode": {
                    "description": "Mermaid code to render. Mermaid validates automatically during rendering - if invalid, tool returns error details for fixing.",
                    "type": "string"
                  },
                  "prompt": {
                    "description": "A text description of the diagram to generate.",
                    "type": "string"
                  },
                  "useUrlShortener": {
                    "default": true,
                    "description": "Whether to use URL shortening for the Mermaid link. Defaults to true, set to false to disable shortening.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "prompt",
                  "mermaidCode",
                  "diagramType",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_diagram_title",
              "description": "Generate a descriptive title for a Mermaid diagram based on its content. This tool analyzes the diagram structure and content to suggest an appropriate title.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server (e.g., 'claude', 'cursor', 'vscode', 'chatgpt', 'copilot') for analytics tracking.",
                    "type": "string"
                  },
                  "currentTitle": {
                    "description": "Optional: The current title of the diagram, if any, for context.",
                    "type": "string"
                  },
                  "diagramContent": {
                    "description": "The Mermaid diagram content/code for which to generate a title.",
                    "type": "string"
                  },
                  "diagramType": {
                    "description": "Optional: The type of Mermaid diagram (e.g., 'flowchart', 'sequenceDiagram', 'gantt') for better context in title generation.",
                    "type": "string"
                  }
                },
                "required": [
                  "diagramContent",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_diagram_summary",
              "description": "Generate a concise summary for a Mermaid diagram based on its content. This tool provides prompts for the LLM to generate a brief summary (2-4 sentences) highlighting the primary flow, key decisions, and outcomes.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server (e.g., 'claude', 'cursor', 'vscode', 'chatgpt', 'copilot') for analytics tracking.",
                    "type": "string"
                  },
                  "contextHint": {
                    "description": "Optional: Context hint to help generate a more accurate summary.",
                    "type": "string"
                  },
                  "diagramContent": {
                    "description": "The Mermaid diagram content/code for which to generate a summary.",
                    "type": "string"
                  }
                },
                "required": [
                  "diagramContent",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "search_mermaid_icons",
              "description": "Search for available Mermaid icons by provider or name. Returns icons in ready-to-use format with provider prefixes (e.g., 'aws:arch-amazon-ec2'). PERFORMANCE TIP: For faster searches, start with limit=10 and specific queries. If no suitable icons found, increase limit and retry. Supports AWS, Azure, GCP, and FontAwesome icon sets.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server (e.g., 'claude', 'cursor', 'vscode', 'chatgpt', 'copilot') for analytics tracking.",
                    "type": "string"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Optional: Maximum number of results to return per provider. Defaults to 10 for performance. Increase if needed.",
                    "type": "number"
                  },
                  "provider": {
                    "description": "Optional: Filter by specific provider ('aws', 'azure', 'gcp', 'fa'). If not provided, searches all providers.",
                    "type": "string"
                  },
                  "query": {
                    "description": "Search query for icons (e.g., 'aws', 'azure', 'gcp', 'fa', 'lambda', 's3', 'database'). Use specific terms for better results.",
                    "type": "string"
                  }
                },
                "required": [
                  "query",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_mermaid_syntax_document",
              "description": "Get comprehensive syntax documentation and examples for a specific Mermaid diagram type. Returns the official Mermaid.js documentation with syntax rules, examples, and usage instructions for the requested diagram type.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server (e.g., 'claude', 'cursor', 'vscode', 'chatgpt', 'copilot') for analytics tracking.",
                    "type": "string"
                  },
                  "diagramType": {
                    "description": "The type of Mermaid diagram to get syntax documentation for (e.g., 'flowchart', 'sequenceDiagram', 'architecture-beta', 'gantt', 'gitgraph', 'classDiagram', 'stateDiagram', etc.).",
                    "type": "string"
                  }
                },
                "required": [
                  "diagramType",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "list_tools",
              "description": "Lists all available MCP servers and their tools in the workspace.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "OPTIONAL: The name of the client/agent using the MCP server (e.g., 'claude', 'cursor', 'vscode', 'chatgpt', 'copilot') for analytics tracking.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "list_repos",
              "description": "List GitHub repositories for the authenticated user, or for an organization when `org` is set. REQUIRES: `Github-Token` header (HTTP) or `GITHUB_TOKEN` / `GH_TOKEN` in the server environment.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "org": {
                    "description": "Optional: organization login. If set, lists that org's repositories; otherwise lists repos for the authenticated user.",
                    "type": "string"
                  },
                  "page": {
                    "default": 1,
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "per_page": {
                    "default": 30,
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "type": {
                    "default": "all",
                    "description": "User repo filter; ignored when `org` is set.",
                    "enum": [
                      "all",
                      "owner",
                      "member",
                      "public",
                      "private"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "list_mermaid_files",
              "description": "List .mmd Mermaid files in a GitHub repository (code search with tree fallback). REQUIRES: `Github-Token` header (HTTP) or GITHUB_TOKEN / GH_TOKEN.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "owner": {
                    "description": "Repository owner (user or organization).",
                    "type": "string"
                  },
                  "ref": {
                    "description": "Optional branch, tag, or commit for tree fallback when code search is unavailable.",
                    "type": "string"
                  },
                  "repo": {
                    "description": "Repository name.",
                    "type": "string"
                  }
                },
                "required": [
                  "owner",
                  "repo",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "read_mermaid_file",
              "description": "Read a single .mmd file from a GitHub repository. Only paths ending in .mmd are allowed. REQUIRES: `Github-Token` header (HTTP) or GITHUB_TOKEN / GH_TOKEN.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "owner": {
                    "type": "string"
                  },
                  "path": {
                    "description": "Path to the .mmd file in the repository.",
                    "type": "string"
                  },
                  "ref": {
                    "description": "Optional: branch, tag, or commit SHA; defaults to the default branch.",
                    "type": "string"
                  },
                  "repo": {
                    "type": "string"
                  }
                },
                "required": [
                  "owner",
                  "repo",
                  "path",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "create_pr",
              "description": "Create a new branch (git ref), one commit from the base tree with your file changes, then open a pull request in the same repository. REQUIRES: `Github-Token` (HTTP) or GITHUB_TOKEN with `contents: write` (and no existing branch with the same `headBranch` name).",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "baseBranch": {
                    "description": "Branch to base the PR on (e.g. main). Defaults to the repo default branch.",
                    "type": "string"
                  },
                  "body": {
                    "description": "PR description (markdown).",
                    "type": "string"
                  },
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "commitMessage": {
                    "description": "Single commit message for the file changes.",
                    "type": "string"
                  },
                  "files": {
                    "description": "Files to add or update.",
                    "items": {
                      "properties": {
                        "content": {
                          "description": "Full UTF-8 file content.",
                          "type": "string"
                        },
                        "path": {
                          "description": "Repo-relative file path.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "path",
                        "content"
                      ],
                      "type": "object"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "headBranch": {
                    "description": "Name of the new branch (must not already exist on the remote).",
                    "type": "string"
                  },
                  "owner": {
                    "type": "string"
                  },
                  "repo": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  }
                },
                "required": [
                  "owner",
                  "repo",
                  "headBranch",
                  "title",
                  "body",
                  "commitMessage",
                  "files",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": false
              }
            },
            {
              "name": "push_file",
              "description": "Create or update a single file on a given branch in a GitHub repository. REQUIRES: `Github-Token` (HTTP) or GITHUB_TOKEN with contents write access.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "branch": {
                    "description": "Branch to commit to.",
                    "type": "string"
                  },
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "content": {
                    "description": "Full file content.",
                    "type": "string"
                  },
                  "message": {
                    "description": "Commit message.",
                    "type": "string"
                  },
                  "owner": {
                    "type": "string"
                  },
                  "path": {
                    "type": "string"
                  },
                  "repo": {
                    "type": "string"
                  },
                  "sha": {
                    "description": "Existing blob SHA to update; omit to create or to let the service detect.",
                    "type": "string"
                  }
                },
                "required": [
                  "owner",
                  "repo",
                  "path",
                  "content",
                  "branch",
                  "message",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": false
              }
            },
            {
              "name": "list_pulls",
              "description": "List pull requests for a GitHub repository. REQUIRES: `Github-Token` (HTTP) or GITHUB_TOKEN / GH_TOKEN.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "owner": {
                    "type": "string"
                  },
                  "page": {
                    "default": 1,
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "per_page": {
                    "default": 30,
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "repo": {
                    "type": "string"
                  },
                  "state": {
                    "default": "open",
                    "enum": [
                      "open",
                      "closed",
                      "all"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "owner",
                  "repo",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "list_branches",
              "description": "List or resolve branch names. **List mode (default):** one `GET /repos/.../branches?per_page=100\u0026page=1` — at most 100 names, A–Z sorted in the response; `has_more` if a full page was returned. **Resolve mode:** set `branch_name` for a single `GET` branch (404 if missing). At most one GitHub API call. REQUIRES: `Github-Token` (HTTP) or GITHUB_TOKEN / GH_TOKEN.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "branch_name": {
                    "description": "Exact branch name. When non-empty, returns that branch only. Omit to fetch the first 100 branches only.",
                    "type": "string"
                  },
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "owner": {
                    "type": "string"
                  },
                  "repo": {
                    "type": "string"
                  }
                },
                "required": [
                  "owner",
                  "repo",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "list_issues",
              "description": "List issues for a repository (excludes pull requests). REQUIRES: `Github-Token` (HTTP) or GITHUB_TOKEN / GH_TOKEN.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "direction": {
                    "default": "desc",
                    "enum": [
                      "asc",
                      "desc"
                    ],
                    "type": "string"
                  },
                  "labels": {
                    "description": "Comma-separated label names (GitHub API format).",
                    "type": "string"
                  },
                  "owner": {
                    "type": "string"
                  },
                  "page": {
                    "default": 1,
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "per_page": {
                    "default": 30,
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "repo": {
                    "type": "string"
                  },
                  "since": {
                    "description": "ISO 8601: only issues updated at or after this time.",
                    "type": "string"
                  },
                  "sort": {
                    "default": "created",
                    "enum": [
                      "created",
                      "updated",
                      "comments"
                    ],
                    "type": "string"
                  },
                  "state": {
                    "default": "open",
                    "enum": [
                      "open",
                      "closed",
                      "all"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "owner",
                  "repo",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "create_issue",
              "description": "Create an issue in a GitHub repository. REQUIRES: `Github-Token` (HTTP) or GITHUB_TOKEN with issues write if creating issues in private repos.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "body": {
                    "description": "Issue body in markdown.",
                    "type": "string"
                  },
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "labels": {
                    "description": "Label names (must already exist in the repository).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "owner": {
                    "type": "string"
                  },
                  "repo": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  }
                },
                "required": [
                  "owner",
                  "repo",
                  "title",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": false
              }
            },
            {
              "name": "get_issue_comments",
              "description": "List comments on an issue by issue number. REQUIRES: `Github-Token` (HTTP) or GITHUB_TOKEN / GH_TOKEN.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "issue_number": {
                    "description": "Issue number (not a PR number unless the PR is also addressed as an issue on GitHub).",
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "owner": {
                    "type": "string"
                  },
                  "page": {
                    "default": 1,
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "per_page": {
                    "default": 30,
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "repo": {
                    "type": "string"
                  }
                },
                "required": [
                  "owner",
                  "repo",
                  "issue_number",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_pull_comments",
              "description": "Get all pull request comments: both issue/PR thread comments and inline review comments, with a `type` of `issue_thread` or `review` per item. REQUIRES: `Github-Token` (HTTP) or GITHUB_TOKEN / GH_TOKEN.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "owner": {
                    "type": "string"
                  },
                  "page": {
                    "default": 1,
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "per_page": {
                    "default": 30,
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "pull_number": {
                    "description": "Pull request number.",
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "repo": {
                    "type": "string"
                  }
                },
                "required": [
                  "owner",
                  "repo",
                  "pull_number",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "generate_ticket_dependency_tree",
              "description": "Generate a Mermaid flowchart that visualises Jira issue dependency links for a project. Each node shows the ticket key, summary, and status, and is a clickable link to the ticket. Dashed nodes represent issues linked from outside the current filter set.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "assignee": {
                    "description": "Filter by assignee — Jira account ID, display name, or 'currentUser()'.",
                    "type": "string"
                  },
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "colorMode": {
                    "default": "light",
                    "description": "Color scheme for the diagram: 'light' (default pastel fills), 'dark' (deep fills for dark backgrounds), or 'none' (no fill/stroke overrides, inherits the Mermaid theme).",
                    "enum": [
                      "light",
                      "dark",
                      "none"
                    ],
                    "type": "string"
                  },
                  "createdAfter": {
                    "description": "Include only issues created on or after this date, ISO format: '2024-01-15'.",
                    "type": "string"
                  },
                  "createdBefore": {
                    "description": "Include only issues created on or before this date, ISO format: '2024-03-31'.",
                    "type": "string"
                  },
                  "maxResults": {
                    "default": 50,
                    "description": "Target number of issues to render in the tree (1–100, default 50).",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "projectKey": {
                    "description": "REQUIRED: Jira project key, e.g. 'PROJ' or 'MYTEAM'. Used as the base JQL project filter.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "reporter": {
                    "description": "Filter by reporter — Jira account ID or display name.",
                    "type": "string"
                  },
                  "sprint": {
                    "description": "Filter by sprint name or numeric ID, e.g. 'Sprint 12' or '42'.",
                    "type": "string"
                  },
                  "status": {
                    "description": "Filter by issue status, e.g. 'In Progress', 'To Do', 'Done'.",
                    "type": "string"
                  },
                  "useUrlShortener": {
                    "default": true,
                    "description": "Shorten the preview/edit URL via Short.io. Disable to get the full unshortened URL (default true).",
                    "type": "boolean"
                  }
                },
                "required": [
                  "projectKey",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "generate_jira_kanban_board",
              "description": "Generate a Mermaid kanban board from Jira issues. Issues are grouped into columns by their current status and ordered by workflow stage (To Do → In Progress → Done). Each card shows the issue summary and is a clickable link to the ticket, with optional assignee and priority badges.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "assignee": {
                    "description": "Filter by assignee — Jira account ID, display name, or 'currentUser()'.",
                    "type": "string"
                  },
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "issueType": {
                    "description": "Filter by issue type, e.g. 'Story', 'Bug', 'Task'.",
                    "type": "string"
                  },
                  "maxResults": {
                    "default": 50,
                    "description": "Maximum number of issues to fetch (1–100, default 50).",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "projectKey": {
                    "description": "REQUIRED: Jira project key, e.g. 'PROJ' or 'MYTEAM'.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "sprint": {
                    "description": "Filter by sprint name or numeric ID, e.g. 'Sprint 12' or '42'.",
                    "type": "string"
                  }
                },
                "required": [
                  "projectKey",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "generate_ticket_diagram",
              "description": "Generate a Mermaid flowchart centred on a single Jira ticket. Fetches the ticket's subtasks, parent, issue links, and recent comments in one call. The focal ticket is highlighted in indigo; subtasks are grouped in a subgraph; issue links use colour-coded arrows (red thick = blocks, cyan dashed = relates to); comments appear in a rose subgraph.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "colorMode": {
                    "default": "light",
                    "description": "Color scheme for the diagram: 'light' (default pastel fills), 'dark' (deep fills for dark backgrounds), or 'none' (no fill/stroke overrides, inherits the Mermaid theme).",
                    "enum": [
                      "light",
                      "dark",
                      "none"
                    ],
                    "type": "string"
                  },
                  "ticketKey": {
                    "description": "REQUIRED: Jira issue key, e.g. 'MC-123' or 'PROJ-42'.",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "ticketKey",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "generate_ticket_timeline",
              "description": "Generate a Mermaid diagram showing the history of a single Jira ticket using its changelog. Two views are available:\n- **state**: stateDiagram-v2 showing all status transitions with dates and authors, nodes coloured by status category.\n- **timeline** (default): Mermaid timeline grouped by month, showing status changes, assignee changes, priority changes, sprint moves, and resolutions.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "ticketKey": {
                    "description": "REQUIRED: Jira issue key, e.g. 'MC-123' or 'PROJ-42'.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "view": {
                    "default": "timeline",
                    "description": "Diagram view to generate. 'state' shows status transitions; 'timeline' shows all field changes over time.",
                    "enum": [
                      "state",
                      "timeline"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "ticketKey",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_notion_page_mermaid_diagrams",
              "description": "Extract all Mermaid code blocks from a Notion page. Returns block ID, diagram code, and optional caption for each block.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "pageUrl": {
                    "description": "URL of the Notion page (e.g. https://www.notion.so/My-Page-abc123...).",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "pageUrl",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_notion_mermaid_diagram_by_block_id",
              "description": "Retrieve a single Mermaid diagram block by its block ID. Returns the diagram code and optional caption.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "blockId": {
                    "description": "The Notion block ID of the mermaid code block (e.g. from get_notion_page_mermaid_diagrams).",
                    "type": "string"
                  },
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  }
                },
                "required": [
                  "blockId",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "update_notion_mermaid_diagram",
              "description": "Update the Mermaid source code (and optional caption) of an existing mermaid code block by its block ID.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "blockId": {
                    "description": "The Notion block ID of the mermaid code block to update.",
                    "type": "string"
                  },
                  "caption": {
                    "description": "Optional new caption. Omit to clear the existing caption.",
                    "type": "string"
                  },
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "code": {
                    "description": "New Mermaid diagram source code.",
                    "type": "string"
                  }
                },
                "required": [
                  "blockId",
                  "code",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": false
              }
            },
            {
              "name": "insert_notion_mermaid_diagram",
              "description": "Append a Mermaid diagram as a code block to a Notion page. The block is added at the end of the page content.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "properties": {
                  "caption": {
                    "description": "Optional caption displayed below the code block.",
                    "type": "string"
                  },
                  "clientName": {
                    "description": "REQUIRED: The name of the client/agent using the MCP server for analytics tracking.",
                    "type": "string"
                  },
                  "code": {
                    "description": "Mermaid diagram source code.",
                    "type": "string"
                  },
                  "pageUrl": {
                    "description": "URL of the Notion page to insert the diagram into.",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "pageUrl",
                  "code",
                  "clientName"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": false
              }
            }
          ],
          "schemaTokens": 6198,
          "changedAt": "2026-09-30T21:57:02.278667952Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 6198,
            "counts": {
              "error": 0,
              "note": 1,
              "warn": 11
            },
            "findings": [
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "create_issue",
                "message": "3 parameters without a description: owner, repo, title",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "create_pr",
                "message": "3 parameters without a description: owner, repo, title",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "get_issue_comments",
                "message": "4 parameters without a description: owner, page, per_page, repo",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "get_pull_comments",
                "message": "4 parameters without a description: owner, page, per_page, repo",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "list_branches",
                "message": "2 parameters without a description: owner, repo",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "list_issues",
                "message": "7 parameters without a description: direction, owner, page, per_page, repo, sort and 1 more",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "list_pulls",
                "message": "5 parameters without a description: owner, page, per_page, repo, state",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "list_repos",
                "message": "2 parameters without a description: page, per_page",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "push_file",
                "message": "3 parameters without a description: owner, path, repo",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "read_mermaid_file",
                "message": "2 parameters without a description: owner, repo",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "list_pulls",
                "message": "described almost the same as list_issues (82% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC24",
                "severity": "note",
                "message": "25 of 25 tools have no outputSchema",
                "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
              }
            ]
          }
        },
        "updatedAt": "2026-10-14T22:57:45.761141208Z"
      }
    },
    "facts": [
      {
        "a": "MCP server",
        "b": "MCP server",
        "name": "Kind"
      },
      {
        "a": "ExcaliClaw",
        "b": "Mermaid Chart",
        "name": "Vendor"
      },
      {
        "a": "https://excaliclaw.com/mcp",
        "b": "https://mcp.mermaid.ai/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP, HTTP",
        "b": "Streamable HTTP, SSE (legacy)",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "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",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "37",
        "b": "25",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "com.excaliclaw/excaliclaw",
        "b": "com.mermaidchart/mermaid-mcp",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-03",
        "b": "2026-09-17",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "couldn't be read",
        "b": "2024-09-13",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "0 stars",
        "b": "395 npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2.5/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "ExcaliClaw scores 51.4 (D) on agent readiness against Mermaid Chart MCP's 31.4 (F), and leads in 5 of 7 scored categories. Mermaid Chart MCP leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, ExcaliClaw or Mermaid Chart MCP?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do ExcaliClaw and Mermaid Chart MCP need an API key?"
      },
      {
        "answer": "Yes. ExcaliClaw has a hosted endpoint at https://excaliclaw.com/mcp and Mermaid Chart MCP at https://mcp.mermaid.ai/mcp.",
        "question": "Can an agent call ExcaliClaw and Mermaid Chart MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 65 against 15",
          "Schema \u0026 documentation, 62 against 32",
          "Agent ergonomics, 55 against 34",
          "Security \u0026 auth, 40 against 20"
        ],
        "also": null,
        "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"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 45 against 30"
        ],
        "also": null,
        "goodFor": "Checking and rendering Mermaid before it lands in a README or doc, with no account.",
        "slug": "mermaid-chart",
        "watchFor": "Docs list 9 tools while the live server listed 25, including undocumented GitHub, Jira and Notion helpers"
      }
    ],
    "job": {
      "capability": "diagram.create",
      "name": "Diagram creation"
    },
    "others": [
      {
        "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/cloudviz-vs-mermaid-chart.json",
        "title": "Cloudviz API vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/cloudviz-vs-mermaid-chart"
      },
      {
        "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/diagrams-so-vs-mermaid-chart.json",
        "title": "Diagrams.so API + MCP vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/diagrams-so-vs-mermaid-chart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/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/drawio-vs-mermaid-chart.json",
        "title": "draw.io + MCP vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/drawio-vs-mermaid-chart"
      },
      {
        "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/eraser-vs-mermaid-chart.json",
        "title": "Eraser API + MCP vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/eraser-vs-mermaid-chart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/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-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/excalidraw-vs-mermaid-chart.json",
        "title": "Excalidraw vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/excalidraw-vs-mermaid-chart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lucid-vs-mermaid-chart.json",
        "title": "Lucid API + MCP vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/lucid-vs-mermaid-chart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mermaid-chart-vs-mumble.json",
        "title": "Mermaid Chart MCP vs Mumble",
        "url": "https://www.anchorterminal.com/compare/mermaid-chart-vs-mumble"
      },
      {
        "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/mermaid-chart-vs-plantuml.json",
        "title": "Mermaid Chart MCP vs PlantUML",
        "url": "https://www.anchorterminal.com/compare/mermaid-chart-vs-plantuml"
      },
      {
        "json": "https://www.anchorterminal.com/compare/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/mermaid-chart-vs-tldraw.json",
        "title": "Mermaid Chart MCP vs tldraw SDK + MCP",
        "url": "https://www.anchorterminal.com/compare/mermaid-chart-vs-tldraw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mermaid-chart-vs-whimsical.json",
        "title": "Mermaid Chart MCP vs Whimsical MCP",
        "url": "https://www.anchorterminal.com/compare/mermaid-chart-vs-whimsical"
      },
      {
        "json": "https://www.anchorterminal.com/compare/d2-vs-excaliclaw.json",
        "title": "D2 vs ExcaliClaw",
        "url": "https://www.anchorterminal.com/compare/d2-vs-excaliclaw"
      },
      {
        "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/kroki-vs-mermaid-chart.json",
        "title": "Kroki vs Mermaid Chart MCP",
        "url": "https://www.anchorterminal.com/compare/kroki-vs-mermaid-chart"
      }
    ],
    "scores": [
      {
        "by": 50,
        "edge": "excaliclaw",
        "excaliclaw": 65,
        "key": "reliability",
        "mermaid-chart": 15,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 30,
        "edge": "excaliclaw",
        "excaliclaw": 62,
        "key": "schema",
        "mermaid-chart": 32,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 21,
        "edge": "excaliclaw",
        "excaliclaw": 55,
        "key": "ergonomics",
        "mermaid-chart": 34,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 20,
        "edge": "excaliclaw",
        "excaliclaw": 40,
        "key": "security",
        "mermaid-chart": 20,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 15,
        "edge": "mermaid-chart",
        "excaliclaw": 30,
        "key": "payments",
        "mermaid-chart": 45,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "edge": "excaliclaw",
        "excaliclaw": 54,
        "key": "maintenance",
        "mermaid-chart": 53,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 0,
        "edge": "",
        "excaliclaw": 45,
        "key": "transparency",
        "mermaid-chart": 45,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "ExcaliClaw scores 51.4 (D) on agent readiness against Mermaid Chart MCP's 31.4 (F), and leads in 5 of 7 scored categories. Mermaid Chart MCP leads on payments \u0026 pricing. Both do diagram creation.",
    "verdicts": {
      "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.",
      "mermaid-chart": "Validation and rendering work with no account or key. Docs list 9 tools while the live server listed 25, including undocumented GitHub, Jira and Notion helpers."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/excaliclaw-vs-mermaid-chart",
    "json": "https://www.anchorterminal.com/compare/excaliclaw-vs-mermaid-chart.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/excaliclaw-vs-mermaid-chart.md",
    "slim": "https://www.anchorterminal.com/compare/excaliclaw-vs-mermaid-chart.min.md"
  },
  "markdown": "ExcaliClaw scores 51.4 (D) on agent readiness against Mermaid Chart MCP's 31.4 (F), and leads in 5 of 7 scored categories. Mermaid Chart MCP leads on payments \u0026 pricing. Both do diagram creation.\n\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- Mermaid Chart MCP: grade F, 31.4/100, rank #1028 of 1084. Markdown https://www.anchorterminal.com/tools/mermaid-chart.md · JSON https://www.anchorterminal.com/api/v1/tools/mermaid-chart.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### 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\nAhead on:\n- Reliability, 65 against 15\n- Schema \u0026 documentation, 62 against 32\n- Agent ergonomics, 55 against 34\n- Security \u0026 auth, 40 against 20\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### Mermaid Chart MCP (F)\n\nGood for: Checking and rendering Mermaid before it lands in a README or doc, with no account.\n\nAhead on:\n- Payments \u0026 pricing, 45 against 30\n\nWatch for: Docs list 9 tools while the live server listed 25, including undocumented GitHub, Jira and Notion helpers\n\n\n## Score by category\n\n| Category | Weight | ExcaliClaw | Mermaid Chart MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 65 | 15 | ExcaliClaw +50 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 62 | 32 | ExcaliClaw +30 |\n| Agent ergonomics | 13% (16.2 this run) | 55 | 34 | ExcaliClaw +21 |\n| Security \u0026 auth | 14% (17.5 this run) | 40 | 20 | ExcaliClaw +20 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 45 | Mermaid Chart MCP +15 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 54 | 53 | ExcaliClaw +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 45 | 45 | even |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **51.4 · D** | **31.4 · F** | |\n\n## Facts side by side\n\n| Fact | ExcaliClaw | Mermaid Chart MCP |\n| --- | --- | --- |\n| Kind | MCP server | MCP server |\n| Vendor | ExcaliClaw | Mermaid Chart |\n| Hosted endpoint | `https://excaliclaw.com/mcp` | `https://mcp.mermaid.ai/mcp` |\n| Transports | Streamable HTTP, HTTP | Streamable HTTP, SSE (legacy) |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | 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 | none |\n| Tools exposed | 37 | 25 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| MCP registry | `com.excaliclaw/excaliclaw` | `com.mermaidchart/mermaid-mcp` |\n| Last release | 2026-10-03 | 2026-09-17 |\n| Terms last updated | couldn't be read | no date given |\n| Privacy policy last updated | couldn't be read | 2024-09-13 |\n| Customer content may train models | couldn't be read | not found in the text |\n| Terms restrict automated access | couldn't be read | not found in the text |\n| Terms restrict benchmarking | couldn't be read | yes |\n| Terms or service can change without notice | couldn't be read | not found in the text |\n| Arbitration or class-action waiver | couldn't be read | not found in the text |\n| Popularity | 0 stars | 395 npm/wk |\n| Agent reviews | none | 2.5/5 (2) |\n\n## Verdicts\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**Mermaid Chart MCP.** Validation and rendering work with no account or key. Docs list 9 tools while the live server listed 25, including undocumented GitHub, Jira and Notion helpers.\n\n## Before you call either\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### Mermaid Chart MCP\n\n1. Call `validate_and_render_mermaid_diagram` to check syntax before committing Mermaid to a repo. It needs no token\n2. Only add the token if you need to save into Mermaid Chart projects. It reaches every project on the account\n3. If you only need a picture, the open-source mermaid-cli renders locally with no network call\n4. Use mcp.mermaid.ai. The registry still lists the older mcp.mermaidchart.com host\n\n## Questions\n\n### Which is better for AI agents, ExcaliClaw or Mermaid Chart MCP?\n\nExcaliClaw scores 51.4 (D) on agent readiness against Mermaid Chart MCP's 31.4 (F), and leads in 5 of 7 scored categories. Mermaid Chart MCP leads on payments \u0026 pricing.\n\n### Do ExcaliClaw and Mermaid Chart MCP need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call ExcaliClaw and Mermaid Chart MCP without installing anything?\n\nYes. ExcaliClaw has a hosted endpoint at https://excaliclaw.com/mcp and Mermaid Chart MCP at https://mcp.mermaid.ai/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/excaliclaw-vs-mermaid-chart.json, and with the fewest tokens: https://www.anchorterminal.com/compare/excaliclaw-vs-mermaid-chart.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"excaliclaw\", \"b\": \"mermaid-chart\"}`. From a terminal: `anchor compare excaliclaw mermaid-chart`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/excaliclaw.json and https://www.anchorterminal.com/api/v1/tools/mermaid-chart.json\n\n## Other comparisons with ExcaliClaw or Mermaid Chart MCP\n\n- [Cloudviz API vs ExcaliClaw](https://www.anchorterminal.com/compare/cloudviz-vs-excaliclaw.md)\n- [Cloudviz API vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/cloudviz-vs-mermaid-chart.md)\n- [Diagrams.so API + MCP vs ExcaliClaw](https://www.anchorterminal.com/compare/diagrams-so-vs-excaliclaw.md)\n- [Diagrams.so API + MCP vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/diagrams-so-vs-mermaid-chart.md)\n- [draw.io + MCP vs ExcaliClaw](https://www.anchorterminal.com/compare/drawio-vs-excaliclaw.md)\n- [draw.io + MCP vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/drawio-vs-mermaid-chart.md)\n- [Eraser API + MCP vs ExcaliClaw](https://www.anchorterminal.com/compare/eraser-vs-excaliclaw.md)\n- [Eraser API + MCP vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/eraser-vs-mermaid-chart.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 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- [Excalidraw vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/excalidraw-vs-mermaid-chart.md)\n- [Lucid API + MCP vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/lucid-vs-mermaid-chart.md)\n- [Mermaid Chart MCP vs Mumble](https://www.anchorterminal.com/compare/mermaid-chart-vs-mumble.md)\n- [Mermaid Chart MCP vs Mural MCP](https://www.anchorterminal.com/compare/mermaid-chart-vs-mural-mcp.md)\n- [Mermaid Chart MCP vs PlantUML](https://www.anchorterminal.com/compare/mermaid-chart-vs-plantuml.md)\n- [Mermaid Chart MCP vs Structurizr + MCP](https://www.anchorterminal.com/compare/mermaid-chart-vs-structurizr.md)\n- [Mermaid Chart MCP vs tldraw SDK + MCP](https://www.anchorterminal.com/compare/mermaid-chart-vs-tldraw.md)\n- [Mermaid Chart MCP vs Whimsical MCP](https://www.anchorterminal.com/compare/mermaid-chart-vs-whimsical.md)\n- [D2 vs ExcaliClaw](https://www.anchorterminal.com/compare/d2-vs-excaliclaw.md)\n- [D2 vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/d2-vs-mermaid-chart.md)\n- [Kroki vs Mermaid Chart MCP](https://www.anchorterminal.com/compare/kroki-vs-mermaid-chart.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": "ExcaliClaw vs Mermaid Chart MCP",
        "url": ""
      }
    ],
    "description": "ExcaliClaw scores 51.4 (D) to Mermaid Chart MCP's 31.4 (F) for diagram creation. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "ExcaliClaw D 51.4",
      "Mermaid Chart MCP F 31.4",
      "scores"
    ],
    "h1": "ExcaliClaw vs Mermaid Chart MCP",
    "image": "https://www.anchorterminal.com/assets/og/compare-excaliclaw-vs-mermaid-chart.png",
    "path": "/compare/excaliclaw-vs-mermaid-chart",
    "published": "2026-10-01",
    "section": "tools",
    "title": "ExcaliClaw vs Mermaid Chart MCP for AI agents (2026) | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/compare/excaliclaw-vs-mermaid-chart"
  },
  "tokens": {
    "markdown": 2550,
    "slim": 730
  },
  "version": 1
}
