Zindex
Immutable agent diagrams: create, edit, validate and render versioned diagrams over MCP.
使うべきか
品質と安全性
検出事項(2)
- HIGH
- MEDIUMdiagram_edit 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"zindex": {
"url": "https://api.zindex.ai/mcp"
}
}
}リモートエンドポイント
https://api.zindex.ai/mcpstreamable-httpできること
ツール一覧
ツール(9)
🟢diagram_find(query, limit, cursor)
Lists this workspace's diagrams, latest change first, with id, key, title and latest revision. query matches the title, key or brief, ignoring case.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 200
},
"limit": {
"description": "Default 10",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"cursor": {
"description": "nextCursor from the previous page",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢diagram_get(id, revision, asOf, view, knownRevision, ...)
Reads a diagram by id or key. The default outline: a header (id, title, revision, time, hash), the brief, recent versions, one element per line nested by container, and edges as 'id: from -> to'. view 'dsp' returns the scene JSON, 'mermaid' Mermaid to edit and send back to diagram_edit. revision or asOf reads an earlier version; knownRevision, only what changed since; elements, only those elements and their neighbors. Another workspace's diagram answers NOT_FOUND.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The diagram's id or key"
},
"revision": {
"description": "Omit for the latest",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"asOf": {
"description": "2026-06-30 (end of day, UTC) or ISO 8601 with an offset",
"type": "string"
},
"view": {
"description": "Default outline",
"type": "string",
"enum": [
"outline",
"dsp",
"mermaid"
]
},
"knownRevision": {
"description": "A revision you already know",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"elements": {
"description": "Element ids to focus on",
"maxItems": 50,
"type": "array",
"items": {
"type": "string"
}
},
"cursor": {
"description": "nextCursor from the previous page",
"type": "string"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢diagram_validate(scene, mermaid)
Checks a DSP scene or Mermaid text without saving it. Returns ok, errors and warnings, each with a code, the element if any, and a one-line fix.
入力スキーマ
{
"type": "object",
"properties": {
"scene": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "https://zindex.ai/schemas/scene.schema.json"
},
"mermaid": {
"type": "string",
"maxLength": 65536,
"description": "erDiagram or flowchart (graph); drops subgraphs, edges to them and styles"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴diagram_create(scene, mermaid, key, brief, message)
Saves a new diagram from a DSP scene or Mermaid text; returns its id, revision 1, content hash and chain hash. key is your stable name for it, unique in the workspace: your repeat with the same key and content returns the existing diagram, not a copy. brief stores context for the next agent. Versions are kept until you delete the diagram or its workspace is deleted.
入力スキーマ
{
"type": "object",
"properties": {
"scene": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "https://zindex.ai/schemas/scene.schema.json"
},
"mermaid": {
"type": "string",
"maxLength": 65536,
"description": "erDiagram or flowchart (graph); drops subgraphs, edges to them and styles"
},
"key": {
"description": "e.g. payments-architecture",
"type": "string",
"maxLength": 128
},
"brief": {
"description": "What the diagram shows, conventions to keep, decisions made",
"type": "string",
"maxLength": 1000
},
"message": {
"description": "One line on why it was made",
"type": "string",
"maxLength": 500
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revision": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"hash": {
"type": "string"
},
"chain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"changed": {
"type": "object",
"properties": {
"added": {
"type": "array",
"items": {
"type": "string"
}
},
"updated": {
"type": "array",
"items": {
"type": "string"
}
},
"removed": {
"type": "array",
"items": {
"type": "string"
}
},
"more": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"added",
"updated",
"removed"
],
"additionalProperties": false
},
"warnings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"element": {
"type": "string"
},
"fix": {
"type": "string"
}
},
"required": [
"code",
"fix"
],
"additionalProperties": false
}
},
"created": {
"type": "boolean"
},
"noop": {
"type": "boolean"
},
"replayed": {
"type": "boolean"
}
},
"required": [
"id",
"revision",
"hash",
"chain",
"warnings"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡diagram_edit(id, baseRevision, message, ops, mermaid, ...)
Changes a saved diagram as a new revision; old ones stay. Give baseRevision (the revision you last read), a one-line message, and ops (typed operations, https://zindex.ai/schemas/ops.schema.json), mermaid (the whole diagram edited from view mermaid; only differences apply), restoreRevision (an earlier version back), or brief. An edit with an error saves nothing; one that changes nothing returns noop. requestId makes a retry return the first result. A conflict lists what changed.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The diagram's id or key"
},
"baseRevision": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "One line on what the edit does and why"
},
"ops": {
"maxItems": 500,
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"mermaid": {
"description": "The whole diagram as Mermaid; not with ops or restoreRevision",
"type": "string",
"maxLength": 65536
},
"restoreRevision": {
"description": "A revision number, or { asOf } for the version current at that instant",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
{
"type": "object",
"properties": {
"asOf": {
"type": "string"
}
},
"required": [
"asOf"
]
}
]
},
"brief": {
"description": "Replace the brief; null removes it",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"requestId": {
"description": "Your id for this edit, e.g. a UUID",
"type": "string",
"minLength": 1,
"maxLength": 255,
"pattern": "^[!-~]+$"
}
},
"required": [
"id",
"baseRevision",
"message"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revision": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"hash": {
"type": "string"
},
"chain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"changed": {
"type": "object",
"properties": {
"added": {
"type": "array",
"items": {
"type": "string"
}
},
"updated": {
"type": "array",
"items": {
"type": "string"
}
},
"removed": {
"type": "array",
"items": {
"type": "string"
}
},
"more": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"added",
"updated",
"removed"
],
"additionalProperties": false
},
"warnings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"element": {
"type": "string"
},
"fix": {
"type": "string"
}
},
"required": [
"code",
"fix"
],
"additionalProperties": false
}
},
"created": {
"type": "boolean"
},
"noop": {
"type": "boolean"
},
"replayed": {
"type": "boolean"
}
},
"required": [
"id",
"revision",
"hash",
"chain",
"warnings"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢diagram_render(id, revision, asOf, preview, scene, ...)
SVG and PNG links to a saved diagram's version, not the image, with hashes and engine version. A published diagram's links are permanent, with url for its page; others last 7 days. preview adds a PNG for you. scene or mermaid instead of id previews an unsaved diagram.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"description": "The diagram's id or key",
"type": "string"
},
"revision": {
"description": "Omit for the latest",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"asOf": {
"description": "2026-06-30 (end of day, UTC) or ISO 8601 with an offset",
"type": "string"
},
"preview": {
"type": "boolean"
},
"scene": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "https://zindex.ai/schemas/scene.schema.json"
},
"mermaid": {
"type": "string",
"maxLength": 65536,
"description": "erDiagram or flowchart (graph); drops subgraphs, edges to them and styles"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"revision": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"hash": {
"type": "string"
},
"chain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"engine": {
"type": "string"
},
"url": {
"type": "string"
},
"svg": {
"type": "string"
},
"png": {
"type": "string"
},
"expires": {
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢diagram_history(id, limit, cursor, compare)
Lists a diagram's versions, newest first, with time, who made it (by), client, message, chain hash and counts of elements added, changed and removed. compare (from and to: revision numbers or dates) returns what changed between two versions instead.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The diagram's id or key"
},
"limit": {
"description": "Default 10",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"cursor": {
"description": "nextCursor from the previous page",
"type": "string"
},
"compare": {
"type": "object",
"properties": {
"from": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
{
"type": "string"
}
]
},
"to": {
"description": "Default the latest",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
{
"type": "string"
}
]
}
},
"required": [
"from"
]
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴diagram_delete(id, undo, confirm)
Deletes a diagram with all its versions. undo restores it within 24 hours; after that it is gone. Asks the user to confirm.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The diagram's id or key"
},
"undo": {
"description": "Restore a deleted diagram",
"type": "boolean"
},
"confirm": {
"description": "Token from CONFIRMATION_REQUIRED",
"type": "string"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴diagram_share(id, action, problem, revision, anonymize, ...)
publish makes a diagram readable by anyone at its link; unpublish makes it private. link makes a share link showing its images, not its scene, to anyone who has it; unlink revokes them all. report sends one version to Zindex support. feedback sends Zindex staff a bug, docs (the docs and engine disagree), request or other; id or snippet attaches a diagram. Asks the user to confirm publish, link, report and feedback.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"description": "The diagram's id or key",
"type": "string"
},
"action": {
"type": "string",
"enum": [
"publish",
"unpublish",
"link",
"unlink",
"report",
"feedback"
]
},
"problem": {
"description": "For report: what is wrong, in one line",
"type": "string",
"maxLength": 500
},
"revision": {
"description": "For report or feedback; default the latest",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"anonymize": {
"description": "For report and feedback; default true",
"type": "boolean"
},
"kind": {
"type": "string",
"enum": [
"bug",
"docs",
"request",
"other"
]
},
"summary": {
"description": "For feedback, required: one line",
"type": "string",
"maxLength": 200
},
"expected": {
"type": "string",
"maxLength": 2000
},
"observed": {
"type": "string",
"maxLength": 2000
},
"confidence": {
"type": "string",
"enum": [
"seen",
"likely",
"unsure"
]
},
"snippet": {
"description": "A scene or Mermaid, 64 KB at most",
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {},
"additionalProperties": {}
}
]
},
"confirm": {
"description": "Token from CONFIRMATION_REQUIRED",
"type": "string"
}
},
"required": [
"action"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス