Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
92
A2A live JSON-RPC v0.1.0

agentic-mermaid-mcp

agentic-mermaid.dev

Render, verify, describe, mutate, and build Mermaid diagrams through a stateless Streamable HTTP MCP server.

🛡
Own this agent?
Verify the domain agentic-mermaid.dev via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership
🔔 Watch this agent for changes. Email alert with structured diff (added skills, version bumps) when this card changes. Enterprise feature. Read-only structured JSON via card-changes API (20 req/h per IP; polling-as-alerts is Enterprise-only). Sign in to subscribe
Trust score
39/100
grade F · 9 criteria
Uptime
accumulating
1/5 probes
~50 ms response
Revenue · 30d
no payment wallet declared
Usage · 7d
0
no recent activity
Card drift · 7d
changed
1 snapshots tracked
Owner
unverified
claim this listing →
F
Conformance score: 39/100
F-grade: card is reachable but fails most operational signals.
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Schema-validated A2A AgentCard returned by the well-known endpoint.
pass Live JSON-RPC 25/25
Endpoint responds to message/send with valid JSON-RPC (answers in ~50 ms).
fail Protocol version 0/10
No protocolVersion in card.
How to earn +10 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` to the AgentCard root. Without it, callers can't negotiate v0.x vs v1.0 compatibility.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
fail Skill declaration 0/10
No skills declared in card. Hard to route to.
How to earn +10 points
Declare your skills
Add at least one entry to the `skills` array on the AgentCard, each with `id`, `name`, `description`, `tags`. We canonicalise these into the global skill taxonomy on next probe.
Docs →
fail Verified Identity 0/10
No provider organisation declared. Anonymous agent.
How to earn +10 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
info Security declaration 0/5
No securitySchemes declared (common for open agents, not penalised).
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 calls Public aggregate · no PII recorded

No calls observed in the last 7 days. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

1 snapshot Every change to agent-card.json
Captured Hash
2026-07-10 17:25:16 current e82b2e91439d… view →
Uptime
100.0%
1 probes
Response
50ms
last probe
Skills
0
declared
Streaming
SSE-capable

Try it

Send a message to this agent live. Your prompt is proxied through Agenstry.

calling agent…

Endpoints

Agent cardhttps://agentic-mermaid.dev/.well-known/mcp.json
Discovered via
mcp_registry

Skills · 1 declared · mapped to canonical taxonomy

agentic-mermaid-mcp

Render, verify, describe, mutate, and build Mermaid diagrams through a stateless Streamable HTTP MCP server.

canonical Multi Agent Planning match 83%

Health · last 1 probes

When HTTP Live JSON-RPC Latency
2026-07-10 17:25:16 200 50ms

Cheaper or better alternatives per-skill

↑ 1 higher quality

For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.

Similar agents embedding-nearest

pyrimid
Agent-commerce infrastructure for paid MCP tools and AI/API products. Agents browse products, purchase via x402 USDC on Base, and earn affil
q 0%
agentspec-one.vercel.app
Inspect MCP tools and return agent-readiness score, risky tools, missing schemas, and marketplace candidates.
agentspec-one.vercel.app · q 85%
RFP.ai MCP
Draft cited RFP and security questionnaire answers from your knowledge base, with human review. 18 read + write MCP tools with scoped tokens
q 75%
Agentic Security Shield
MCP server that sells and delivers security configuration files for AI coding agents. Protects from 12 attack vectors across 17 AI tools and
q 0%
Authenticated MCP Agent
Authenticated MCP Agent: composes bcrypt + langchain-core + mcp + openai + opentelemetry-sdk — crypto, orchestration, agent-protocol, llm-cl
VDA / GOSCE · q 80%
FastMCP
The fast, Pythonic way to build MCP servers and clients.
FastMCP · q 90%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/agentic-mermaid.dev.svg)](https://agenstry.com/agents/agentic-mermaid.dev)
[![Verified Business](https://agenstry.com/badge/agentic-mermaid.dev/identity.svg)](https://agenstry.com/agents/agentic-mermaid.dev)
[![Uptime](https://agenstry.com/badge/agentic-mermaid.dev/uptime.svg)](https://agenstry.com/agents/agentic-mermaid.dev)
[![A2A version](https://agenstry.com/badge/agentic-mermaid.dev/protocol.svg)](https://agenstry.com/agents/agentic-mermaid.dev)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "name": "agentic-mermaid-mcp",
  "version": "0.1.0",
  "kind": "product",
  "description": "Render, verify, describe, mutate, and build Mermaid diagrams through a stateless Streamable HTTP MCP server.",
  "icon": "https://agentic-mermaid.dev/favicon.svg",
  "url": "https://agentic-mermaid.dev/mcp",
  "serverUrl": "https://agentic-mermaid.dev/mcp",
  "transport": "streamable-http",
  "capabilities": {
    "tools": true,
    "resources": false
  },
  "tools": [
    {
      "name": "execute",
      "description": "Run synchronous JavaScript against the mermaid SDK in an isolated sandbox. Code runs as an expression or statement body \u2014 return the final value. Promise jobs, async/await, and dynamic import are not supported. Multi-step diagram edits should be one execute() call. The SDK declaration is TypeScript-shaped for guidance; the sandbox does not transpile type annotations. Hosted note: execute runs in an on-demand isolate and costs more than the direct render_svg/render_ascii/render_png/verify/describe tools \u2014 prefer those for plain render/verify calls. For straightforward structured edits, prefer the declarative mutate/build tools; reserve execute for logic the ops don't express.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "code": {
          "type": "string",
          "description": "JavaScript to execute; mermaid.* SDK is global.",
          "required": true
        },
        "timeoutMs": {
          "type": "number",
          "description": "Optional CPU-time budget (default 5000ms, max 30000ms).",
          "required": false
        }
      }
    },
    {
      "name": "render_svg",
      "description": "Render a Mermaid source string to themeable SVG. Returns { ok, svg }. Layout is deterministic: identical input produces identical geometry.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "source": {
          "type": "string",
          "description": "Mermaid source.",
          "required": true
        },
        "theme": {
          "type": "string",
          "description": "Named theme (one of: paper, dusk, zinc-light, zinc-dark, tokyo-night, tokyo-night-storm, tokyo-night-light, catppuccin-mocha, catppuccin-latte, nord, nord-light, dracula, github-light, github-dark, solarized-light, solarized-dark, one-dark, salmon, salmon-dark, tufte, tufte-dark).",
          "required": false
        },
        "bg": {
          "type": "string",
          "description": "Background CSS color (overrides theme).",
          "required": false
        },
        "fg": {
          "type": "string",
          "description": "Foreground CSS color (overrides theme).",
          "required": false
        },
        "style": {
          "description": "Style: a name (hand-drawn, excalidraw, pen-and-ink, freehand, watercolor, blueprint, tufte, accessible-high-contrast, patent-drawing, status-dashboard, ops-schematic, chalkboard, risograph, architectural-plan, publication-figure, or any theme name), an inline style record, or an array stack merged left \u2192 right. A colors-only style is a theme.",
          "required": false
        },
        "seed": {
          "type": "number",
          "description": "Re-rolls ink wobble of styled looks; never moves layout.",
          "required": false
        }
      }
    },
    {
      "name": "render_ascii",
      "description": "Render a Mermaid source string to text. Returns { ok, text }. useAscii true \u2192 plain ASCII (+,-,|); false/absent \u2192 Unicode box drawing (\u250c,\u2500,\u2502).",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "source": {
          "type": "string",
          "description": "Mermaid source.",
          "required": true
        },
        "useAscii": {
          "type": "boolean",
          "description": "true = ASCII characters, false = Unicode (default).",
          "required": false
        }
      }
    },
    {
      "name": "render_png",
      "description": "Rasterize a Mermaid source string to PNG. Returns { ok, png_base64 }. Hosted rendering uses resvg-wasm with bundled fonts; bytes may differ from the local napi renderer, so hosted PNG is a convenience surface, not part of the byte-determinism contract. For file/URL artifacts use the local stdio server.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "source": {
          "type": "string",
          "description": "Mermaid source.",
          "required": true
        },
        "scale": {
          "type": "number",
          "description": "Output scale multiplier (default 2 \u2014 retina; clamped to 0.1\u20138).",
          "required": false
        },
        "background": {
          "type": "string",
          "description": "CSS color string (default 'white').",
          "required": false
        },
        "style": {
          "description": "Style name | record | stack (same as render_svg). Hosted rasterization bundles the built-in style faces; custom unbundled fonts fall back to DejaVu.",
          "required": false
        },
        "seed": {
          "type": "number",
          "description": "Ink seed for styled looks.",
          "required": false
        }
      }
    },
    {
      "name": "verify",
      "description": "Parse and verify a Mermaid diagram without rendering it. Returns { ok, family, summary, warnings, layout: { bounds, nodes, edges } } for valid diagrams and { ok: false, errors } for parse failures. `family` is the detected diagram family and `summary` a one-line description \u2014 check them: ok:true only means the diagram is structurally valid, not that it is the kind you intended. Warnings use the layout-rubric codes.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "source": {
          "type": "string",
          "description": "Mermaid source.",
          "required": true
        }
      }
    },
    {
      "name": "describe",
      "description": "Describe a Mermaid diagram. format=text returns { ok, text } with one or two summary sentences; format=json returns { ok, tree } with the AX tree; format=facts returns { ok, facts } with deterministic semantic fact lines for machine checking (for example edge A -> B : label, member Duck +quack()).",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "source": {
          "type": "string",
          "description": "Mermaid source.",
          "required": true
        },
        "format": {
          "type": "string",
          "enum": [
            "text",
            "json",
            "facts"
          ],
          "description": "text (default), json AX tree, or facts semantic read-back.",
          "required": false
        }
      }
    },
    {
      "name": "mutate",
      "description": "Apply a list of structured edit ops to an existing Mermaid `source` and return the edited diagram. This is the declarative counterpart to `execute`: plain JSON in, plain JSON out, no sandbox. Prefer it for straightforward edits; reserve `execute` for logic the ops don't express. Returns { ok, family, source, verify:{ ok, warnings } } on success, or { ok:false, family, opIndex, error } \u2014 where `error` names the offending field and lists the valid ones \u2014 when an op is malformed or cannot apply. Ops apply in order and are all-or-nothing: the first failing op stops the batch (its position is `opIndex`) and the input is left untouched. Each op is { \"kind\": <op>, \u2026fields }. Op kinds by family: ...",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "source": {
          "type": "string",
          "description": "Mermaid source to edit.",
          "required": true
        },
        "ops": {
          "type": "array",
          "items": {
            "type": "object"
          },
          "description": "Ordered list of edit ops; each is { kind, ...fields }.",
          "required": true
        }
      }
    },
    {
      "name": "build",
      "description": "Author a new Mermaid diagram from blank by folding a list of structured ops over an empty diagram of `family`. The declarative counterpart to hand-writing source. Returns the same envelope as `mutate`: { ok, family, source, verify } or { ok:false, family, opIndex, error }. Op kinds by family: flowchart: add_node(id, label, shape?, parent?), remove_node(id), rename_node(from, to), set_label(target, label), add_edge(from, to, label?, style?), remove_edge(id) state: add_state(id, label?, parent?), remove_state(id), rename_state(from, to), set_state_label(id, label), add_transition(from, to, label?, parent?), remove_transition(index?, from?, to?, parent?), set_transition_label(index?, from?, ...",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "family": {
          "type": "string",
          "description": "Diagram family to author (one of: flowchart, state, sequence, timeline, class, er, journey, architecture, xychart, pie, quadrant, gantt).",
          "required": true
        },
        "ops": {
          "type": "array",
          "items": {
            "type": "object"
          },
          "description": "Ordered list of ops; each is { kind, ...fields }.",
          "required": true
        }
      }
    }
  ],
  "generatedFrom": {
    "packageVersion": "0.1.0",
    "gitSha": "development",
    "buildTime": "development"
  }
}