{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_zqne42yar6ct","handle":"endiagram-mcp","url":"https://wellknown.network/agents/endiagram-mcp","links":{"self":"https://wellknown.network/agents/endiagram-mcp/record.json","html":"https://wellknown.network/agents/endiagram-mcp","markdown":"https://wellknown.network/agents/endiagram-mcp/record.md","api":"https://wellknown.network/api/v1/agents/endiagram-mcp","status":"https://wellknown.network/api/v1/agents/endiagram-mcp/status","claim":"https://wellknown.network/agents/endiagram-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/endiagram-mcp/claim.json","badge":"https://wellknown.network/agents/endiagram-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/endiagram-mcp/history","tools":"https://wellknown.network/api/v1/agents/endiagram-mcp/tools"},"ard":{"identifier":"urn:air:api.endiagram.com:server:endiagram-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"endiagram-mcp","summary":"EN Diagram — structural verification for concurrent systems. Pure math, no AI.","description":"EN Diagram — structural verification for concurrent systems. Pure math, no AI.","publisher":{"name":"dushyant30suthar","url":null},"homepage":"https://github.com/dushyant30suthar/endiagram-mcp#readme","repository":"https://github.com/dushyant30suthar/endiagram-mcp","version":"0.3.16","license":"MIT","protocols":["mcp"],"tags":["mcp","endiagram","structural-analysis","graph-theory","dependency-graph"],"pricing":null,"endpoints":[{"url":"https://api.endiagram.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"npm:@endiagram/mcp","type":"package_npm","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-04-21T17:48:51.653751Z","npmKeywords":["mcp","endiagram","structural-analysis","graph-theory","dependency-graph"],"publishedAt":"2026-04-21T17:48:51.653751Z","registryName":"io.github.dushyant30suthar/endiagram-mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","license":"npm","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"npm","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":1,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.525,"provenance":"derived"},{"slug":"productivity.crm","name":"CRM & Sales","confidence":0.525,"provenance":"derived"}],"categories":["dev","knowledge","productivity"],"language":"en"},"observed":{"status":"unavailable","statusReason":"5 consecutive checks failed; last success 14d ago.","lastOkAt":"2026-09-26T02:26:15.573Z","lastProbedAt":"2026-10-04T04:34:13.012Z","statusComputedAt":"2026-10-04T04:35:07.826Z","reliability30d":{"probes":63,"successRate":0.9206,"p50Ms":198,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":62,"ok":57,"authBoundaryOk":0,"serviceOk":57,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-04T04:34:13.012Z","kind":"mcp_initialize","ok":false,"httpStatus":404,"latencyMs":279,"error":"http 404","detail":null},{"at":"2026-09-30T03:21:12.198Z","kind":"mcp_initialize","ok":false,"httpStatus":404,"latencyMs":166,"error":"http 404","detail":null},{"at":"2026-09-27T23:28:19.307Z","kind":"mcp_initialize","ok":false,"httpStatus":404,"latencyMs":209,"error":"http 404","detail":null},{"at":"2026-09-26T22:20:55.510Z","kind":"mcp_initialize","ok":false,"httpStatus":404,"latencyMs":282,"error":"http 404","detail":null},{"at":"2026-09-26T08:32:02.959Z","kind":"mcp_initialize","ok":false,"httpStatus":404,"latencyMs":215,"error":"http 404","detail":null},{"at":"2026-09-26T02:26:15.573Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":182,"error":null,"detail":{"tools":[{"name":"structure","description":"What is this system? Returns shape (Pipeline, Fork-Join, DAG, Star, Cycle, Tree, Complete, etc.), stages with roles, bridge nodes, cycles, parallelism, critical"},{"name":"invariant","description":"What's always true — automatic findings and on-demand checks. Automatic outputs: conservationLaws (weighted entity sums constant across executions), sustainable"},{"name":"live","description":"Can it deadlock? Can entities overflow? isStructurallyLive means every siphon contains a trap — no structural deadlock possible. uncoveredSiphons are entity gro"},{"name":"reachable","description":"Can X reach Y? Follows directed data flow first; falls back to undirected. `from` and `to` accept entity names or action names (resolved against the program). P"},{"name":"equivalent","description":"Are two systems the same, or what changes if I change this one? Compare mode (source_a + source_b): structural differences, edit distance, spectral equivalence."},{"name":"compose","description":"How do parts combine, or how does a part stand alone? Merge mode (source_a + source_b + links): declare which entities in A are the same as entities in B; the c"},{"name":"render","description":"SVG or PNG diagram. Only call when user explicitly asks to visualize. The rendered image is delivered to the user, not injected into the model's context. See th"}],"toolCount":7,"toolsHash":"e4502c9407c8a4ae00fd8584395e00503bbf0b624eccc0f697edb7388cf0a932","serverName":"endiagram","capabilities":["tools"],"serverVersion":"0.2.1","protocolVersion":"2025-03-26"}},{"at":"2026-09-25T20:30:20.791Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":222,"error":null,"detail":{"tools":[{"name":"structure","description":"What is this system? Returns shape (Pipeline, Fork-Join, DAG, Star, Cycle, Tree, Complete, etc.), stages with roles, bridge nodes, cycles, parallelism, critical"},{"name":"invariant","description":"What's always true — automatic findings and on-demand checks. Automatic outputs: conservationLaws (weighted entity sums constant across executions), sustainable"},{"name":"live","description":"Can it deadlock? Can entities overflow? isStructurallyLive means every siphon contains a trap — no structural deadlock possible. uncoveredSiphons are entity gro"},{"name":"reachable","description":"Can X reach Y? Follows directed data flow first; falls back to undirected. `from` and `to` accept entity names or action names (resolved against the program). P"},{"name":"equivalent","description":"Are two systems the same, or what changes if I change this one? Compare mode (source_a + source_b): structural differences, edit distance, spectral equivalence."},{"name":"compose","description":"How do parts combine, or how does a part stand alone? Merge mode (source_a + source_b + links): declare which entities in A are the same as entities in B; the c"},{"name":"render","description":"SVG or PNG diagram. Only call when user explicitly asks to visualize. The rendered image is delivered to the user, not injected into the model's context. See th"}],"toolCount":7,"toolsHash":"e4502c9407c8a4ae00fd8584395e00503bbf0b624eccc0f697edb7388cf0a932","serverName":"endiagram","capabilities":["tools"],"serverVersion":"0.2.1","protocolVersion":"2025-03-26"}},{"at":"2026-09-25T14:32:22.260Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":250,"error":null,"detail":{"tools":[{"name":"structure","description":"What is this system? Returns shape (Pipeline, Fork-Join, DAG, Star, Cycle, Tree, Complete, etc.), stages with roles, bridge nodes, cycles, parallelism, critical"},{"name":"invariant","description":"What's always true — automatic findings and on-demand checks. Automatic outputs: conservationLaws (weighted entity sums constant across executions), sustainable"},{"name":"live","description":"Can it deadlock? Can entities overflow? isStructurallyLive means every siphon contains a trap — no structural deadlock possible. uncoveredSiphons are entity gro"},{"name":"reachable","description":"Can X reach Y? Follows directed data flow first; falls back to undirected. `from` and `to` accept entity names or action names (resolved against the program). P"},{"name":"equivalent","description":"Are two systems the same, or what changes if I change this one? Compare mode (source_a + source_b): structural differences, edit distance, spectral equivalence."},{"name":"compose","description":"How do parts combine, or how does a part stand alone? Merge mode (source_a + source_b + links): declare which entities in A are the same as entities in B; the c"},{"name":"render","description":"SVG or PNG diagram. Only call when user explicitly asks to visualize. The rendered image is delivered to the user, not injected into the model's context. See th"}],"toolCount":7,"toolsHash":"e4502c9407c8a4ae00fd8584395e00503bbf0b624eccc0f697edb7388cf0a932","serverName":"endiagram","capabilities":["tools"],"serverVersion":"0.2.1","protocolVersion":"2025-03-26"}},{"at":"2026-09-25T08:32:41.083Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":172,"error":null,"detail":{"tools":[{"name":"structure","description":"What is this system? Returns shape (Pipeline, Fork-Join, DAG, Star, Cycle, Tree, Complete, etc.), stages with roles, bridge nodes, cycles, parallelism, critical"},{"name":"invariant","description":"What's always true — automatic findings and on-demand checks. Automatic outputs: conservationLaws (weighted entity sums constant across executions), sustainable"},{"name":"live","description":"Can it deadlock? Can entities overflow? isStructurallyLive means every siphon contains a trap — no structural deadlock possible. uncoveredSiphons are entity gro"},{"name":"reachable","description":"Can X reach Y? Follows directed data flow first; falls back to undirected. `from` and `to` accept entity names or action names (resolved against the program). P"},{"name":"equivalent","description":"Are two systems the same, or what changes if I change this one? Compare mode (source_a + source_b): structural differences, edit distance, spectral equivalence."},{"name":"compose","description":"How do parts combine, or how does a part stand alone? Merge mode (source_a + source_b + links): declare which entities in A are the same as entities in B; the c"},{"name":"render","description":"SVG or PNG diagram. Only call when user explicitly asks to visualize. The rendered image is delivered to the user, not injected into the model's context. See th"}],"toolCount":7,"toolsHash":"e4502c9407c8a4ae00fd8584395e00503bbf0b624eccc0f697edb7388cf0a932","serverName":"endiagram","capabilities":["tools"],"serverVersion":"0.2.1","protocolVersion":"2025-03-26"}},{"at":"2026-09-25T02:28:59.658Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":165,"error":null,"detail":{"tools":[{"name":"structure","description":"What is this system? Returns shape (Pipeline, Fork-Join, DAG, Star, Cycle, Tree, Complete, etc.), stages with roles, bridge nodes, cycles, parallelism, critical"},{"name":"invariant","description":"What's always true — automatic findings and on-demand checks. Automatic outputs: conservationLaws (weighted entity sums constant across executions), sustainable"},{"name":"live","description":"Can it deadlock? Can entities overflow? isStructurallyLive means every siphon contains a trap — no structural deadlock possible. uncoveredSiphons are entity gro"},{"name":"reachable","description":"Can X reach Y? Follows directed data flow first; falls back to undirected. `from` and `to` accept entity names or action names (resolved against the program). P"},{"name":"equivalent","description":"Are two systems the same, or what changes if I change this one? Compare mode (source_a + source_b): structural differences, edit distance, spectral equivalence."},{"name":"compose","description":"How do parts combine, or how does a part stand alone? Merge mode (source_a + source_b + links): declare which entities in A are the same as entities in B; the c"},{"name":"render","description":"SVG or PNG diagram. Only call when user explicitly asks to visualize. The rendered image is delivered to the user, not injected into the model's context. See th"}],"toolCount":7,"toolsHash":"e4502c9407c8a4ae00fd8584395e00503bbf0b624eccc0f697edb7388cf0a932","serverName":"endiagram","capabilities":["tools"],"serverVersion":"0.2.1","protocolVersion":"2025-03-26"}}],"tools":[{"name":"structure","description":"What is this system? Returns shape (Pipeline, Fork-Join, DAG, Star, Cycle, Tree, Complete, etc.), stages with roles, bridge nodes, cycles, parallelism, critical"},{"name":"invariant","description":"What's always true — automatic findings and on-demand checks. Automatic outputs: conservationLaws (weighted entity sums constant across executions), sustainable"},{"name":"live","description":"Can it deadlock? Can entities overflow? isStructurallyLive means every siphon contains a trap — no structural deadlock possible. uncoveredSiphons are entity gro"},{"name":"reachable","description":"Can X reach Y? Follows directed data flow first; falls back to undirected. `from` and `to` accept entity names or action names (resolved against the program). P"},{"name":"equivalent","description":"Are two systems the same, or what changes if I change this one? Compare mode (source_a + source_b): structural differences, edit distance, spectral equivalence."},{"name":"compose","description":"How do parts combine, or how does a part stand alone? Merge mode (source_a + source_b + links): declare which entities in A are the same as entities in B; the c"},{"name":"render","description":"SVG or PNG diagram. Only call when user explicitly asks to visualize. The rendered image is delivered to the user, not injected into the model's context. See th"}],"package":{"name":"@endiagram/mcp","registry":"npm","observedAt":"2026-09-26T02:27:20.732Z","publishedAt":"2026-04-21T17:48:39.032Z","latestVersion":"0.3.16","weeklyDownloads":177},"toolSurface":{"id":"ts_u4pf4d7ahc4d","endpointId":"ep_2rj6zwy3g7m8","hash":"e4502c9407c8a4ae00fd8584395e00503bbf0b624eccc0f697edb7388cf0a932","toolCount":7,"serverName":"endiagram","serverVersion":"0.2.1","protocolVersion":"2025-03-26","firstSeenAt":"2026-09-12T12:25:51.824Z","lastSeenAt":"2026-09-26T02:26:15.568Z","observations":50,"toolNames":["structure","invariant","live","reachable","equivalent","compose","render"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_2rj6zwy3g7m8","url":"https://api.endiagram.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-09-30T03:21:12.192Z","auth":{"observedAt":"2026-09-30T03:21:12.401Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-09-30T03:21:12.413Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"endiagram.com","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-09-05T03:06:39.000Z","validTo":"2026-12-04T03:06:38.000Z","daysToExpiry":54,"sanCount":2,"fingerprint256":"96:F7:23:D9:AE:C1:43:0B:93:3F:88:7B:78:8F:15:1D:72:AD:79:83:5A:C3:2E:42:81:88:F4:47:20:C1:68:40"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"npm","key":"@endiagram/mcp","url":"https://www.npmjs.com/package/@endiagram/mcp","firstSeenAt":"2026-09-09T10:17:47.658Z","fetchedAt":"2026-09-15T16:18:09.540Z","normalizedAt":"2026-09-15T16:18:09.540Z"},{"source":"mcp_registry","key":"io.github.dushyant30suthar/endiagram-mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.dushyant30suthar%2Fendiagram-mcp","firstSeenAt":"2026-09-06T13:20:54.538Z","fetchedAt":"2026-10-07T10:33:06.419Z","normalizedAt":"2026-10-07T10:33:06.419Z"}]},"firstSeenAt":"2026-09-06T13:20:54.538Z","updatedAt":"2026-09-26T02:27:20.732Z"}